logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

SoGetBoundingBoxAction — computes bounding box of a scene

Description

       This  class is used to compute a 3D bounding box enclosing objects defined by a scene graph. The box is a
       rectangular prism. The action also computes the center point, which is defined differently for  different
       objects.  (For  example,  the  center of an SoFaceSet is the average of its vertices' coordinates.) For a
       group, the center point is defined as the average of the centers of all shapes in it.

       Each bounding box is calculated as a SbXfBox3f, where the transformation matrix is defined  so  that  the
       bounding  box can be stored in the object space of the SoShape. When two bounding boxes are combined by a
       group node, the combination is performed so as to produce the smaller untransformed box.  The  result  of
       the calculation by the action can be returned as an SbXfBox3f or as a world-space-aligned SbBox3f.

       To  calculate  the bounding box of a subgraph bounded by two paths, specify the left edge of the subgraph
       with setResetPath(), and apply the action to the path that defines the right edge of  the  subgraph.  The
       accumulated bounding box and transformation will be reset when the tail of the reset path is traversed.

       If  the  subgraph  being  traversed  does not contain any shapes, the returned bounding box will be empty
       (that is, box.isEmpty() will return TRUE).

Inherits From

       SoAction > SoGetBoundingBoxAction

Methods

SoGetBoundingBoxAction(constSbViewportRegion&viewportRegion)
          Constructor takes viewport region to use for picking. Even though the bounding box computation may not
          involve a window per se, some nodes need this information to determine their size and placement.

     voidsetViewportRegion(constSbViewportRegion&newRegion)constSbViewportRegion&getViewportRegion()const
          Sets/returns current viewport region to use for action.

     SbBox3fgetBoundingBox()const
          Returns computed bounding box in world space.

     SbXfBox3f&getXfBoundingBox()
          Returns computed bounding box before transformation into world space.

     constSbVec3f&getCenter()const
          Returns computed center point in world space.

     voidsetInCameraSpace(SbBoolflag)
          Set this flag to TRUE if you want the returned bounding box to be in the space of whatever  camera  is
          in  the graph. Camera space is defined to have the viewpoint at the origin, with the direction of view
          along the negative z axis. This space can be used to determine distances of objects from the camera.

     SbBoolisInCameraSpace()const
          Returns camera space flag.

     voidsetResetPath(constSoPath*path,SbBoolresetBefore=TRUE,ResetTypewhat=ALL)
          If a non-NULL path is specified, the action will reset the computed bounding box to  be  empty  and/or
          the  current  transformation  to identity. The resetBefore flag indicates whether to perform the reset
          before or after the tail node of the path is traversed.

     constSoPath*getResetPath()const
          Returns the current reset path, or NULL.

     SbBoolisResetPath()const
          Returns TRUE if the current reset path is not NULL.

     SbBoolisResetBefore()const
          Returns TRUE if the resetBefore flag was specified for the reset path.

     SoGetBoundingBoxAction::ResetTypegetWhatReset()const
          Returns what flags were specified to be reset for the reset path.

Name

       SoGetBoundingBoxAction — computes bounding box of a scene

See Also

SbBox3f,SbXfBox3f,SoGetMatrixActionSoGetBoundingBoxAction(3IV)()

Synopsis

#include<Inventor/actions/SoGetBoundingBoxAction.h>enumResetType{SoGetBoundingBoxAction::TRANSFORM
                                       Transformation
          SoGetBoundingBoxAction::BBOX Bounding Box
          SoGetBoundingBoxAction::ALL  Both Transform and Bounding Box
     }

          Methods from class SoGetBoundingBoxAction:

                               SoGetBoundingBoxAction(constSbViewportRegion&viewportRegion)voidsetViewportRegion(constSbViewportRegion&newRegion)constSbViewportRegion&getViewportRegion()constSbBox3fgetBoundingBox()constSbXfBox3f&getXfBoundingBox()constSbVec3f&getCenter()constvoidsetInCameraSpace(SbBoolflag)SbBoolisInCameraSpace()constvoidsetResetPath(constSoPath*path,SbBoolresetBefore=TRUE,ResetTypewhat=ALL)constSoPath*getResetPath()constSbBoolisResetPath()constSbBoolisResetBefore()constSoGetBoundingBoxAction::ResetTypegetWhatReset()const

          Methods from class SoAction:

     virtualvoidapply(SoNode*node)virtualvoidapply(SoPath*path)virtualvoidapply(constSoPathList&pathList,SbBoolobeysRules=FALSE)staticSoTypegetClassTypeId()virtualSoTypegetTypeId()virtualSbBoolisOfType(SoTypetype)virtualvoidinvalidateState()

See Also