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

# SoComposeMatrix(3iv)

composes a transformation matrix

## NAME

SoComposeMatrix — composes a transformation matrix

## INHERITS FROM

SoBase \> SoFieldContainer \> SoEngine \> SoComposeMatrix

## SYNOPSIS

**#include \<Inventor/engines/SoCompose.h\>**

Inputs from class SoComposeMatrix:

**SoMFVec3f**	**translation**\
 **SoMFRotation**	**rotation**\
 **SoMFVec3f**	**scaleFactor**\
 **SoMFRotation**	**scaleOrientation**\
 **SoMFVec3f**	**center**

Outputs from class SoComposeMatrix:

**(SoMFMatrix)**	**matrix**

Methods from class SoComposeMatrix:

	**SoComposeMatrix()**

Methods from class SoEngine:

**static SoType**	**getClassTypeId()**\
 **virtual int**	**getOutputs(SoEngineOutputList &list) const**\
 **SoEngineOutput \***	**getOutput(const SbName &outputName) const**\
 **SbBool**	**getOutputName(const SoEngineOutput \*output, SbName &outputName) const**\
 **SoEngine \***	**copy() const**\
 **static SoEngine \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoEngineList &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 engine has inputs that specify values for translation, rotation, scale, and center of transformation. As output, it produces a transformation matrix that transforms objects into the space specified** **by the scale, rotation, and translation inputs (in that order).**

**The input fields can have multiple values, allowing the engine to compose several matrices in parallel. Some inputs may have more values** **than others. In such cases, the last value of the shorter inputs will be repeated as necessary.**

## INPUTS

**SoMFVec3f**	**translation**\
 Translation in x, y, and z.

**SoMFRotation**	**rotation**\
 Rotation.

**SoMFVec3f**	**scaleFactor**\
 Scale factors in x, y, and z.

**SoMFRotation**	**scaleOrientation**\
 Rotational space for scaling.

**SoMFVec3f**	**center**\
 Center point for scaling and rotating.

## OUTPUTS

**(SoMFMatrix)**	**matrix**\
 Transformation matrix that transforms from object space into the space specified by the inputs.

## METHODS

	**SoComposeMatrix()**\
 Constructor

## FILE FORMAT/DEFAULTS

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

## SEE ALSO

**SoDecomposeMatrix, SoEngineOutput**
