# SceneNode \ Transform \ Rotation

These nodes read and change how a 3D object is **turned** in your scene. An object’s rotation is given as three numbers — **Pitch**, **Yaw**, and **Roll** — measured in degrees (90 = a quarter turn). Most come in two forms: a **world** version that uses the object’s orientation in the whole scene, and a **(Local)** version measured relative to the object’s parent or group. Changing an object’s rotation never moves it or resizes it.

## What's on this page

- **Read the rotation** — find out which way an object is currently turned.
- **Change the rotation** — turn an object to a new orientation (instantly or smoothly over time), or reset it to how it started.

---

## Read the rotation

These read an object’s current orientation without changing anything — handy for storing it, comparing it, or feeding it into other nodes.

### Get Node Rotation

Reads how an object is currently turned in your scene and gives you back its three rotation values.

#### What it does

This node looks at an object you choose and tells you its current orientation — how far it is turned — as three separate numbers: **Pitch**, **Yaw**, and **Roll**. Each value is measured in degrees, where `90` is a quarter turn and `180` is a half turn.

The numbers describe the object’s orientation in the whole scene (its absolute, world orientation). Reading the rotation only measures the object — it doesn’t turn it, and it doesn’t affect any other objects.

#### Inputs

<table id="bkmrk-port-type-what-to-co"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What to connect</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Wire this from the previous node’s Execute output.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The object whose rotation you want to read.</td></tr></tbody></table>

#### Outputs

<table id="bkmrk-port-type-what-you-g"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What you get</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Fires once the node has finished.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The same object passed straight through, so you can connect more nodes after this one.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The object’s Pitch turn, in degrees.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The object’s Yaw turn, in degrees.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The object’s Roll turn, in degrees.</td></tr></tbody></table>

#### Example

<table id="bkmrk-scenenode-input-a-do"><tbody><tr><td>**SceneNode** input</td><td>A door in your scene</td></tr><tr><td>**Pitch** output</td><td>`0`</td></tr><tr><td>**Yaw** output</td><td>`90`</td></tr><tr><td>**Roll** output</td><td>`0`</td></tr></tbody></table>

#### Tips

- Use this to check which way an object is facing before you decide how far to turn it.
- You only need the outputs you care about — for example, connect just **Yaw** and leave the others unused.

---

### Get Node Rotation (Local)

Reads how far an object is currently turned, measured relative to its parent or group.

#### What it does

This node looks at a single object in your scene and tells you its current turn as three numbers — Pitch, Yaw, and Roll — each measured in degrees (for example, `90` is a quarter turn and `180` is a half turn).

The rotation you get back is the object’s *local* turn: it is measured relative to the object’s parent or group. If that parent or group is later moved, turned, or resized, this local value stays the same. (If the object isn’t inside a parent or group, its local turn and its turn in the whole scene are the same.) This node only reads the value — it doesn’t turn the object or change anything else in your scene.

#### Inputs

<table id="bkmrk-port-type-what-to-co-0"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What to connect</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Wire this from the previous node’s Execute output.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The object whose current turn you want to read.</td></tr></tbody></table>

#### Outputs

<table id="bkmrk-port-type-what-you-g-0"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What you get</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Fires once the node has finished.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The same object passed straight through, so you can connect more nodes to it.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The object’s Pitch turn, in degrees.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The object’s Yaw turn, in degrees.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The object’s Roll turn, in degrees.</td></tr></tbody></table>

#### Example

<table id="bkmrk-scenenode-input-a-do-0"><tbody><tr><td>**SceneNode** input</td><td>A door in your scene</td></tr><tr><td>**Pitch** output</td><td>`0`</td></tr><tr><td>**Yaw** output</td><td>`45`</td></tr><tr><td>**Roll** output</td><td>`0`</td></tr></tbody></table>

#### Tips

- Use this when you want to react to how an object is currently turned — for example, checking whether a door or valve has been turned far enough.
- To read the object’s turn in the whole scene instead of relative to its parent or group, use the matching node without “(Local)” in its name.

---

## Change the rotation

These turn an object to a new orientation. The plain versions change it instantly; the **(Animated)** versions glide to the new angle over a number of seconds. **Reset Rotation** returns an object to the orientation it had when the scene first loaded.

