SoAntiSquish(3IV)() | SoAntiSquish(3IV)() |
SoAntiSquish — transformation node that undoes non-uniform 3D scales
SoBase > SoFieldContainer > SoNode > SoTransformation > SoAntiSquish
#include <Inventor/nodes/SoAntiSquish.h>
enum Sizing {
SoAntiSquish::X fits the other two axes to match the X axis, whose size
is unchanged
SoAntiSquish::Y fits the other two axes to match the Y axis, whose size
is unchanged
SoAntiSquish::Z fits the other two axes to match the Z axis, whose size
is unchanged
SoAntiSquish::AVERAGE_DIMENSION uses average of 3 scales in the matrix
SoAntiSquish::BIGGEST_DIMENSION uses biggest of 3 scales in the matrix
SoAntiSquish::SMALLEST_DIMENSION uses smallest of 3 scales in the
matrix
SoAntiSquish::LONGEST_DIAGONAL accounts for shearing; transforms a
cube by the matrix and then uses length of longest diagonal
}
Fields from class SoAntiSquish:
SoSFEnum sizing
SoSFBool recalcAlways
Methods from class SoAntiSquish:
SoAntiSquish()
static SoType getClassTypeId()
void recalc()
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 = FALSE)
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 node removes nonuniform 3D scaling from the current transformation matrix when traversed by an action. It is used by draggers such as the SoTrackballDragger that need to stay uniformly scaled no matter where they are located in the scene graph.
The magnitude of the new scale is determined by the current transformation matrix and the sizing field. This node does not change the translation or rotation in the matrix.
SoSFEnum sizing
Determines which of the algorithms enumerated by the type Sizing will
be used to select the new scale when the x,y, and z scales are not
equal.
SoSFBool recalcAlways
If recalcAlways is TRUE, this node calculates its unsquishing matrix
every time it is traversed. If FALSE, then this only occurs during
the first traversal folllowing a call to recalc().
SoAntiSquish()
Creates an anti-squish node with default settings.
static SoType getClassTypeId()
Returns type identifier for this class.
void recalc()
Sets a flag so that the next time the node is traversed, it will recalculate
its unsquishing matrix.
SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction,
SoGetMatrixAction, SoRayPickAction
Appends the current transformation with a new matrix to create an unsquished
result.
AntiSquish {
sizing AVERAGE_DIMENSION recalcAlways TRUE
}
SoCenterballDragger, SoJackDragger, SoTrackballDragger, SoTransformerDragger, SoTransformation, SoTransformBoxDragger