> ## 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.

# Copy Bone, Modify Bone, and Modify Bone Chain in CAS

> Copy Bone transfers a transform between bones, Modify Bone offsets a single bone, and Modify Bone Chain applies the same offset to an entire bone chain.

CAS provides three lightweight utility modifiers for manipulating bone transforms within the procedural stack: **Copy Bone** transfers a transform from one bone to another, **Modify Bone** applies a position, rotation, or scale offset to a single bone, and **Modify Bone Chain** applies those same offsets to an entire chain of bones at once. Together they form the foundation of IK proxy setups and runtime procedural corrections.

***

## Copy Bone

**Copy Bone** reads the transform of one bone and writes it to another each frame. It is the essential first step in any IK proxy workflow — you copy the animated hand or foot pose into an IK target bone so that downstream modifiers can reposition that target without disturbing the source bone.

### Properties

<ParamField path="Copy From" type="KRigElement">
  The source bone whose transform will be read. This is typically the real animated bone, such as `hand_r` or `foot_l`.
</ParamField>

<ParamField path="Copy To" type="KRigElement">
  The destination bone that will receive the copied transform. This is typically an IK proxy bone, such as `IK hand_r` or `IK foot_l`.
</ParamField>

<ParamField path="Copy Mode" type="enum">
  Determines how the copied transform is applied to the destination:

  * **Replace** — overwrites the destination transform with the source transform.
  * **Add** — accumulates the source transform on top of the existing destination transform.
</ParamField>

<ParamField path="Copy Position" type="bool" default="true">
  When enabled, copies the source bone's local position to the destination.
</ParamField>

<ParamField path="Copy Rotation" type="bool" default="true">
  When enabled, copies the source bone's local rotation to the destination.
</ParamField>

<ParamField path="Copy Scale" type="bool" default="true">
  When enabled, copies the source bone's local scale to the destination.
</ParamField>

### IK Proxy Setup Pattern

The typical CAS pattern for IK setups uses Copy Bone as the first step in a three-modifier chain:

<Steps>
  <Step title="Copy Bone — initialise the IK target">
    Copy the animated bone (e.g., `foot_r`) to its corresponding IK proxy bone (e.g., `IK foot_r`). The IK target now holds the current animation pose.
  </Step>

  <Step title="Modify the IK target procedurally">
    Let intermediate modifiers — **Foot IK**, **Step Modifier**, or a **Modify Bone** — reposition the IK proxy to its corrected world position.
  </Step>

  <Step title="Two Bone IK — drive the real limb">
    Use a **Two Bone IK** modifier to solve the limb chain so the real hand or foot bone reaches the adjusted IK proxy position.
  </Step>
</Steps>

This workflow caches the animation pose in an IK proxy and modifies only that proxy, preserving the original character pose on all other bones.

***

## Modify Bone

**Modify Bone** directly changes the position, rotation, or scale of a single bone at runtime. Unlike Copy Bone, which reads from another bone, Modify Bone accepts externally bound values — for example, a recoil offset from a weapon system or a procedural translation from a character controller.

### Properties

<ParamField path="Bone To Modify" type="KRigElement">
  The bone whose transform will be modified.
</ParamField>

<ParamField path="Position" type="Vector3 property binding">
  The position offset or absolute position to apply. You can bind any `Vector3` value from your runtime components to this property using Property Bindings.
</ParamField>

<ParamField path="Rotation" type="Quaternion property binding">
  The rotation offset or absolute rotation to apply. Bind any `Quaternion` value from your runtime components.
</ParamField>

<ParamField path="Scale" type="Vector3 property binding">
  The scale offset or absolute scale to apply. Bind any `Vector3` value from your runtime components.
</ParamField>

<ParamField path="Translation Space / Rotation Space" type="enum">
  The coordinate space in which the position or rotation offset is applied — local bone space, character space, or world space.
</ParamField>

<ParamField path="Translation Mode / Rotation Mode / Scale Mode" type="enum">
  Controls whether the modifier **ignores**, **adds to**, or **replaces** the existing bone transform for each channel independently.
</ParamField>

### Use Cases

* **Recoil and sway** — bind a weapon component's recoil vector to **Position** to procedurally shake the weapon bone without animation curves.
* **IK target nudging** — add a translation offset to an IK proxy bone after Copy Bone and before Two Bone IK.
* **Debug posing** — temporarily override a bone's transform in the editor to test IK or modifier configurations.

***

## Modify Bone Chain

**Modify Bone Chain** works identically to **Modify Bone** but applies the offset to every bone in a specified chain simultaneously. This is efficient when you want the same rotation or translation applied uniformly across a set of adjacent bones — for example, curling all finger bones together, or tilting an entire spine chain.

### Properties

<ParamField path="Chain To Modify" type="KRigElement[]">
  The list of bones that will all receive the same offset. Drag in any contiguous or non-contiguous set of bones.
</ParamField>

<ParamField path="Position" type="Vector3 property binding">
  The translation offset applied to every bone in the chain. Bind to any runtime `Vector3` value.
</ParamField>

<ParamField path="Rotation" type="Quaternion property binding">
  The rotation offset applied to every bone in the chain. Bind to any runtime `Quaternion` value.
</ParamField>

<ParamField path="Space" type="enum">
  The coordinate space in which the offsets are applied — local, component, or world.
</ParamField>

<ParamField path="Mode" type="enum">
  Whether the offset **adds to** or **replaces** the current transform on each bone.
</ParamField>

### Use Cases

* **Trigger discipline** — rotate all index finger bones 45° around the local Z axis when the character is sprinting, so the finger lifts off the trigger. This is the example used in the CAS FPS Add-on.
* **Spine curl or lean** — tilt the entire spine chain forward during a sprint without authoring a separate animation layer.
* **Bulk finger posing** — shape a hand grip by rotating multiple finger bones to a target angle simultaneously.

<Tip>
  Use Modify Bone Chain instead of multiple individual Modify Bone entries whenever the same offset should apply to a group of bones. It keeps the modifier stack shorter and is more performant than stacking many single-bone modifiers.
</Tip>
