SoTransform(3IV)

NAME
SoTransform — general 3D geometric transformation node

INHERITS FROM
SoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform

SYNOPSIS
#include <Inventor/nodes/SoTransform.h>

Fields from class SoTransform:

SoSFVec3f
translation
SoSFRotation
rotation
SoSFVec3f
scaleFactor
SoSFRotation
scaleOrientation
SoSFVec3f
center

Methods from class SoTransform:

SoTransform()
void
pointAt(const SbVec3f &fromPoint, const SbVec3f &toPoint)
void
getScaleSpaceMatrix(SbMatrix &mat, SbMatrix &inv) const
void
getRotationSpaceMatrix(SbMatrix &mat, SbMatrix &inv) const
void
getTranslationSpaceMatrix(SbMatrix &mat, SbMatrix &inv) const
void
multLeft(const SbMatrix &mat)
void
multRight(const SbMatrix &mat)
void
combineLeft(SoTransformation *nodeOnRight)
void
combineRight(SoTransformation *nodeOnLeft)
void
setMatrix(const SbMatrix &mat)
void
recenter(const SbVec3f &newCenter)
static SoType
getClassTypeId()

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

DESCRIPTION
This node defines a geometric 3D transformation consisting of (in order) a (possibly) non-uniform scale about an arbitrary point, a rotation about an arbitrary point and axis, and a translation. (While the transformations can be thought of as being applied in that order, matrices are actually premultiplied in the opposite order. Therefore, the operations are listed in the reverse order throughout this reference page.)

FIELDS
SoSFVec3f
translation
Translation vector.

SoSFRotation
rotation
Rotation specification.

SoSFVec3f
scaleFactor
Scale factors.

SoSFRotation
scaleOrientation
Rotational orientation for scale.

SoSFVec3f
center
Origin for scale and rotation.

METHODS

SoTransform()
Creates a transformation node with default settings.

void
pointAt(const SbVec3f &fromPoint, const SbVec3f &toPoint)
Sets the node to translate the origin to the fromPoint and rotate the negative z-axis (0,0,-1) to lie on the vector from fromPoint to toPoint. This always tries to keep the "up" direction the positive y-axis, unless that is impossible. All current field values in the node are replaced.

void
getScaleSpaceMatrix(SbMatrix &mat, SbMatrix &inv) const
void
getRotationSpaceMatrix(SbMatrix &mat, SbMatrix &inv) const
void
getTranslationSpaceMatrix(SbMatrix &mat, SbMatrix &inv) const
These return composite matrices that transform from object space to each of the spaces after the scale, rotation, or translation.

void
multLeft(const SbMatrix &mat)
void
multRight(const SbMatrix &mat)
These are convenience functions that combine the effects of a matrix transformation into the current transformation stored in this node. The first method premultiplies the transformation and the second postmultiplies it.

void
combineLeft(SoTransformation *nodeOnRight)
void
combineRight(SoTransformation *nodeOnLeft)
These are convenience functions that combine the effects of another transformation node into the current transformation stored in this node. The first method premultiplies the transformation and the second postmultiplies it.

void
setMatrix(const SbMatrix &mat)
Sets the fields in the node to implement the transformation represented by the given matrix. Note that invalid matrices (such as singular ones) have undefined results.

void
recenter(const SbVec3f &newCenter)
Changes the center of the transformation to the given point without affecting the overall effect of the transformation.

static SoType
getClassTypeId()
Returns type identifier for this class.

ACTION BEHAVIOR
SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction
Accumulates transformation into the current transformation.

SoGetMatrixAction
Returns the matrix corresponding to the total transformation.

FILE FORMAT/DEFAULTS
Transform {
translation	0 0 0
rotation	0 0 1  0
scaleFactor	1 1 1
scaleOrientation	0 0 1  0
center	0 0 0
}

SEE ALSO
SoMatrixTransform, SoResetTransform, SoRotation, SoRotationXYZ, SoScale, SoTransformManip, SoTransformSeparator, SoTranslation