carta
SoAntiSquish(3iv)

SoAntiSquish3iv

Transformation node that undoes non-uniform 3d scales

Usage

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:

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

Inherits from

SoBase > SoFieldContainer > SoNode > SoTransformation > SoAntiSquish

Overview

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.

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().

Methods

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.

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
}

From inventor-doc 2.1.6+ds-2 in Debian 13 (Trixie). Parsed by carta from the page's man source.