> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinemation.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Look Modifier: Spine Look Rotation and Turn in Place

> The Look Modifier applies pitch, yaw, and roll rotation to spine bones for procedural look-around and leaning, with a built-in turn-in-place system.

The **Look Modifier** applies pitch, yaw, and roll rotation to a configurable list of spine bones without requiring Blend Tree states. You bind the player's aim direction directly to the modifier's input properties, and the system distributes the resulting rotation evenly across all registered bones. A built-in turn-in-place feature then rotates the character's root bone against the player's look direction so the feet stay planted until the angular threshold is exceeded.

## Look Rotation Properties

<ParamField path="Pitch Input" type="float property binding">
  The vertical look angle in degrees. Bind this to your camera's pitch or the player's vertical aim input.
</ParamField>

<ParamField path="Yaw Input" type="float property binding">
  The horizontal look angle in degrees. By default this is interpreted as a world rotation value — you can bind the player's global yaw directly. Enable **Use Yaw As Delta** if you want to accumulate frame-by-frame input instead.
</ParamField>

<ParamField path="Use Yaw As Delta" type="bool" default="false">
  When enabled, the modifier accumulates the **Yaw Input** value each frame as a delta rather than using it as an absolute world rotation. Enable this when your input source provides per-frame horizontal deltas (e.g., mouse delta X) instead of a global angle.
</ParamField>

<ParamField path="Roll Input" type="float property binding">
  The roll or leaning angle in degrees. Use this to tilt the spine sideways — for example, when strafing or banking in a vehicle.
</ParamField>

<ParamField path="Pitch Offset Elements" type="KRigElement[]">
  Bones that receive the pitch rotation. Add spine and neck bones here. The total pitch angle is divided evenly across all bones in the list.
</ParamField>

<ParamField path="Yaw Offset Elements" type="KRigElement[]">
  Bones that receive the yaw rotation. Typically the same spine/neck bones as **Pitch Offset Elements**. The total yaw angle is distributed evenly.
</ParamField>

<ParamField path="Roll Offset Elements" type="KRigElement[]">
  Bones that receive the roll rotation. Use a subset of spine bones for subtle leaning effects.
</ParamField>

## Turn-In-Place Properties

<ParamField path="Enable Turn In Place" type="bool" default="false">
  Activates the procedural turn-in-place system. When enabled, the modifier rotates the root bone against the player's yaw to keep the feet stationary while the upper body looks around.
</ParamField>

<ParamField path="Angle Threshold" type="float">
  The maximum allowed yaw offset (in degrees) between the character's root and the player's look direction before a turn-in-place is triggered. Recommended range: `45–90` degrees.
</ParamField>

<ParamField path="Turn Curve" type="AnimationCurve">
  An ease curve that shapes the speed of the turn over time. Use an ease-in/ease-out curve for a natural, accelerate-then-decelerate feel.
</ParamField>

<ParamField path="Turn Speed" type="float">
  A multiplier applied on top of the **Turn Curve** to control the overall turning speed.
</ParamField>

<ParamField path="Bones To Preserve" type="KRigElement[]">
  Bones whose poses are preserved regardless of the root rotation. Used with Humanoid rigs only — typically the upper spine or head when you want the upper body to remain facing the look direction during a turn.
</ParamField>

<ParamField path="Turn Right State" type="string">
  The name of the Animator Controller state to play when the character turns right. Add a turning animation to your controller and enter its state name here.
</ParamField>

<ParamField path="Turn Left State" type="string">
  The name of the Animator Controller state to play when the character turns left.
</ParamField>

## Driving Look Rotation at Runtime

The Look Modifier's input properties (**Pitch Input**, **Yaw Input**, **Roll Input**) are designed to be driven via CAS [Property Bindings](/cas/modifiers/overview). You connect a float value from your character controller or camera directly to each input property, and the modifier reads it on the animation thread each frame.

### Using a Global Rotation Value

If your character controller exposes a global yaw angle, bind it directly to **Yaw Input**. This is the most reliable approach and makes look-smoothing straightforward — you interpolate toward the global target angle before feeding it to the modifier.

### Using Per-Frame Input Deltas

If your input system provides per-frame horizontal deltas (for example, mouse delta X or joystick input), enable **Use Yaw As Delta** and bind the horizontal delta value to **Yaw Input**. The modifier accumulates these deltas each frame to produce a continuous rotation.

<Tip>
  Using a global rotation value gives more control than delta input — for example, it lets you apply look-smoothing by interpolating toward the global target angle. Delta-mode is simpler to set up initially but harder to smooth precisely.
</Tip>

## Angle Distribution

Look angles are divided evenly across all registered bones. You only need to specify the total desired angle — the modifier computes each bone's share automatically. For example, if you want the character to look 90° to the right and you have three spine bones registered, each bone receives 30° of yaw.

<Tip>
  Just enter the total target angle and the system distributes it automatically. Experiment with which spine bones to include to find what feels natural for your specific character mesh.
</Tip>

## Turn-In-Place Setup

<Steps>
  <Step title="Enable the feature">
    Check **Enable Turn In Place** in the Look Modifier settings.
  </Step>

  <Step title="Set the angle threshold">
    Start with `60` degrees for **Angle Threshold** — this gives the character a comfortable look-around range before triggering a turn.
  </Step>

  <Step title="Add turn animations to your controller">
    Create **Turn Right** and **Turn Left** states in your Animator Controller and add looping or one-shot turning animations to them.
  </Step>

  <Step title="Reference the state names">
    Enter the exact Animator Controller state names in **Turn Right State** and **Turn Left State**.
  </Step>

  <Step title="Tune speed and curve">
    Adjust **Turn Speed** and **Turn Curve** until the turn feels responsive without being jarring.
  </Step>
</Steps>
