SoAntiSquish(3IV)NAMESoAntiSquish (SoAntiSquish) - transformation node that undoes non-uniform
3D scales
INHERITS FROM
SoBase > SoFieldContainer > SoNode > SoTransformation > SoAntiSquishSYNOPSIS
#include <Inventor_c/nodes/SoAntiSquish.h>
enum SoAntiSquishSizing {
SO_ANTI_SQUISH_X fits the other two axes to match the X axis,
whose size is unchanged
SO_ANTI_SQUISH_Y fits the other two axes to match the Y axis,
whose size is unchanged
SO_ANTI_SQUISH_Z fits the other two axes to match the Z axis,
whose size is unchanged
SO_ANTI_SQUISH_AVERAGE_DIMENSION
uses average of 3 scales in the matrix
SO_ANTI_SQUISH_BIGGEST_DIMENSION
uses biggest of 3 scales in the matrix
SO_ANTI_SQUISH_SMALLEST_DIMENSION
uses smallest of 3 scales in the matrix
SO_ANTI_SQUISH_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
Functions from class SoAntiSquish:
SoAntiSquish * SoAntiSquishCreate()
SoType SoAntiSquishGetClassTypeId()
void SoAntiSquishRecalc(SoAntiSquish *this)
Functions from class SoNode:
void SoAntiSquishSetOverride(SoAntiSquish *this, SbBool
state)
SbBool SoAntiSquishIsOverride(const SoAntiSquish *this)
SoNode * SoAntiSquishCopy(const SoAntiSquish *this, SbBool
copyConnections = FALSE)
SbBool SoAntiSquishAffectsState(const SoAntiSquish *this)
SoNode * SoAntiSquishGetByName(const char *name)
int SoAntiSquishGetByNameList(const char *name,
SoNodeList *list)
Page 1SoAntiSquish(3IV)
Functions from class SoFieldContainer:
void SoAntiSquishSetToDflts(SoAntiSquish *this)
SbBool SoAntiSquishHasDfltVals(const SoAntiSquish *this)
SbBool SoAntiSquishFldsAreEq(const SoAntiSquish *this, const
SoFieldContainer *fc)
void SoAntiSquishCopyFieldVals(SoAntiSquish *this, const
SoFieldContainer *fc, SbBool copyConnections =
FALSE)
SbBool SoAntiSquishSet(SoAntiSquish *this, const char
*fieldDataString)
void SoAntiSquishGet(SoAntiSquish *this, SbString
*fieldDataString)
int SoAntiSquishGetFields(const SoAntiSquish *this,
SoFieldList *resultList)
SoField * SoAntiSquishGetField(const SoAntiSquish *this, const
char *fieldName)
SbBool SoAntiSquishGetFieldName(const SoAntiSquish *this,
const SoField *field, SbName *fieldName)
SbBool SoAntiSquishIsNotifyEnabled(const SoAntiSquish *this)
SbBool SoAntiSquishEnableNotify(SoAntiSquish *this, SbBool
flag)
Functions from class SoBase:
void SoAntiSquishRef(SoAntiSquish *this)
void SoAntiSquishUnref(const SoAntiSquish *this)
void SoAntiSquishUnrefNoDelete(const SoAntiSquish *this)
void SoAntiSquishTouch(SoAntiSquish *this)
SoType SoAntiSquishGetTypeId(const SoAntiSquish *this)
SbBool SoAntiSquishIsOfType(const SoAntiSquish *this, SoType
type)
void SoAntiSquishSetName(SoAntiSquish *this, const char
*name)
SbName SoAntiSquishGetName(const SoAntiSquish *this)
DESCRIPTION
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.
FIELDS
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.
Page 2SoAntiSquish(3IV)
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().
FUNCTIONSSoAntiSquish * SoAntiSquishCreate()
Creates an anti-squish node with default settings.
SoType SoAntiSquishGetClassTypeId()
Returns type identifier for this class.
void SoAntiSquishRecalc(SoAntiSquish *this)
Sets a flag so that the next time the node is traversed, it will
recalculate its unsquishing matrix.
ACTION BEHAVIOR
SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction,
SoGetMatrixAction, SoRayPickAction
Appends the current transformation with a new matrix to create an
unsquished result.
FILE FORMAT/DEFAULTS
AntiSquish {
sizing AVERAGE_DIMENSION
recalcAlways TRUE
}
SEE ALSO
SoCenterballDragger, SoJackDragger, SoTrackballDragger,
SoTransformerDragger, SoTransformation, SoTransformBoxDragger
Page 3