### Set Node Rotation

Turns a 3D object to face a specific direction in your scene.

#### What it does

This node sets the rotation of an object to the exact Pitch, Yaw, and Roll values you provide. The values are measured in degrees, where 90 is a quarter turn and 180 is a half turn. Whatever way the object was facing before, it now faces exactly the direction these three values describe.

The rotation is set in the whole scene, so the object ends up oriented the same way no matter where it sits or what group it belongs to. Only the object (or objects) you connect are affected — nothing else in the scene moves or turns. The same object is then passed straight out again, so you can keep working with it in the nodes that follow.

#### Inputs

<table id="bkmrk-port-type-what-to-co-1"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What to connect</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Wire this from the previous node’s Execute output.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The object (or objects) you want to turn.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The Pitch turn, in degrees. Leave at `0` for no Pitch turn.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The Yaw turn, in degrees. Leave at `0` for no Yaw turn.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The Roll turn, in degrees. Leave at `0` for no Roll turn.</td></tr></tbody></table>

#### Outputs

<table id="bkmrk-port-type-what-you-g-1"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What you get</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Fires once the node has finished.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The same object (or objects) passed through, so you can chain more nodes.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The Pitch value you set, in degrees.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The Yaw value you set, in degrees.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The Roll value you set, in degrees.</td></tr></tbody></table>

#### Example

<table id="bkmrk-scenenode-input-a-si"><tbody><tr><td>**SceneNode** input</td><td>A signpost in your scene</td></tr><tr><td>**Pitch** input</td><td>`0`</td></tr><tr><td>**Yaw** input</td><td>`90`</td></tr><tr><td>**Roll** input</td><td>`0`</td></tr><tr><td>**SceneNode** output</td><td>The same signpost, now turned to its new orientation</td></tr></tbody></table>

#### Tips

- This sets the object to an exact orientation rather than turning it by an amount. Setting all three to `0` returns the object to facing straight along the scene’s default direction.

---

### Set Node Rotation (Animated)

Smoothly turns a 3D object to a new orientation over a set number of seconds.

#### What it does

This node turns one or more objects to face a new direction, set by three turn amounts measured in degrees: Pitch, Yaw, and Roll. Instead of snapping into place instantly, the object eases into its new orientation over the time you choose, so the motion looks smooth on screen.

The orientation you give is the object’s absolute orientation in the whole scene, not relative to any parent or group. The object keeps its current position and size — only its rotation changes — and other objects in the scene are left untouched.

#### Inputs

<table id="bkmrk-port-type-what-to-co-2"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What to connect</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Wire this from the previous node’s Execute output to start the turn.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The object (or objects) you want to turn.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The Pitch turn, in degrees (for example, `90` is a quarter turn). Leave at `0` for no turn on this axis.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The Yaw turn, in degrees. Leave at `0` for no turn on this axis.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The Roll turn, in degrees. Leave at `0` for no turn on this axis.</td></tr><tr><td style="white-space: nowrap;">**Duration**</td><td style="white-space: nowrap;">Number</td><td>How long the smooth turn takes, in seconds. Use a larger value for a slower, gentler turn. Must be zero or more.</td></tr></tbody></table>

#### Outputs

<table id="bkmrk-port-type-what-you-g-2"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What you get</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Fires so the flow can continue once the turn has been applied.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The same object (or objects) passed through, so you can chain more nodes after this one.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The Pitch value you gave, passed through for reuse.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The Yaw value you gave, passed through for reuse.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The Roll value you gave, passed through for reuse.</td></tr><tr><td style="white-space: nowrap;">**Duration**</td><td style="white-space: nowrap;">Number</td><td>The Duration value, passed through for reuse.</td></tr></tbody></table>

#### Example

<table id="bkmrk-scenenode-input-a-si-0"><tbody><tr><td>**SceneNode** input</td><td>A signpost object in your scene</td></tr><tr><td>**Pitch** input</td><td>`0`</td></tr><tr><td>**Yaw** input</td><td>`90`</td></tr><tr><td>**Roll** input</td><td>`0`</td></tr><tr><td>**Duration** input</td><td>`2`</td></tr><tr><td>**SceneNode** output</td><td>The same signpost, now smoothly turned to its new orientation over 2 seconds</td></tr></tbody></table>

