Re: Large FOV

New Message Reply Date view Thread view Subject view Author view

Angus Dorbie (dorbie++at++sgi.com)
Tue, 15 Jun 1999 08:29:37 -0700


Devrim Erdem wrote:
>
> Angus Dorbie wrote:
>
> > Devrim Erdem wrote:
> > >
> > > Hi,
> > >
> > > I have to determine the number of channels to draw a 130 degrees hor. FOV
> > > view. Is there a math model to compute the distortion caused by rendering
> > > large FOV to a channel ?
> >
> > There is no distortion for the correct display system. See my
> > presentation in the whitepapers section of the performer web pages.
> >
> > The image when displayed on a rectangular screen and viewed from the
> > correct vantage point will reproduce the virtual environment as oriented
> > with the modelview matrix.
>
> OK. These messages have been pretty explanative for me. So if I have a rectangular
> display which is 110x50 or sth like that and I render a channel that 110x50 degrees
> onto this display I shall not meet a major distortion. Is this right ?

In simple terms you are correct, provided your eye is in the correct
place and the screen is flat & rectangular.

BUT, actually degrees do not relate exactly to dimensions, it's a tan of
the half angle = half dimension divided by distance to the screen.

So assuming a symmetric frustum and 110 degrees by 50 degrees FOV we can
compute the screen dimensions if we know the viewer position. SO, let's
assume that the viewer is 3 meters from the screen. This means that the
screen needs to be 3*2*(tan(110/2)) by 3*2*(tan(50/2)) meters or 8.57m
by 2.80m. Obviously you can work the arithmetic the opposite way around
if you like to derive angles for a specific screen dimension.

If your viewer is off center from the screen then you should derive
angles independently for each half of an asymmetric frustum, which leads
into the next topic.

The irony is that the OpenGL interface for supplying a frustum doesn't
use these angles at all because it simply makes more sense to supply
window dimensions on the near clip. This means that you can forget FOV
completely and specify the projection matrix using direct ratios of the
measured display and viewer relationship, you never even have to convert
to degrees, just measure the display setup and pop the numbers into the
frustum, perhaps scaled by some amount. Look at glFrustum and pfFrustum.

Cheers,Angus.

-- 
"Microsoft's system was like a forest that hadn't had a controlled
 burn in decades, just waiting for one person with a match to turn
 it into a disaster. Melissa was Microsoft's fault. They left their
 system wide open to this sort of abuse, they knew it could happen
 and did nothing." -- Bruce Perens

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 Tue Jun 15 1999 - 08:29:41 PDT

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