Re: stereoscopic CAVE rendering in Performer

New Message Reply Date view Thread view Subject view Author view

Angus Dorbie (dorbie++at++sgi.com)
Thu, 16 Sep 1999 11:42:01 -0700


Don, I'm not sure I agree with this.

This is a very nonlinear thing and you can't just translate the screen
then compute.

Infact the way to go is not to use a fixed fov, since that will change
as the eye moves.

Instead you simply plug the screen dimensions w.r.t. the eye into the
frustum scaled by the near clip and distance to screen.

ie use 'real world' coordinates.

So if the middle of the room is nominally 0,0 and the wall therefore is
from say -2.0m to 2.0m and is 2.0m away from the center (ie a 4 m screen
subtending 90 degrees) and say the viewer has walked to 1.0, 0.5 in this
room. The distance to screen is 1.5m. The relative position of left and
right is -2.0-1.0 = 3.0 and 2.0-1.0 = 1.0, You divide by distance to
screen to give left = 2.0, right = 0.6667 at a nominal near clip of
zero. You then scale it all be whatever your near clip value should be.

Same thing applies along the vertical axis, no point in going over that.

Stereo is accomplished by computing what the each frustum is for the
different eye positions. There should be a correlating change in the
respective view matrices to track the eye positions, not the room
center.

Cheers,Angus.

Don Burns wrote:
>
> In-Reply-To: "Yohan Baillot" <baillot++at++ait.nrl.navy.mil>
> "stereoscopic CAVE rendering in Performer" (Sep 16, 12:13pm)
> X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
>
> On Sep 16, 12:13pm, Yohan Baillot wrote:
> > Subject: stereoscopic CAVE rendering in Performer
> > Hello pfPeople,
> >
> > We were thinking about the special case of rendering where the viewpoint
> > is not fixed with respect to the projection screen. In the case of the CAVE,
> > not only the projection axis may be not centered on the middle of the
> > projection
> > screen but the viewving direction is also not perpendicular to each
> > projection screen.
> > The use of pfMakeFrustrum allows to off axis projection but consider the
> > user is
> > looking perpendicularly to the screen. In a general case I case I would need
> > to
> > specify the four corners'coordinates of my projection screen in eye
> > coordinates.
> > Is there such capabilities in Performer. If not, it is certainly possible to
> > generate the
> > projection Matrix given four coordinates of a projection screen to built a
> > frustrum.
> > Anybody knowns about some work done on that?
> >
> > Thanks
> >
> > Yohan
> >-- End of excerpt from Yohan Baillot
>
> Yohan,
>
> Actually, specifying the four corners of your projection screen is not really
> what you want to do. The simplest way to do this is to do a post-translation
> of the projection matrix, but this messes Performer up in that no Frustum is
> defined, and thus, Cull gets confused.
>
> So the next method is to find what is the left, right, bottom and top of your
> viewing frustum in the following way:
>
> near = the distance from the plane defined by your projection screen.
> hfov = horizontal field of view
> vfov = vertical field of view
> width = 2 * near * tan(hfov)
> height = 2 * near * tan(vfov)
>
> Now, picture that the projection screen is directly in front and perpendicular
> to the eyepoint. Now move it along its plane until it is positioned with the
> desired viewing angle.
>
> m = number of full screen widths you have moved the screen
> n = number of full screen heights you have moved the screen
>
> So, if the screen moved one full screen width to the left, m = -1. If it moved
> half a width, m = -0.5 and so forth.
>
> Here's the magic formula:
>
> left = width * (-0.5 + m)
> right = width * ( 0.5 + m)
> bottom = height * (-0.5 + n)
> top = height * (-0.5 + n)
>
> -don
>
> -----------------------------------------------------------------------
> List Archives, FAQ, FTP: http://www.sgi.com/software/performer/
> Submissions: info-performer++at++sgi.com
> Admin. requests: info-performer-request++at++sgi.com

-- 
"One of the best-known folk theorems of software engineering is that
60% to 75% of conventional software projects are either never
completed or rejected by their intended users. If that range is
anywhere near true (and I've never met a manager of any experience
who disputes it) then more projects than not are being aimed at goals
which are either (a) not realistically attainable, or (b) just plain
wrong."
                 Eric S. Raymond - The Cathedral and The Bazaar

For advanced 3D graphics Performer + OpenGL based examples and tutors: http://www.dorbie.com/


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Thu Sep 16 1999 - 11:42:04 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.