Micah Heyer wrote on Saturday, December 15, 2007 12:25 PM: > Hi every one, > This may be stupid n00b question but, how would you recommend > implementing a bsp tree in OSG?The three ways I thought of were: > > 1) use standard osg::Groups for each node and Geodes for leaf nodes. > > 2) subclass osg::Group for just the entire tree and instead of storing > nodes in a std::list store in a custom bsp structure in which leaf > nodes have a pointer to a geode. > > 3)subclass osg::Drawable and have it do all rendering independent of > osg. > > The first option would seem to me to have a lot of overhead for a bsp. > the second would be my preferred route,though I'm not sure I could > implement it in a very elegant fasion. > The third option would seem to reinvent the wheel but if that's the > only drawback then maybe thats ok I don't know. > Anyway I just thought I ask all you smart and experienced people out > there if you have any advice for me. > thanks, > Micah
You can probably implement (1) with the least amount of custom code, but it also requires some knowledge of how OSG actually handles rendering (RenderBins and the like). Basically, you can subclass osg::Group to create a SeparatingPlane Node that calls setBinNumber() on the StateSets of its 2 children. Based on the results of the plane test, the child closer to the eye should get bin number 0 and the farther child should get bin 1 (this gets more complicated if you've got transparent objects in addition to opaque objects, since transparent objects go in different RenderBins). That approach basically gets OSG to do a lot of the work for you, but your option (2) and (3) could work as well. Actually, (3) sound better than (2) because you wouldn't have to duplicate what the osgUtil::CullVisitor does with RenderLeafs, and it feels more natural since you're basically rendering what is a black box from OSG's perspective either way. -- Bryan Thrall FlightSafety International [EMAIL PROTECTED] _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org