Hello everyone,

I am seeking some advice on the best way to implement a particular task using 
OSG. Hopefully I can articulate what I'd like to do in a way that makes 
sense--please do not hesitate to ask if I need to clarify.

Essentially, I'd like to use OSG to render a large grid which is basically a 
heightfield representing a terrain. Each square of the grid will represent a 
fairy large amount of area, about 5000 m^2 per grid square, and I envision 
having a large number of these grid squares--on the order of a couple hundred 
thousand. I'd like to be able to assign a unique state consisting of one or 
more textures to each grid square. For instance, one grid square may have a 
water texture, another square a grass texture, another a road segment, etc. My 
camera will almost always be just above the terrain, similar to what the 
DriveManipulator accomplishes. I do not foresee having to 'fly' high above the 
terrain; I don't know if that allows for some sort of optimization.

I've tried creating my own geometry objects, one per grid square, which allows 
me to set a unique StateSet per square. Performance scales poorly with total 
number of grid squares added, as one might expect. I thought OSG would cull the 
grid squares that were out out the viewport, but I suppose traversing all those 
geometries is CPU-intensive. That said, I did add all my objects to the root of 
the scene; I did not try grouping them hierarchically in any way (for instance, 
breaking down the grid into quadrants, then breaking those quadrants into four, 
etc.) If I built up a tree in this manner using osg::Groups, would OSG know to 
cull the entire group if its bounding box were outside the viewport, or does it 
just iterate over all the children each time? Is there a facility I should look 
into that can accomplish this?

My application sounds like a perfect fix for osgTerrain and its constituent 
classes, but my understanding (which may be incorrect) from reading 
osgTerrainTile is that while it can be assigned an elevation layer with many 
rows and columns, a colour layer for a texture will cover the entire tile. If I 
were to use osgTerrainTile, I'd be creating tiles with one row and column (one 
height value), and setting layers for my textures. This basically sounds like 
my existing solution and seems like an abuse (or horrible misuse? underuse?) of 
the terrain facilities, and again I'm concerned about performance.

Are there any techniques that I should look into to ensure a performant 
application? I'll admit that this is not my area of expertise. I appreciate any 
pointers in the right direction.

Best regards,
John

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=65071#65071





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to