table of contents
SbViewVolume(3IV)() | SbViewVolume(3IV)() |
NAME¶
SbViewVolume — 3D viewing volume class
INHERITS FROM¶
SbViewVolume
SYNOPSIS¶
#include <Inventor/SbLinear.h>
enum ProjectionType {
SbViewVolume::ORTHOGRAPHIC Orthographic projection
SbViewVolume::PERSPECTIVE Perspective projection
}
Methods from class SbViewVolume:
SbViewVolume()
~SbViewVolume()
void getMatrices(SbMatrix &affine, SbMatrix
&proj) const
SbMatrix getMatrix() const
SbMatrix getCameraSpaceMatrix() const
void projectPointToLine(const SbVec2f &pt, SbLine
&line) const
void projectPointToLine(const SbVec2f &pt, SbVec3f
&line0, SbVec3f &line1) const
void projectToScreen(const SbVec3f &src, SbVec3f
&dst) const
SbPlane getPlane(float distFromEye) const
SbVec3f getSightPoint(float distFromEye) const
SbVec3f getPlanePoint(float distFromEye, const SbVec2f
&normPoint) const
SbRotation getAlignRotation(SbBool rightAngleOnly =
FALSE) const
float getWorldToScreenScale(const SbVec3f
&worldCenter, float normRadius) const
SbVec2f projectBox(const SbBox3f &box) const
SbViewVolume narrow(float left, float bottom, float
right, float top) const
SbViewVolume narrow(const SbBox3f &box) const
void ortho(float left, float right, float bottom,
float top, float near, float far)
void perspective(float fovy, float aspect, float near,
float far)
void rotateCamera(const SbRotation &q)
void translateCamera(const SbVec3f &v)
SbVec3f zVector() const
SbViewVolume zNarrow(float near, float far) const
void scale(float factor)
void scaleWidth(float ratio)
void scaleHeight(float ratio)
ProjectionType getProjectionType() const
const SbVec3f & getProjectionPoint() const
const SbVec3f & getProjectionDirection() const
float getNearDist() const
float getWidth() const
float getHeight() const
float getDepth() const
DESCRIPTION¶
Class used to represent a 3D viewing volume. This class is used to represent viewing frusta and picking volumes. For perspective projection, the view volume is a frustum. For orthographic (parallel) projection, the view volume is a rectangular prism.
METHODS¶
SbViewVolume()
~SbViewVolume()
Constructor and destructor.
void getMatrices(SbMatrix &affine, SbMatrix
&proj) const
Returns two matrices corresponding to the view volume. The first is a viewing
matrix, which is guaranteed to be an affine transformation. The second is
suitable for use as a projection matrix in OpenGL.
SbMatrix getMatrix() const
Like the method above, but returns the affine and projection parts together in
one matrix (i.e., affine.multRight( proj ) ).
SbMatrix getCameraSpaceMatrix() const
Returns a matrix that transforms the view volume into camera space: it
translates the view volume so the viewpoint is at the origin, and rotates it
so the view direction is along the negative z axis.
void projectPointToLine(const SbVec2f &pt, SbLine
&line) const
void projectPointToLine(const SbVec2f &pt, SbVec3f
&line0, SbVec3f &line1) const
Maps a 2D point (in 0 <= x,y <= 1) to a 3D line.
void projectToScreen(const SbVec3f &src, SbVec3f
&dst) const
Maps the 3D point in world coordinates to a 2D point in normalized screen
coordinates (0 <= x,y,z <= 1). The z-screen coordinate represents the
homogenized z coordinate which goes (nonlinearly) from 0 at the near
clipping plane to 1 at the far clipping plane.
SbPlane getPlane(float distFromEye) const
Returns a plane parallel to the near (or far) plane of the view volume at a
given distance from the projection point (eye).
SbVec3f getSightPoint(float distFromEye) const
Returns the point along the line of sight at the given distance from the
projection point (eye).
SbVec3f getPlanePoint(float distFromEye, const SbVec2f
&normPoint) const
Returns the projection of a given point in normalized screen coordinates (see
projectToScreen()) onto the plane parallel to the near plane that is
at distFromEye units from the eye.
SbRotation getAlignRotation(SbBool rightAngleOnly =
FALSE) const
Returns a rotation that would align a viewed object so that its positive
x-axis (of its object space) is to the right in the view and its positive
y-axis is up. If rightAngleOnly is TRUE, it will come as close as it
can to this goal by using only 90 degree rotations.
float getWorldToScreenScale(const SbVec3f
&worldCenter, float normRadius) const
Returns a scale factor that would scale a unit sphere centered at
worldCenter so that it would appear to have the given radius in
normalized screen coordinates when projected onto the near plane.
SbVec2f projectBox(const SbBox3f &box) const
Projects the given 3D bounding box onto the near plane and returns the size
(in normalized screen coordinates) of the rectangular region that encloses
it.
SbViewVolume narrow(float left, float bottom, float
right, float top) const
Given a view volume, narrows the view to the given sub-rectangle of the near
plane. The coordinates of the rectangle are between 0 and 1, where (0,0) is
the lower-left corner of the near plane and (1,1) is the upper-right
corner.
SbViewVolume narrow(const SbBox3f &box) const
Narrows a view volume by the given box. The box must lie inside the unit cube,
and the view will be shrunk according to the size of the box.
void ortho(float left, float right, float bottom,
float top, float near, float far)
Sets up an orthographic view volume with the given sides. The parameters are
the same as for the OpenGL glOrtho() routine.
void perspective(float fovy, float aspect, float near,
float far)
Sets up a perspective view volume with the given field of view and aspect
ratio. The parameters are the same as for the OpenGL gluPerspective()
routine, except that the field of view angle is specified in radians.
void rotateCamera(const SbRotation &q)
Rotate the camera view direction. Note that this accomplishes the reverse of
doing an OpenGL glRotate() command after defining a camera, which
rotates the scene viewed by the camera.
void translateCamera(const SbVec3f &v)
Translate the camera viewpoint. Note that this accomplishes the reverse of
doing an OpenGL glTranslate() command after defining a camera, which
translates the scene viewed by the camera.
SbVec3f zVector() const
Returns the positive z axis in eye space. In this coordinate system, the z
value of the near plane should be GREATER than the z value of the far
plane.
SbViewVolume zNarrow(float near, float far) const
Returns a narrowed view volume which contains as tightly as possible the given
interval on the z axis (in eye space). The returned view volume will never
be larger than the current volume, however. near and far are
given in terms of zVector(): this means that near >
far must hold.
void scale(float factor)
Scales width and height of view volume by given factor.
void scaleWidth(float ratio)
void scaleHeight(float ratio)
Scales view volume to be the given ratio of its current width or height,
leaving the resulting view volume centered about the same point (in the near
plane) as the current one.
ProjectionType getProjectionType() const
const SbVec3f & getProjectionPoint() const
const SbVec3f & getProjectionDirection() const
Returns projection information.
float getNearDist() const
Returns distance from projection point to near plane.
float getWidth() const
float getHeight() const
float getDepth() const
Returns bounds of viewing frustum.
SEE ALSO¶
SbVec3f, SbVec2f, SbBox3f, SbMatrix, SbRotation