[osg-users] StateSet question

Aaron Andersen aaron at fosslib.net
Sat Aug 29 14:14:16 PDT 2015


Hello,

Consider if I have a mesh file constructed from 2 geometries: a cube, 
and a pyramid on top of the cube, representing a simple house. When I 
load this house it is pulled into OSG as a single Geode composed of 2 
Geometry instances.

I have 2 image files for this house: a brown brick house texture and a 
black shingle texture which can be applied to the 2 geometries of the 
house mesh. Now consider if I have 2 more textures: a dark grey vinyl 
siding texture, and a dark green metal roof texture. If I keep producing 
more image files you can imagine all the different possibilities I might 
have in constructing a home.

Now consider if I want to make a row of 25 houses:

osg::Group * rootOfScene = new osg::Group;

osg::Node * houseGeode = osgDB::readNodeFile("house-mesh.ext");

for (int i = 0; i < 25; i++)
{
     osg::PositionAttitudeTransform * transform = new 
osg::PositionAttitudeTransform;

     transform->setPosition(osg::Vec3d(i * 20.f, 0, 0));
     transform->addChild(houseGeode);

     rootOfScene->addChild(transform);
}

What is the most efficient way to apply these different texture sets so 
that I can have a row of houses, each with different textures being 
applied to the cube mesh and the pyramid mesh?

Any help is greatly appreciated.

Thank you,
Aaron



More information about the osg-users mailing list