Desiree,

As some may have said, if the range of coordinate values is very large then the z buffer tearing
can be noticeable because of insufficient floating point precision (as identified by Justin).
I.E. if two surfaces are overlapping and only 0.1 apart but your terrain models have coordinates
larger than, say, 1,000,000 then you could well see tearing.

There are two things you can try reduce the floating point precision problem (as identified by Justin)
if it results in z buffer tearing:

1) modify your clipping distances (as from the Sutras):
"
   2.Problems with z-buffer resolution are usually not really due to lack of resolution. Instead, the problem is usually that the front clip plane is being put too close to the eye, resulting in a loss of z-buffer resolution for objects  near the back clip plane.
     Try this:
     // Make sure that front and back clip planes are specified as a
     // virtual distance from the eye
     view.setFrontClipPolicy(View.VIRTUAL_EYE);
     view.setBackClipPolicy(View.VIRTUAL_EYE);
     double backClipDistance = <distance to furthest object in scene>
     view.setBackClipDistance( backClipDistance );
     // (back / front) must be < 3000 to avoid loosing z-buffer resolution.
     // The larger the number, the more the z-buffer space will be used
     // for objects in the front of the scene.  If you loose z-buffer
     // resolution for objects at the back of your scene, decrease this
     // number.  If your objects are getting front clipped, adjust both
     // the front and back clip distances to keep this ratio.
     view.setFrontClipDistance( backClipDistance / 600.0 );
     [Doug Gehringer, Sun Microsystems]
"
Note that Doug's statement that the problems are not normally due to lack of  'resolution' may be incorrect in this case - i.e. if it is a floating point precision problem this is tatamount to 'a lack of resolution'.

2) This *may* work: Minimize the geometry range (from 0 to largest (or 0 to largest/smallest when smallest is <1)).  NOTE: scaling down will not generally help if it means some values become <1).  For example, it could be that all your coordinate values are greater than 5000.  If you subtract 5000 from all values the range that has to be handled is less.
This sort of solution helps in VRML but may not directly translate to help with your Java3D/Gladiac platform.

I have a Gladiac GForce II, 32MB as well.  I will *try* to find time to test all this out
an give you a more precise answer but no guarantees - last I asked Chronos for more
time he just laughed and walked off!

Chris

----------------------------------------------------------------------------
----------------------------------------------------------------------------
This Email may contain confidential and/or privileged information and is
intended solely for the addressee(s) named. If you have received this
information in error, or are advised that you have been posted this Email by
accident, please notify the sender by return Email, do not redistribute it,
delete the Email and keep no copies.

Reply via email to