Provided by: inventor-doc_2.1.5-10-18_all bug


       SoCamera — abstract base class for camera nodes


       SoBase > SoFieldContainer > SoNode > SoCamera


       #include <Inventor/nodes/SoCamera.h>

       #define SO_ASPECT_SQUARE        1.00
       #define SO_ASPECT_VIDEO         1.333333333
       #define SO_ASPECT_35mm_ACADEMY  1.371
       #define SO_ASPECT_16mm          1.369
       #define SO_ASPECT_35mm_FULL     1.33333
       #define SO_ASPECT_70mm          2.287
       #define SO_ASPECT_CINEMASCOPE   2.35
       #define SO_ASPECT_HDTV          1.777777777
       #define SO_ASPECT_PANAVISION    2.361
       #define SO_ASPECT_35mm          1.5
       #define SO_ASPECT_VISTAVISION   2.301

     enum ViewportMapping {
                                   Crops  the  viewport  within  the  current window, so that the
                                        aspect ratio matches that of the camera.  As  the  window
                                        size  changes,  the  aspect  ratio remains unchanged. The
                                        cropped region is drawn as a filled gray area.
                                   Crops the viewport, but draws a thin frame around the viewport
                                   Crops the viewport, but gives no visual  feedback  as  to  the
                                        viewport dimensions within the window
          SoCamera::ADJUST_CAMERA  Adjusts  the  camera  aspect  ratio  and height to make it fit
                                        within the given window. (The  camera's  fields  are  not
                                        affected, just the values sent to the graphics library.)
          SoCamera::LEAVE_ALONE    Do   nothing.   Camera  image  may  become  stretched  out  of

          Fields from class SoCamera:

     SoSFEnum            viewportMapping
     SoSFVec3f           position
     SoSFRotation        orientation
     SoSFFloat           aspectRatio
     SoSFFloat           nearDistance
     SoSFFloat           farDistance
     SoSFFloat           focalDistance

          Methods from class SoCamera:

     void                  pointAt(const SbVec3f &targetPoint)
     virtual void          scaleHeight(float scaleFactor)
     virtual SbViewVolume  getViewVolume(float useAspectRatio = 0.0) const
     void                  viewAll(SoNode *sceneRoot,  const  SbViewportRegion  &vpRegion,  float
                                slack = 1.0)
     void                  viewAll(SoPath  *path, const SbViewportRegion &vpRegion, float slack =
     SbViewportRegion      getViewportBounds(const SbViewportRegion &region) const
     static SoType         getClassTypeId()

          Methods from class SoNode:

     void                setOverride(SbBool state)
     SbBool              isOverride() const
     SoNode *            copy(SbBool copyConnections = FALSE) const
     virtual SbBool      affectsState() const
     static SoNode *     getByName(const SbName &name)
     static int          getByName(const SbName &name, SoNodeList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const SoFieldContainer  *fc,  SbBool  copyConnections  =
     SbBool              set(const char *fieldDataString)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName) const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const


       This  is  the  abstract base class for all camera nodes. It defines the common methods and
       fields that all cameras have. Cameras  are  used  to  view  a  scene.  When  a  camera  is
       encountered  during  rendering,  it  sets the projection and viewing matrices and viewport
       appropriately; it does not draw geometry. Cameras should be placed before any shape  nodes
       or  light  nodes  in  a  scene graph; otherwise, those shapes or lights cannot be rendered
       properly. Cameras are affected by the current transformation, so you can position a camera
       by  placing  a transformation node before it in the scene graph . The default position and
       orientation of a camera is at (0,0,1) looking along the negative z-axis.

       You can also use a node kit to create a camera; see the reference page for SoCameraKit.


     SoSFEnum            viewportMapping
          Defines how to map the rendered image into the current viewport, when the aspect  ratio
          of the camera differs from that of the viewport.

     SoSFVec3f           position
          The location of the camera viewpoint.

     SoSFRotation        orientation
          The orientation of the camera viewpoint, defined as a rotation of the viewing direction
          from its default (0,0,-1) vector.

     SoSFFloat           aspectRatio
          The ratio of camera viewing width to height. This value must be greater than 0.0. There
          are several standard camera aspect ratios defined in SoCamera.h.

     SoSFFloat           nearDistance
     SoSFFloat           farDistance
          The distance from the camera viewpoint to the near and far clipping planes.

     SoSFFloat           focalDistance
          The distance from the viewpoint to the point of focus. This is typically ignored during
          rendering, but may be used by some viewers to define a point of interest.


     void                  pointAt(const SbVec3f &targetPoint)
          Sets the orientation of the camera so that it points  toward  the  given  target  point
          while keeping the "up" direction of the camera parallel to the positive y-axis. If this
          is not possible, it uses the positive z-axis as "up."

     virtual void          scaleHeight(float scaleFactor)
          Scales the height of the camera. Perspective cameras scale  their  heightAngle  fields,
          and orthographic cameras scale their height fields.

     virtual SbViewVolume  getViewVolume(float useAspectRatio = 0.0) const
          Returns  a  view  volume  structure,  based  on the camera's viewing parameters. If the
          useAspectRatio argument is not 0.0 (the default), the camera uses that ratio instead of
          the one it has.

     void                  viewAll(SoNode  *sceneRoot,  const  SbViewportRegion  &vpRegion, float
                                slack = 1.0)
     void                  viewAll(SoPath *path, const SbViewportRegion &vpRegion, float slack  =
          Sets  the  camera  to  view  the scene rooted by the given node or defined by the given
          path. The near and far clipping planes will be positioned slack bounding  sphere  radii
          away  from  the bounding box's center. A value of 1.0 will make the clipping planes the
          tightest around the bounding sphere.

     SbViewportRegion      getViewportBounds(const SbViewportRegion &region) const
          Returns the viewport region this camera would use to render  into  the  given  viewport
          region, accounting for cropping.

     static SoType         getClassTypeId()
          Returns type identifier for this class.


       This  is  an  abstract class. See the reference page of a derived class for the format and
       default values.


       SoOrthographicCamera, SoPerspectiveCamera, SoCameraKit