Re: stereoscopic CAVE rendering in Performer

New Message Reply Date view Thread view Subject view Author view

Don Burns (don_burns++at++peru.engr.sgi.com)
Thu, 16 Sep 1999 11:46:05 -0700 (PDT)


Angus,

We are saying the same thing. Look closely and experiment and you will see
that that is so.

A post translation of a perspective matrix shears the viewing frustum, which is
exactly the goal. The respective fields of view change along with the
post-translation.

-don

On Sep 16, 11:42am, Angus Dorbie wrote:
> Subject: Re: stereoscopic CAVE rendering in Performer
> 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/
>-- End of excerpt from Angus Dorbie


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:46:07 PDT

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