[osg-users] Getting texture coordinates of loaded models
u.hertlein at sandbox.de
Thu Jul 31 19:11:33 PDT 2008
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