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 );
The only multiple resolution algorithm that I think will work with J3D is to
make the geometry which is very far away be part of the Background for the
image. For example, you could make the sun and stars be part of the Background
when rendering a satellite orbiting earth. See the javadoc for Background:
you'll need to tesselate the background geometry onto a unit sphere, apply it to
the Background using setGeometry() and then add the Background node to your
scene.
Doug Gehringer
Sun Microsystems
> From: Thomas Auinger <[EMAIL PROTECTED]>
>
> 1. Is it possible, to control Z-Buffer partitioning? Large universes
> demand either high-precision Z-Buffers or some sort of logic
> separation.
>
> 2. Is it possible to influence the rendering process and probably
> render multiple scenes into one frame? For example to render all
> very distant objects first, than a couple of closer ones etc.
>
>
> Why I would like to know all that:
>
> Apparently a Z-Buffer can only handle a certain depth without
> getting into trouble, since a Z-Buffer has a number of byte
> to store each pixel's depth.
>
> Problems arise, when trying to render a multi-resolutional
> universe like the solar-system:
> - The size and distance of the sun introduce an upper bound
> - The size of small objects like satellites introduce a lower bound
>
> As the range of possible Z values is bound with an upper
> and a lower bound, the Z-Buffer has to cope with high numbers
> and runs into precision errors.
>
> The result are uncorrect rendered objects, which sometimes
> let hidden objects shine through etc.
>
> Cheers, Thomas
>
> ===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff JAVA3D-INTEREST". For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".