SoSurroundScale Class Reference
[Transforms]

Transformation node that adjusts the current matrix so a default cube will surround other objects. More...

#include <Inventor/nodes/SoSurroundScale.h>

Inheritance diagram for SoSurroundScale:
SoTransformation SoNode SoFieldContainer SoBase SoRefCounter SoTypedObject

List of all members.

Classes

struct  MTstruct

Public Member Functions

virtual SoType getTypeId () const
 SoSurroundScale ()
void invalidate ()

Static Public Member Functions

static SoType getClassTypeId ()

Public Attributes

SoSFInt32 numNodesUpToContainer
SoSFInt32 numNodesUpToReset

Detailed Description

Transformation node that adjusts the current matrix so a default cube will surround other objects.

When traversed by an action, this node appends a transformation to the current transformation matrix so that a default size cube will surround the objects specified by its fields. Transform manipulators, such as SoHandleBoxManip, use these nodes to make themselves surround other objects.

This node only recalculates after the invalidate() method has been called. Otherwise it uses a saved scale and translation.

When calculating what to surround, the SoSurroundScale looks at the current path in the action and at its own field values. Then SoSurroundScale applies an SoGetBoundingBoxAction to the node that is numNodesUpToContainer nodes above it on the path. SoSurroundScale also tells the action to reset the bounding box upon traversal of the node located numNodesUpToReset nodes above it in the path. The SoSurroundScale then appends a translation and scale to the current transformation so that a default size SoCube will translate and scale to fit this bounding box.

For example, when an SoHandleBoxManip wants to surround the objects it is going to move, the scene graph will look something like this:

                      RootNode
            -------------------------
            |                       |
          handleBoxManip       movingStuff
            |
          handleBoxDragger
            |
          separator
          -----------------------------------
          |                 |               |
       motionMatrix    surroundScale     cubeGeom
     

The SoHandleBoxDragger wants to transform the cubeGeom so that it surrounds the movingStuff . So it sets the surroundScale fields to:

      numNodesUpToContainer = 4;
      numNodesUpToReset = 3;
     

The SoBoundingBoxAction will then be applied to RootNode , with a reset after traversing the SoHandleBoxManip. So the SoSurroundScale will surround the objects below separator , and to the right of handleBoxManip , producing the desired effect.

FILE FORMAT/DEFAULT

ACTION BEHAVIOR

SEE ALSO

SoTransformation, SoTransformManip, SoCenterballDragger, SoCenterballManip, SoHandleBoxDragger, SoHandleBoxManip, SoJackDragger, SoJackManip, SoTabBoxDragger, SoTabBoxManip, SoTrackballDragger, SoTrackballManip, SoTransformBoxDragger, SoTransformBoxManip


Constructor & Destructor Documentation

SoSurroundScale::SoSurroundScale (  ) 

Creates a surround scale node with default settings.


Member Function Documentation

static SoType SoSurroundScale::getClassTypeId (  )  [static]

Returns the type identifier for this class.

Reimplemented from SoTransformation.

virtual SoType SoSurroundScale::getTypeId (  )  const [virtual]

Returns the type identifier for this specific instance.

Reimplemented from SoTransformation.

void SoSurroundScale::invalidate (  ) 

If you call this, then next time an action is applied the node will re-calculate its cached translation and scale values.


Member Data Documentation

When traversed by an action, if surroundScale needs to calculate a new box, surroundScale looks at the current path in the action.

It travels up this path a distance of numNodesUpToContainer and applies an SoGetBoundingBoxAction to the node that it finds there.

Before applying the SoGetBoundingBoxAction (see the numNodesUpToContainer field above) the surroundScale node travels up the path a distance of numNodesUpToReset and tells the action to reset the bounding box upon traversal of that node.


The documentation for this class was generated from the following file:

Open Inventor Toolkit reference manual, generated on 15 Mar 2023
Copyright © Thermo Fisher Scientific All rights reserved.
http://www.openinventor.com/