Error message

  • Deprecated function: Array and string offset access syntax with curly braces is deprecated in include_once() (line 20 of /home/drbiz/public/2013.realism.com/includes/file.phar.inc).
  • Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in drupal_get_feeds() (line 394 of /home/drbiz/public/2013.realism.com/includes/common.inc).

Perspective vs. Orthographic Cameras

This set of examples will use the first scene. It is real simple (in terms of elements), but it is sufficient to illustrate the projection issues. For the purposes of this discussion assume that the display screen is sufficiently large to show everything that is desired to be displayed. Also assume that the rendering software does not enlarge the displayed scene to fit the screen.

Scenes

Base Scene

Base scene for camera type examples

The initial scene is called initial.jpg. It shows a plane with a number of boxes. The figure to the bottom left is intended to be the viewer. These scenes are viewed from a 3rd person POV. This can be viewed in 3D. These scenes were created using XSeen. The links to the specific XSeen views are included in each section. Note that all images will enlarge.

Perspective Camera

Illustration of perspective camera type and field of view cone

The image called perspective.jpg (3D scene) shows the field of view from the viewing figure. Note that some of the boxes are outside of the FOV and would not be rendered. Zooming is accomplished by changing the angle of the cone. A small angle indicates a higher zoom. With perfect optics zooming in would be equivalent to moving the camera closer to the object; however, in a virtual (or real) world that may not be possible because of intervening features (water, barriers, etc.). Different parts of the scene can be viewed by changing the look direction (again without moving the camera in space).

Orthographic Camera

Illustration of orthographic camera type and field of view rectangle

The image called orthographic.jpg (3D scene) shows an orthographic projection onto a plane about 60% of the way from the center of the plane to the viewing figure. (Note: The image projected onto the viewing plane is just for representational purposes and is not an orthographic projection of the content.) The red rectangle outlined on the plane indicates the view display. The cone indicates the approximate view. In this case zooming in is accomplished by reducing the size of the rectangle. Different parts of the scene can be viewed by moving the rectangle around the viewing plane. Note that this is equivalent to moving the camera left/right/up/down. There is no perspective.

This Wikipedia article discusses orthographic projections using a viewing cube comprised of the rectangle plus the near and far clipping planes. In this example the near clipping plane is the display plane and the far clipping plane is set (effectively) at infinity.

 

How this applies to X3D

X3D overloads fieldOfView to be either the angle of the viewing cone for a perspective camera or the rectangle for an orthographic one. This is (in general) not good practice. It would be possible to use the existing fieldOfView as an angle plus the orientation and position fields to determine the effective viewing rectangle or create a new field that is only for the viewing box in an orthographic projection.

The disadvantage of using the fieldOfView (as an angle) and orientation fields is the existing viewing rectangle can specify a very non-regular rectangle (e.g., width >> height) that is not possible with the other two parameters. It would require a third parameter to specify the non-regular-ness of the viewing rectangle.

X3D makes a final change to the field of view that violates the initial assumption of only rendering content that is within the field of view. This change allows X3D to fit within the defined display space. The field of view of the in-scene camera is modified so that the entire viewable content fits into the smallest dimension of the display. This can cause substantially more content to be displayed in the other direction.

Reference: X3D Specification - Navigational Info