Global and Eye Coordinate Systems
Global frame (Global axes of coordinates) is the unique universal system of coordinates with which the
real 3D space is modelled. Positions of objects and orientation of their local
frames are relative to the global frame.
Another important element is the
Viewing Plane. Viewing Plane represents plane of the computer screen. Objects in the space are
projected to the Viewing Plane thus creating a 2D image, which than mapped to the
pixels of the physical screen. The Viewing Plane should be imagined as an
infinite plane in 3D space parallel to the plane of computers screen.
In the default view configuration, presented on start, Viewing Plane contains origin of the global frame. So
normally it intersects with objects in the scene. It is not a problem as
rendering involves only mathematical processing of coordinates, where intersections do not matter.
The Viewing Plane has a standard system of coordinates associated with it.
Its x and y axes lie in the Viewing Plane. Its z axis is directed toward the
viewer. This system of coordinates is called Eye Frame (or Eye
Coordinate System). X axis of the Eye Frame is directed horizontally to the
right relative to the screen. Y axis is directed vertically up. Location of the
origin of the Eye Frame is changing constantly during viewing transformations.
Note that the Eye Frame term means only that its z axis is aligned with the
line of view. Origin of the frame is frequently located inside the model.
Orientation of the viewing frame changes when viewer performs
Viewing Transformations with the mouse in any 3D window. Because the image
observed on the screen is result of projection to the Viewing Plane, it appears
that the Viewing Plane is static but the global frame (and the model) is being rotated instead.
Experiment with Birds Eye view to see the above elements in action: Start any sample. Click
on the DGK window. Press v,b. Try rotate/pan/zoom in the main window of the sample and observe how
it affects the elements of the scene.
Programmatically
the viewing frame can be accessed and manipulated with the help of IFrame_DG
interface obtained on path: DG Kernel > GetView()
> IView_DG > GetEyeFrame()
> IFrame_DG. Coordinates of different attributes
obtained using the IFrame_DG are relative to the global axes.
Frequently it is convenient to (make appearance of) translate or rotate the global frame with
respect to the Eye frame. IFrame_DG, which allows that, can be obtained by executing Clone() >
Invert() on the IFrame_DG obtained above.
To change coordinates of a point or vector from global frame to Eye Frame obtain IFrame_DG
of the Eye Frame as described above and call IFrame_DG.ToLocal*().
To make the inverse conversion from Eye Frame coordinates to global coordinates use IFrame_DG.ToGlobal*().
IView_DG provides convenient shortcuts for point of view and zoom manipulation.
See also Viewing Interfaces,
Manipulation of point of view
|