SbViewVolume(3IV)

SbViewVolume - 3D viewing volume class

As shipped in IRIX 6.5.30. Added in IRIX 6.5.22.

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.


FILE FORMAT/DEFAULTS
     ViewVolume {
     }

SEE ALSO
     SbVec3f, SbVec2f, SbBox3f, SbMatrix, SbRotation