Open Inventor Reference
|
3D viewing volume class. More...
#include <Inventor/SbLinear.h>
Public Types | |
enum | ProjectionType { ORTHOGRAPHIC , PERSPECTIVE } |
Return projection information. More... | |
Public Member Functions | |
SbViewVolume () | |
Constructor and destructor. | |
~SbViewVolume () | |
Constructor and destructor. | |
void | getMatrices (SbMatrix &affine, SbMatrix &proj) const |
Returns two matrices corresponding to the view volume. | |
SbMatrix | getViewingMatrix () const |
Returns the affine viewing matrix. | |
SbMatrix | getProjectionMatrix () const |
Returns the projection matrix. | |
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 |
Maps a 2d point (in 0 <= x,y <= 1) to a 3d line. | |
void | projectPointToLine (const SbVec2f &pt, SbVec3f &line0, SbVec3f &line1) const |
SbLine | projectPointToLine (const SbVec2f &pt) 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). | |
SbVec3f | projectToScreen (const SbVec3f &src) const |
Maps the 3D point in world coordinates to a 2D point in normalized screen coordinates (0 <= x,y,z <= 1). | |
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 (bool 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. | |
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, this narrows the view to the given sub-rectangle of the near plane. | |
SbViewVolume | narrow (const SbBox3f &box) const |
Narrow a view volume by the given box. | |
void | ortho (float left, float right, float bottom, float top, float nearVal, float farVal) |
Sets up an orthographic view volume with the given sides. | |
void | perspective (float fovy, float aspect, float nearVal, float farVal) |
Sets up a perspective view volume with the given field of view and aspect ratio. | |
void | rotateCamera (const SbRotation &q) |
Rotate the camera view direction. | |
void | translateCamera (const SbVec3f &v) |
Translate the camera viewpoint. | |
SbVec3f | zVector () const |
Returns the positive z axis in eye space. | |
SbViewVolume | zNarrow (float nearVal, float farVal) const |
Returns a narrowed view volume which contains as tightly as possible the given interval on the z axis (in eye space). | |
void | scale (float factor) |
Scales width and height of view volume by given factor. | |
void | scaleWidth (float ratio) |
Scales view volume to be the given ratio of its current width, leaving the resulting view volume centered about the same point (in the near plane) as the current one. | |
void | scaleHeight (float ratio) |
Scales view volume to be the given ratio of its current height, leaving the resulting view volume centered about the same point (in the near plane) as the current one. | |
ProjectionType | getProjectionType () const |
Returns projection information. | |
const SbVec3f & | getProjectionPoint () const |
Returns projection information. | |
const SbVec3f & | getProjectionDirection () const |
Returns projection information. | |
float | getNearDist () const |
Returns distance from projection point to near plane. | |
float | getFarDist () const |
Returns distance from projection point to far plane. | |
float | getWidth () const |
Returns bounds of viewing frustum. | |
float | getHeight () const |
Returns bounds of viewing frustum. | |
float | getDepth () const |
Returns bounds of viewing frustum. | |
void | transform (const SbMatrix &matrix) |
Transforms the view volume by the given matrix. | |
bool | intersect (const SbVec3f &point) const |
Returns TRUE if view volume contains point. | |
bool | intersect (const SbVec3f &p0, const SbVec3f &p1, SbVec3f &closestPoint) const |
Returns TRUE if line segment between 2 points may intersect volume. | |
bool | intersect (const SbBox3f &box) const |
Returns TRUE if bounding box may intersect volume. | |
bool | outsideTest (const SbPlane &p, const SbVec3f &min, const SbVec3f &max) const |
Returns TRUE if the bounding box defined by min,max is totally outside plane p. | |
Public Attributes | |
ProjectionType | type |
SbVec3f | projPoint |
Note that there is redundant info in this data structure and its elements should not be changed by hand. | |
SbVec3f | projDir |
float | nearDist |
distance to near plane | |
float | nearToFar |
distance between z clips | |
SbVec3f | llf |
SbVec3f | lrf |
SbVec3f | ulf |
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.
Definition at line 1058 of file SbLinear.h.
Enumerator | |
---|---|
ORTHOGRAPHIC | |
PERSPECTIVE |
Definition at line 1203 of file SbLinear.h.
SbViewVolume::SbViewVolume | ( | ) |
|
inline |
Definition at line 1064 of file SbLinear.h.
SbRotation SbViewVolume::getAlignRotation | ( | bool | rightAngleOnly = FALSE | ) | const |
If rightAngleOnly
is TRUE, it will come as close as it can to this goal by using only 90 degree rotations.
SbMatrix SbViewVolume::getCameraSpaceMatrix | ( | ) | const |
|
inline |
Definition at line 1228 of file SbLinear.h.
|
inline |
Definition at line 1221 of file SbLinear.h.
|
inline |
Definition at line 1226 of file SbLinear.h.
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 SbViewVolume::getMatrix | ( | ) | const |
|
inline |
Definition at line 1218 of file SbLinear.h.
SbPlane SbViewVolume::getPlane | ( | float | distFromEye | ) | const |
|
inline |
Definition at line 1215 of file SbLinear.h.
|
inline |
Definition at line 1076 of file SbLinear.h.
|
inline |
Definition at line 1212 of file SbLinear.h.
|
inline |
Definition at line 1209 of file SbLinear.h.
SbVec3f SbViewVolume::getSightPoint | ( | float | distFromEye | ) | const |
|
inline |
Definition at line 1073 of file SbLinear.h.
|
inline |
Definition at line 1224 of file SbLinear.h.
float SbViewVolume::getWorldToScreenScale | ( | const SbVec3f & | worldCenter, |
float | normRadius | ||
) | const |
bool SbViewVolume::intersect | ( | const SbBox3f & | box | ) | const |
bool SbViewVolume::intersect | ( | const SbVec3f & | p0, |
const SbVec3f & | p1, | ||
SbVec3f & | closestPoint | ||
) | const |
Returns closest point on line to center ray of volume if intersection is found.
bool SbViewVolume::intersect | ( | const SbVec3f & | point | ) | const |
SbViewVolume SbViewVolume::narrow | ( | const SbBox3f & | box | ) | const |
The box must lie inside the unit cube, and the view will be shrunk according to the size of the box.
SbViewVolume SbViewVolume::narrow | ( | float | left, |
float | bottom, | ||
float | right, | ||
float | top | ||
) | const |
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.
void SbViewVolume::ortho | ( | float | left, |
float | right, | ||
float | bottom, | ||
float | top, | ||
float | nearVal, | ||
float | farVal | ||
) |
The parameters are the same as for the OpenGL glOrtho() routine.
bool SbViewVolume::outsideTest | ( | const SbPlane & | p, |
const SbVec3f & | min, | ||
const SbVec3f & | max | ||
) | const |
void SbViewVolume::perspective | ( | float | fovy, |
float | aspect, | ||
float | nearVal, | ||
float | farVal | ||
) |
The parameters are the same as for the OpenGL gluPerspective() routine, except that the field of view angle is specified in radians.
void SbViewVolume::projectPointToLine | ( | const SbVec2f & | pt, |
SbVec3f & | line0, | ||
SbVec3f & | line1 | ||
) | const |
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.
Definition at line 1109 of file SbLinear.h.
References projectToScreen().
Referenced by projectToScreen().
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.
void SbViewVolume::rotateCamera | ( | const SbRotation & | q | ) |
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 SbViewVolume::scale | ( | float | factor | ) |
void SbViewVolume::scaleHeight | ( | float | ratio | ) |
void SbViewVolume::scaleWidth | ( | float | ratio | ) |
void SbViewVolume::transform | ( | const SbMatrix & | matrix | ) |
NOTE: if the matrix performs a scale and a rotation, angles between the transformed projection direction and the sides of the view volume may not be preserved.
void SbViewVolume::translateCamera | ( | const SbVec3f & | v | ) |
Note that this accomplishes the reverse of doing an OpenGL glTranslate() command after defining a camera, which translates the scene viewed by the camera.
SbViewVolume SbViewVolume::zNarrow | ( | float | nearVal, |
float | farVal | ||
) | const |
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.
SbVec3f SbViewVolume::zVector | ( | ) | const |
In this coordinate system, the z value of the near plane should be GREATER than the z value of the far plane.
SbVec3f SbViewVolume::llf |
Definition at line 1239 of file SbLinear.h.
SbVec3f SbViewVolume::lrf |
Definition at line 1240 of file SbLinear.h.
float SbViewVolume::nearDist |
Definition at line 1237 of file SbLinear.h.
float SbViewVolume::nearToFar |
Definition at line 1238 of file SbLinear.h.
SbVec3f SbViewVolume::projDir |
Definition at line 1236 of file SbLinear.h.
SbVec3f SbViewVolume::projPoint |
must be (0,0,0) for ortho
Definition at line 1235 of file SbLinear.h.
ProjectionType SbViewVolume::type |
Definition at line 1231 of file SbLinear.h.
SbVec3f SbViewVolume::ulf |
Definition at line 1241 of file SbLinear.h.