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:59:18 -0700


That is the first method which I wasn't considering but since it's on
the table, for the post translated projection matrix are z and the clip
planes well behaved when you have to translate in z, as you do for a
cave? I suspect not.

My concern was mainly for the second method you suggest. You are right
that it is the same, we basically start have the same approach. You just
begin with a fov before creating a frustum. You don't support
translations in z here, which is a simple extension but you need do
divide everything by the screen distance which begins to look exactly
the same as my suggestion. Starting with a nominal symmetric fov and
translating to a frustum which you then sheer just seems a bit redundant
and threw me.

Cheers,Angus.

Don Burns wrote:
>
> 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

-- 
"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:59:22 PDT

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