[osg-users] Getting texture coordinates of loaded models

Ulrich Hertlein u.hertlein at sandbox.de
Thu Jul 31 19:11:33 PDT 2008

Hi Franclin,

the code you're using looks correct.

I believe we can ignore ShapeDrawables for now as they're not part of this problem (but 
they are a problem onto itself apparently...)

What exactly is the error you're seeing?  Is it
a) 'geometryd' is 0 (what do you mean by 'dangling'? In my understanding it's a valid 
pointer i.e. !=0 but broken)
b) the texture coordinate pointer 'tc' is 0?
c) none of the above, please describe

Since you're loading a .3ds file I would assume you're actually getting a proper Geometry 
object (since the loader only creates Geometry and not ShapeDrawable or Text).

If it's b) then the Drawable you're looking at maybe doesn't have texture coordinates?  If 
the object is indeed textured (on screen) then maybe they are generated using TexGen?


Franclin Foping wrote:
>  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.
>             const osg::Geometry* geometryd = dynamic_cast<const 
> osg::Geometry*> (draw);
>    // geometryd is dangling !!!
>             if (geometryd)
>             const osg::Array* tc = geometryd->getTexCoordArray(0);
>          }
>        }
>  };
>   osg::Node* myNode = osgDB::readNodeFile("my3DModel.3ds");
>  myVisitor visit;
>   myNode->accept (visit);

More information about the osg-users mailing list