[osg-users] Collect all the osg::Materials from a osg::Node using osg::NodeVisitor

Trajce Nikolov NICK trajce.nikolov.nick at gmail.com
Fri Aug 26 09:13:49 PDT 2016


Ok :-) .. I will answer it too .....

I am working with older version of osg where the Geometry was still not
inherited from Node so I had to apply a special case for Geodes ... Sorry
for the noise ;-)

Cheers!
Nick

On Fri, Aug 26, 2016 at 5:58 PM, Trajce Nikolov NICK <
trajce.nikolov.nick at gmail.com> wrote:

> Hi Community,
>
> this is really simple, but for a reason it is not working on my end. I
> have simple model with animation (a cube that scales over time). On load I
> launch a NodeVisitor to collect all the Materials. I can see one Material
> in the text file but the parser is not hitng it. Here is my Visitor code:
> Any clue? And thanks a bunch as always!
>
> struct MaterialFinderVisitor : public osg::NodeVisitor
> {
>     MaterialFinderVisitor()
>         : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
>     {
>     }
>
>     virtual void apply( osg::Node& node )
>     {
>         osg::StateAttribute* attr = node.getOrCreateStateSet()->
> getAttribute(osg::StateAttribute::MATERIAL);
>         if (attr)
>         {
>             std::cout << "ATTRIBUTE: " << attr->getName() << std::endl;
>
>             osg::Material* material = dynamic_cast<osg::Material*>(attr);
>             if (material && (material->getName() != "@RootMaterial@"))
>             {
>                 std::cout << "MATERIAL: " << material->getName() <<
> std::endl;
>             }
>         }
>         traverse(node);
>     }
>
>
> --
> trajce nikolov nick
>



-- 
trajce nikolov nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20160826/ea23fcc1/attachment-0003.htm>


More information about the osg-users mailing list