|
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.
|
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.
References FALSE.
| SbMatrix SbViewVolume::getCameraSpaceMatrix | ( | ) | const |
|
inline |
Definition at line 1228 of file SbLinear.h.
References nearToFar.
|
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.
Referenced by getProjectionMatrix(), and getViewingMatrix().
| SbMatrix SbViewVolume::getMatrix | ( | ) | const |
|
inline |
Definition at line 1218 of file SbLinear.h.
References nearDist.
| SbPlane SbViewVolume::getPlane | ( | float | distFromEye | ) | const |
|
inline |
Definition at line 1215 of file SbLinear.h.
References projDir.
|
inline |
Definition at line 1076 of file SbLinear.h.
References getMatrices().
|
inline |
Definition at line 1212 of file SbLinear.h.
References projPoint.
|
inline |
Definition at line 1209 of file SbLinear.h.
References type.
| SbVec3f SbViewVolume::getSightPoint | ( | float | distFromEye | ) | const |
|
inline |
Definition at line 1073 of file SbLinear.h.
References getMatrices().
|
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.
References SbViewVolume().
| 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.
References SbViewVolume().
| 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.
References SbViewVolume().
| 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.
Referenced by getFarDist(), and getNearDist().
| float SbViewVolume::nearToFar |
Definition at line 1238 of file SbLinear.h.
Referenced by getDepth(), and getFarDist().
| SbVec3f SbViewVolume::projDir |
Definition at line 1236 of file SbLinear.h.
Referenced by getProjectionDirection().
| SbVec3f SbViewVolume::projPoint |
must be (0,0,0) for ortho
Definition at line 1235 of file SbLinear.h.
Referenced by getProjectionPoint().
| ProjectionType SbViewVolume::type |
Definition at line 1231 of file SbLinear.h.
Referenced by getProjectionType().
| SbVec3f SbViewVolume::ulf |
Definition at line 1241 of file SbLinear.h.