---
name: "SoTransformerManip"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoTransformerManip/3iv"
---

# SoTransformerManip(3iv)

transform node with 3D interface for changing scaling, rotation, and translation

## NAME

SoTransformerManip — transform node with 3D interface for changing scaling, rotation, and translation

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoTransformation \> SoTransform \> SoTransformManip \> SoTransformerManip

## SYNOPSIS

**#include \<Inventor/manips/SoTransformerManip.h\>**

Fields from class SoTransform:

**SoSFVec3f**	**translation**\
 **SoSFRotation**	**rotation**\
 **SoSFVec3f**	**scaleFactor**\
 **SoSFRotation**	**scaleOrientation**\
 **SoSFVec3f**	**center**

Methods from class SoTransformerManip:

	**SoTransformerManip()**\
 **static SoType**	**getClassTypeId()**\
 **void**	**setLocateHighlighting(SbBool onOff )**\
 **SbBool**	**isLocateHighlighting()**\
 **void**	**unsquishKnobs()**

Methods from class SoTransformManip:

**SoDragger \***	**getDragger()**\
 **SbBool**	**replaceNode(SoPath \*p )**\
 **SbBool**	**replaceManip(SoPath \*p, SoTransform \*newOne ) const**

Methods from class 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)**

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 is a new manipulator with some improvements over the older inventor manips. It has the following features: \[1\] full interface for rotate, translate, and scale, \[2\] better feedback, \[3\] locate highlighting.**

**SoTransformerManip** is derived from **SoTransform** (by way of **SoTransformManip**). When its fields change, nodes following it in the scene graph rotate, scale, and/or translate.

As a subclass of **SoTransformManip**, this manipulator also has a 3D interface to edit some of its fields. In this case, the interface edits the **scaleFactor**, **rotation** and **translation** fields.

A manipulator differs from a dragger. When you move a dragger, no other nodes are affected. When you move an **SoTransformManip**, other nodes move along with it. (See the reference page for **SoTransformManip**).

The interface for an **SoTransformerManip** is exactly the same as that of the **SoTransformerDragger**. To find out more about the interface, see the reference page for **SoTransformerDragger**. To find out how the manipulator uses a dragger to provide its interface, see the reference page for **SoTransformManip**.

On screen, this manipulator will surround the objects influenced by its motion. This is because it turns on the *surroundScale* part of the dragger (See the reference page for **SoSurroundScale**)

## METHODS

	**SoTransformerManip()**\
 Constructor.

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

**void**	**setLocateHighlighting(SbBool onOff )**\
 **SbBool**	**isLocateHighlighting()**\
 Controls whether or not the dragger inside this manip will perform locate highlighting is used. Default is TRUE.

**void**	**unsquishKnobs()**\
 Tells the dragger inside this manip to unsquish its rotation and scale knobs during the next traversal. Ordinarily, the knobs are only unsquished upon readin from file and when the mouse button is released at the end of a drag. If you want this to happen more often, then you should call this method.

## FILE FORMAT/DEFAULTS

```
TransformerManip {
translation	0 0 0
rotation	0 0 1  0
scaleFactor	1 1 1
scaleOrientation	0 0 1  0
center	0 0 0
}
```

## SEE ALSO

**SoTransformerDragger, SoTransform, SoCenterballManip, SoHandleBoxManip, SoJackManip, SoTabBoxManip, SoTrackballManip, SoTransformBoxManip, SoTransformManip**
