Re: Ortho Cameras

Gavin Bell (gavin@krypton.engr.sgi.com)
Mon, 17 Oct 1994 16:22:36 -0700


I wrote:
> > (I've never used non-perpendicular projections,
And Linas responded:
> The standard demo is the split screen demo -- where scwartzenegger
> walks behind a screen and turns into a wire-frame stick figure.
> You draw the scene once with gouraud shaded polygons, then set
> up the camera, and again with wire-frame. (You also have to set
> up the clip planes as well).

OK, if needed we can add a viewplaneOrientation field to the cameras,
to change the default viewplaneOrientation (which is perpendicular to
the direction of view).

But I don't think that is necessary enough to add as a VRML 1.0
feature, especially since there are some nasty implementation issues
when you have 2 perspective projections going on; lighting comes
immediately to mind; to be fully general, you want may want two
lighting calculations to happen, one for the objects being X-rayed
(imagine the skeleton is a nice, lit model) which are then projected
onto the X-ray screen, and then once for the X-ray screen itself
(imagine specular highlights on the X-ray monitors...).

> What's the point of focal distance (in your model) ??
> What does it do?

If you're doing stereo, focalDistance specifies the plane of
convergence (objects closer than focalDistance appear to pop out of the
monitor, objects farther appear to be inside the monitor).

Viewers (our high-level components that move the camera around) use it
as a hint to figure out how fast to move the camera.

If we supported depth-of-field effects (we don't), it would be the
focal plane where objects weren't blurred.

>
> >With a focalDistance + screenHeight model, I would have to:
> >PerspectiveCamera {
> > position 10 10 10
> > focalDistance 100
> > screenHeight ???something???
> >}
> >... respecify the screenHeight every time I specified a new
> >focalDistance.
>
> Jeez. Play fair. What's wrong with "A reasonable (default)
> screen height"? Heck, I could claim that

My point is that you can't choose a reasonable default for
screenHeight. For example, if screenHeight 10 is the default value,
then this might look OK:

PerspectiveCamera {
focalDistance 10
screenHeight 10 # This is the default
}

... but if I then change my mind and do:
PerspectiveCamera {
focalDistance 20
screenHeight 10 # This is the default
}
... my scene looks radically different, because changing the
focalDistance and keeping the screenHeight the same changes the field
of view.