Go to the first, previous, next, last section, table of contents.
A camera object specifies the following properties of a camera:
- position and orientation
-
specified by either a camera-to-world or world-to-camera transformation;
this transformation does not include the projection, so it's typically
just a combination of translation and rotation. Specified as a
transform object, typically a 4x4 matrix.
- "focus" distance
-
Intended to suggest a typical distance from the camera to the object of
interest; used for default camera positioning (the camera is placed at
(X,Y,Z) = (0,0,focus) when reset) and for adjusting field-of-view when
switching between perspective and orthographic views.
- window aspect ratio
-
True aspect ratio in the sense <Xsize>/<Ysize>. This normally should
agree with the aspect ratio of the camera's window. Geomview normally
adjusts the aspect ratio of its cameras to match their associated
windows.
- near and far clipping plane distances
-
Note that both must be strictly greater than zero. Very large
<far>/<near> distance ratios cause Z-buffering to behave badly; part of
an object may be visible even if somewhat more distant than another.
- field of view
-
Specified in either of two forms.
- `fov'
-
is the field of view -- in degrees if perspective, or linear
distance if orthographic -- in the shorter direction.
- `halfyfield'
-
is half the projected Y-axis field, in world coordinates (not angle!),
at unit distance from the camera. For a perspective camera, halfyfield
is related to angular field:
halfyfield = tan( Y_axis_angular_field / 2 )
while for an orthographic one it's simply:
halfyfield = Y_axis_linear_field / 2
This odd-seeming definition is (a) easy to calculate with and
(b) well-defined in both orthographic and perspective views.
The syntax for a camera is:
<camera> ::=
[ "camera" ] (optional keyword)
[ "{" ] (opening brace, generally required)
[ "define" <name> ]
"<" <filename>
|
":" <name>
|
(or any number of the following,
in any order...)
"perspective" {"0" | "1"} (default 1)
(otherwise orthographic)
"stereo" {"0" | "1"} (default 0)
(otherwise mono)
"worldtocam" <transform> (see transform syntax above)
"camtoworld" <transform>
(no point in specifying both
camtoworld and worldtocam; one is
constrained to be the inverse of the other)
"halfyfield" <half-linear-Y-field-at-unit-distance>
(default tan 40/2 degrees)
"fov" (angular field-of-view if perspective,
linear field-of-view otherwise.
Measured in whichever direction is smaller,
given the aspect ratio. When aspect ratio
changes -- e.g. when a window is reshaped --
"fov" is preserved.)
"frameaspect" <aspect-ratio> (X/Y) (default 1.333)
"near" <near-clipping-distance> (default 0.1)
"far" <far-clipping-distance> (default 10.0)
"focus" <focus-distance> (default 3.0)
[ "}" ] (matching closebrace)
Go to the first, previous, next, last section, table of contents.