#### Tips

- The turn amounts set the object’s final orientation in the scene — they are not added to its current angle each time the node runs.
- To turn an object instantly with no animation, use the non-animated version of this node instead.

---

### Set Node Rotation (Local)

Turns a 3D object to a specific orientation, measured relative to its parent or group.

#### What it does

This node sets how much an object is turned, using three values measured in degrees: Pitch, Yaw, and Roll. The turn is applied instantly — the object snaps to the orientation you give it.

The values are “local,” meaning they are measured relative to the object’s parent or group. If that parent or group is later moved, turned, or resized, this local orientation stays the same relative to it. If the object isn’t inside a parent or group, its local orientation is the same as its orientation in the whole scene. Only the object you connect is affected — other objects in the scene are left alone.

#### Inputs

<table id="bkmrk-port-type-what-to-co-3"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What to connect</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Wire this from the previous node’s Execute output.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The 3D object you want to turn. You can connect more than one object, and each will be turned the same way.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The Pitch turn, in degrees (for example, `90` for a quarter turn). Leave at `0` for no turn on this one.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The Yaw turn, in degrees. Leave at `0` for no turn on this one.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The Roll turn, in degrees. Leave at `0` for no turn on this one.</td></tr></tbody></table>

#### Outputs

<table id="bkmrk-port-type-what-you-g-3"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What you get</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Fires once the node has finished.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>Passes the same object (or objects) through, so you can chain more nodes after this one.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The Pitch value you set, in degrees.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The Yaw value you set, in degrees.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The Roll value you set, in degrees.</td></tr></tbody></table>

#### Example

<table id="bkmrk-scenenode-input-the-"><tbody><tr><td>**SceneNode** input</td><td>The `Door` object</td></tr><tr><td>**Pitch** input</td><td>`0`</td></tr><tr><td>**Yaw** input</td><td>`90`</td></tr><tr><td>**Roll** input</td><td>`0`</td></tr><tr><td>**SceneNode** output</td><td>The same `Door` object, now turned, ready to pass to the next node</td></tr></tbody></table>

#### Tips

- This node sets the orientation outright — it doesn’t add to the current turn. Each value replaces what was there before.
- The turn happens instantly. If you want the object to turn smoothly over time, use the animated version of this node instead.

---

### Set Node Rotation (Local, Animated)

Smoothly turns an object to a new rotation over a set number of seconds, measured relative to its parent or group.

#### What it does

This node sets an object’s local rotation to the Pitch, Yaw, and Roll values you give it, all measured in degrees (for example, `90` is a quarter turn and `180` is a half turn). “Local” means the rotation is measured relative to the object’s parent or group: if that parent or group is later moved, turned, or resized, this object’s local rotation stays the same. If the object isn’t part of any parent or group, its local and world rotation are the same.

Because this is the animated version, the object turns smoothly to the new rotation over the number of seconds you set in Duration, rather than snapping to it instantly (the non-animated version changes it at once). Only the object you connect is affected — nothing else in the scene moves.

#### Inputs

<table id="bkmrk-port-type-what-to-co-4"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What to connect</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Wire this from the previous node’s Execute output to start the turn.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The object you want to rotate. You can connect more than one object to rotate them all the same way.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The Pitch part of the target rotation, in degrees. Defaults to `0`.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The Yaw part of the target rotation, in degrees. Defaults to `0`.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The Roll part of the target rotation, in degrees. Defaults to `0`.</td></tr><tr><td style="white-space: nowrap;">**Duration**</td><td style="white-space: nowrap;">Number</td><td>How many seconds the smooth turn should take. Must be zero or more; defaults to `2`.</td></tr></tbody></table>

#### Outputs

