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.
