Hi,<br> I would like to retrieve the texture and normal coordinates of a loaded model. But not sure how to do it. My first attempt was to use a visitor to traverse the node, retrieve its Drawable objects, convert them to Geometry and finally extract texture coordinates but unfortunately, it doesn't work. <br> Here is a fully commented code snippet for your information.<br><br> <span style="font-weight: bold;"> class myVisitor : public osg::NodeVisitor</span><br style="font-weight: bold;"><span style="font-weight: bold;"> {</span><br style="font-weight: bold;"><span style="font-weight: bold;"> public: </span><br style="font-weight: bold;"><span style="font-weight: bold;">     myVisitor() : osg::NodeVisitor(TRAVERSE_ALL_CHILDREN){ } </span><br style="font-weight: bold;"><span style="font-weight: bold;">    void apply(osg::Geode& geode)</span><br style="font-weight: bold;"><span style="font-weight:
 bold;">       {</span><br style="font-weight: bold;"><span style="font-weight: bold;">          for (unsigned int i = 0; i < geode.getNumDrawables(); ++i)</span><br style="font-weight: bold;"><span style="font-weight: bold;">         {</span><br style="font-weight: bold;"><span style="font-weight: bold;">            osg::Drawable* draw = geode.getDrawable(i);</span><br>    <span style="font-style: italic;">//At this level, everything is ok since the Draw pointer contains at least one valid Drawable objects. If I use a TriangleFunctor, it will return all triangles of that Drawable :) </span><br> <br> <span style="font-style: italic;">// However I would like to get the texture coordinates as well. </span><br style="font-style: italic;"><span style="font-style: italic;"> //
 HERE IS THE ISSUE. </span><br>  <br>          <span style="font-weight: bold;">  const osg::Geometry* geometryd = dynamic_cast<const osg::Geometry*> (draw);</span><br>   <span style="font-style: italic;">// geometryd is dangling !!!</span><br>           <span style="font-weight: bold;"> if (geometryd)</span><br style="font-weight: bold;"><span style="font-weight: bold;">            const osg::Array* tc = geometryd->getTexCoordArray(0);</span><br style="font-weight: bold;"><span style="font-weight: bold;">         }</span><br>       <span style="font-weight: bold;">}</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;"> };</span><br style="font-weight: bold;"><span style="font-weight: bold;"> 
 osg::Node* myNode = osgDB::readNodeFile("my3DModel.3ds");</span><br style="font-weight: bold;"><span style="font-weight: bold;"> myVisitor visit;</span><br style="font-weight: bold;"><span style="font-weight: bold;">  myNode->accept (visit);</span><br> <span style="font-style: italic;">//Rest of the program irrelevant for this post. </span><br> <br>  Hopefully, I have clarified the matter further and can expect some help from you guys.<br> Kinds regards,<br> Franclin.<br><p>


      <hr size="1"> 
Envoyé avec <a href="http://us.rd.yahoo.com/mailuk/taglines/isp/control/*http://us.rd.yahoo.com/evt=52423/*http://fr.docs.yahoo.com/mail/overview/index.html">Yahoo! Mail</a>.<br>Une boite mail plus intelligente. </a>