# SetTRS

> Sets this matrix to a translation, rotation and scaling matrix.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.5/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

## SetTRS(Vector3, Quaternion, Vector3)

Sets this matrix to a translation, rotation and scaling matrix.

```csharp
public void SetTRS(Vector3 pos, Quaternion q, Vector3 s)
```

### Parameters

**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): **** (\[Quaternion]\(/engine/6000.5/script-reference/unityengine/quaternion)): **** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)):&#x20;

### Remarks

The current matrix is modified so that it places objects at position `pos`, oriented in rotation `q` and scaled by `s`.

```csharp
// Translate, rotate and scale a mesh. Try varying
// the parameters in the inspector while running
// to see the effect they have.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Vector3 translation;
    public Vector3 eulerAngles;
    public Vector3 scale = new Vector3(1, 1, 1);
    private MeshFilter mf;
    private Vector3[] origVerts;
    private Vector3[] newVerts;

    void Start() {
        mf = GetComponent<MeshFilter>();
        origVerts = mf.mesh.vertices;
        newVerts = new Vector3[origVerts.Length];
    }

    void Update() {
        Quaternion rotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, eulerAngles.z);
        Matrix4x4 m = Matrix4x4.identity;
        m.SetTRS(translation, rotation, scale);
        int i = 0;
        while (i < origVerts.Length) {
            newVerts[i] = m.MultiplyPoint3x4(origVerts[i]);
            i++;
        }
        mf.mesh.vertices = newVerts;
    }
}
```

Additional Resources: [Matrix4x4.TRS](/engine/6000.5/script-reference/unityengine/matrix4x4/trs.md), [Matrix4x4.Rotate](/engine/6000.5/script-reference/unityengine/matrix4x4/rotate.md), [Matrix4x4.Scale](/engine/6000.5/script-reference/unityengine/matrix4x4/scale.md), [Matrix4x4.Translate](/engine/6000.5/script-reference/unityengine/matrix4x4/translate.md) functions.

## SetTRS(Vector3, Quaternion, Vector3)

Sets this matrix to a translation, rotation and scaling matrix.

```csharp
public void SetTRS(in Vector3 pos, in Quaternion q, in Vector3 s)
```

### Parameters

**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): **** (\[Quaternion]\(/engine/6000.5/script-reference/unityengine/quaternion)): **** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)):&#x20;

### Remarks

The current matrix is modified so that it places objects at position `pos`, oriented in rotation `q` and scaled by `s`.

```csharp
// Translate, rotate and scale a mesh. Try varying
// the parameters in the inspector while running
// to see the effect they have.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Vector3 translation;
    public Vector3 eulerAngles;
    public Vector3 scale = new Vector3(1, 1, 1);
    private MeshFilter mf;
    private Vector3[] origVerts;
    private Vector3[] newVerts;

    void Start() {
        mf = GetComponent<MeshFilter>();
        origVerts = mf.mesh.vertices;
        newVerts = new Vector3[origVerts.Length];
    }

    void Update() {
        Quaternion rotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, eulerAngles.z);
        Matrix4x4 m = Matrix4x4.identity;
        m.SetTRS(translation, rotation, scale);
        int i = 0;
        while (i < origVerts.Length) {
            newVerts[i] = m.MultiplyPoint3x4(origVerts[i]);
            i++;
        }
        mf.mesh.vertices = newVerts;
    }
}
```

Additional Resources: [Matrix4x4.TRS](/engine/6000.5/script-reference/unityengine/matrix4x4/trs.md), [Matrix4x4.Rotate](/engine/6000.5/script-reference/unityengine/matrix4x4/rotate.md), [Matrix4x4.Scale](/engine/6000.5/script-reference/unityengine/matrix4x4/scale.md), [Matrix4x4.Translate](/engine/6000.5/script-reference/unityengine/matrix4x4/translate.md) functions.
