> Date:         Fri, 21 Jan 2005 22:48:41 +0800
> From: NUMI Visitor NMIV22 <[EMAIL PROTECTED]>
>
> We use a crystaleyes active stereo glasses to view the stereo
> images. Wearing the glasses I notice that whenever I shift my physical
> head either in the -X the map or the entire stereo image warps or
> shifts in the +X direction vice versa. Has anyone encountered such
> problems before? If you did how did you overcome the problem?

Are you using head-tracking hardware?

If not, then your observations are completely normal.  Static
stereographic pairs are only valid from *one* point of view.  This is
true of any non-head tracked stereo viewing system which uses stereo
pairs as opposed to holographic or volumetric rendering systems.

In order to get correct stereo pairs from all points of view, you have
to have some way of telling the renderer where your eyeballs are with
each frame and every movement of your head, so that the renderer can
compute the projection matrices which correspond to your current
position.  That's where head-tracking hardware comes in.

In the absence of such facilities, the renderer has to generate the
projection matrices from a nominal head/eye position.

If you've used the view model defaults as supplied by Java 3D, then that
nominal position is with your nose centered in the display canvas
(actually the midpoint of the line going between your pupils).  The
standard defaults are for an interpupilary distance of 6cm.  You should
view the image at the physical Z distance you specified for the physical
eye; normally, this is computed to subtend an angle of 90 degrees with
the edges of the image canvas (via the RELATIVE_TO_FIELD_OF_VIEW
eyepoint policy).

In a non-stereo viewing situation the actual position of your head is
not so important; we're used to seeing flat projections of 3D objects
from oblique angles and compensating for the distortions (nobody is
particularly bothered by looking at a flat photograph of a building from
an oblique angle).  But in stereo the effect of oblique projections is
very pronounced.

Still, the distortions you're reporting seem pretty extreme, and are
probably due to the non-standard view model settings you're using.  Try
using an interpupilary distance that actually corresponds to reality,
and scale/position your model so that it fits in the actual physical
view frustum formed by your center eye position and the edges of the
image canvas.

If you want to see the normal sort of stereo image distortions you can
expect with the standard view settings, just run any of the Java 3D
example programs (shipped with the SDK) in stereo mode.  Try running
ObjLoad with the galleon.obj file and setting the Java runtime parameter
for stereo on the command line:

java -Dj3d.stereo=PREFERRED ObjLoad.obj

Some framebuffers only have one Z buffer and share this between the left
and right eyes.  If you are experiencing problems using stereo try the
following property:

java -Dj3d.stereo=PREFERRED -Dj3d.sharedstereozbuffer=true ObjLoad.obj

For more information and a semi-tutorial on the Java 3D view model, read
the source code to com.sun.j3d.utils.universe.ViewInfo.

Hope that helps,

Mark Hood

===========================================================================
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".

Reply via email to