I got a chance to try the dynamic scenery last night (in lieu of
implementing the gear bounce/damp tuning for Dave Perry -- sorry).
Wow.  Simply stunning.  :)

Abject praise out of the way, here are the nits:

The cowbox is too small.  At only 1m high, it's really a more
appropiate size for a sheepcase.  Cows (at least the big north
american ones that match the texture) are 1.5-2m tall at the shoulder,
and often 3m long.  I doubled the size to 2x4, and found the results
more satifactory.  The slightly-too-large size is hidden by the
sparseness of the scenery.

At the other extreme the 8 story building, while scaled correctly, is
too large.  Buildings this large are very rare, and occur in large
numbers only in downtown areas that are better handled by "real"
static scenery.  I'd suggest replacing the "urban" scenery object with
something like a 2-3 story building, or perhaps a cluster of small
buildings.  Right now, you can look accross the bay from San Francisco
and see a huge urban skyline stretching from Oakland to Fremont which
isn't even close to what's there in real life.

My reading of the code is that there is a separate ssgTransform node
in front of every one of the objects.  That's likely to be a
performance bottleneck, if the OpenGL matrix state has to change every
four vertices (most GPUs want to flush the stream when the matrix
changes).

Instead, why not "pre-compile" the scenery objects for each tile into
a single vertex buffer at load time.  This is really easy -- step
through each object and add the appropriate offset to each model
vertex as you copy it into the vertex array(s).  Then you could draw
them all at once with no state changes whatsoever (and even get fancy
in the future with stuff like compiled vertex arrays,
NV_vertex_array_range and whatnot if you like).

Even better, you could get a very cheap "continuous LOD" by drawing a
distance-dependent prefix of this vertex buffer.  That is, draw only
the first N objects based on your distance from the tile centroid.
Writing a new ssgLeaf node type really isn't so hard -- take a look at
the fgPanelNode implementation for a minimalist example.

Andy

-- 
Andrew J. Ross                NextBus Information Systems
Senior Software Engineer      Emeryville, CA
[EMAIL PROTECTED]              http://www.nextbus.com
"Men go crazy in conflagrations.  They only get better one by one."
 - Sting (misquoted)


_______________________________________________
Flightgear-devel mailing list
[EMAIL PROTECTED]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel

Reply via email to