Scroll to navigation

SoTransform(3IV)() 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