<table id="bkmrk-port-type-what-you-g-4"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What you get</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Fires so the flow can continue once the turn has been applied.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The same object (or objects) passed straight through, so you can connect more nodes after this one.</td></tr><tr><td style="white-space: nowrap;">**Pitch**</td><td style="white-space: nowrap;">Number</td><td>The Pitch value you set, passed through.</td></tr><tr><td style="white-space: nowrap;">**Yaw**</td><td style="white-space: nowrap;">Number</td><td>The Yaw value you set, passed through.</td></tr><tr><td style="white-space: nowrap;">**Roll**</td><td style="white-space: nowrap;">Number</td><td>The Roll value you set, passed through.</td></tr><tr><td style="white-space: nowrap;">**Duration**</td><td style="white-space: nowrap;">Number</td><td>The Duration value you set, passed through.</td></tr></tbody></table>

#### Example

<table id="bkmrk-scenenode-input-the--0"><tbody><tr><td>**SceneNode** input</td><td>The `Door` object</td></tr><tr><td>**Pitch** input</td><td>`0`</td></tr><tr><td>**Yaw** input</td><td>`90`</td></tr><tr><td>**Roll** input</td><td>`0`</td></tr><tr><td>**Duration** input</td><td>`1.5`</td></tr><tr><td>**SceneNode** output</td><td>The same `Door` object, now smoothly turning to its new rotation over 1.5 seconds</td></tr></tbody></table>

#### Tips

- This node sets the rotation to an exact value rather than adding to the current one — the object ends up at the Pitch, Yaw, and Roll you give, wherever it started.
- Set Duration to `0` if you want the rotation applied right away with no smooth turn.
- Leave any of Pitch, Yaw, or Roll at `0` to keep that part of the rotation flat.

---

### Reset Rotation

Turns an object back to the way it was originally facing when the scene first loaded.

#### What it does

Every object remembers the orientation it started with when your scene opened. As your training plays, an object might get tipped, spun, or knocked over — by the user, by a physics step, or by other nodes. **Reset Rotation** snaps the object back to that original starting orientation, with no need to remember or type in any angles yourself.

The **Direction** choice lets you pick how much to reset. **All Directions** puts the object back exactly as it started. **Up Direction Only** stands the object back upright (as it originally stood) but leaves it facing whichever way it is currently turned — handy for setting a fallen item back on its feet without changing where it’s pointing. The object’s position and size are left alone; only its rotation changes, and no other object is affected.

#### Inputs

<table id="bkmrk-port-type-what-to-co-5"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What to connect</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Wire this from the previous node’s Execute output. The reset happens the moment this fires.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The object (or objects) you want to set back to its original orientation. You can connect more than one.</td></tr><tr><td style="white-space: nowrap;">**Direction**</td><td style="white-space: nowrap;">Choice</td><td>How much to reset. Choose **All Directions** to restore the full original orientation, or **Up Direction Only** to stand the object upright again while keeping the way it is currently facing.</td></tr></tbody></table>

#### Outputs

<table id="bkmrk-port-type-what-you-g-5"><thead><tr><th style="white-space: nowrap;">Port</th><th style="white-space: nowrap;">Type</th><th>What you get</th></tr></thead><tbody><tr><td style="white-space: nowrap;">**Execute**</td><td style="white-space: nowrap;">Trigger</td><td>Fires once the node has finished, so you can continue to the next step.</td></tr><tr><td style="white-space: nowrap;">**SceneNode**</td><td style="white-space: nowrap;">Scene node</td><td>The same object (or objects) passed straight through, so you can chain more nodes onto it.</td></tr><tr><td style="white-space: nowrap;">**Direction**</td><td style="white-space: nowrap;">Choice</td><td>The same choice you picked, passed through unchanged.</td></tr></tbody></table>

#### Example

<table id="bkmrk-scenenode-input-%3Ccha"><tbody><tr><td>**SceneNode** input</td><td>`<Chair>` (an object that has been knocked over)</td></tr><tr><td>**Direction** input</td><td>`Up Direction Only`</td></tr><tr><td>**SceneNode** output</td><td>`<Chair>`, now standing upright again, still facing the same way it was</td></tr></tbody></table>

#### Tips

- Reset Rotation always returns to the orientation the object had when the scene first loaded — not to a flat, zeroed-out angle. If an object started out tilted, that original tilt is what comes back.
- Use **Up Direction Only** for things like setting a tipped-over tool or chair back on its feet while keeping the direction the user had turned it.
- This only changes rotation. To also return an object to its starting spot, pair it with a node that resets position.