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

# CAS FPS Add-on Modifiers: Complete Property Reference

> Reference for all CAS FPS Add-on modifiers — ADS alignment, weapon sway, weapon collision, IK motions, copy bones, offsets, and hand attachment.

The FPS Add-on ships seven modifiers that you add to a Procedural Animation Settings asset to build the full first-person animation pipeline. Each modifier has a single, well-defined responsibility, and their combined effect depends entirely on their order in the modifier list. This page documents every property for each modifier and explains where in the modifier stack each one belongs.

For the recommended three-stage ordering of all modifiers together, see [Procedural Setup](/cas/fps/procedural-animation-setup).

***

## FPS Copy Bones

**FPS Copy Bones** seeds the weapon and hand IK targets from the current Animator pose. It must be the first modifier in the list — every other FPS modifier reads the IK targets that this one writes.

### Copy From

<ParamField body="Source Weapon Bone" type="Transform">
  The animated bone that carries weapon movement. Set this to **IK weapon\_bone\_r** — the dynamic bone that stores the weapon pose relative to the right hand.
</ParamField>

<ParamField body="Source Right Hand" type="Transform">
  The character skeleton's right hand bone as driven by the Animator.
</ParamField>

<ParamField body="Source Left Hand" type="Transform">
  The character skeleton's left hand bone as driven by the Animator.
</ParamField>

### Copy To

<ParamField body="IK Weapon Bone" type="Transform">
  Set to **IK weapon\_bone**. Receives the weapon animated transform so downstream modifiers can apply sway, recoil, and ADS on top of the original pose.
</ParamField>

<ParamField body="IK Weapon Bone Aim" type="Transform">
  Set to **IK weapon\_bone\_aim**. Receives the weapon idle pose and is used by the ADS Modifier as the reference position for computing aim alignment.
</ParamField>

<ParamField body="IK Hand Right / Left" type="Transform">
  Set to **IK hand\_r** and **IK hand\_l** respectively. These become the targets for the arm IK solvers.
</ParamField>

***

## Attach Left Hand

**Attach Left Hand** resolves the final left-hand grip position. It checks the active weapon for a custom grip attachment and, when one is present, overrides the default IK target with the weapon-specific pose. Run this after FPS Copy Bones so the default fallback pose is already populated.

<ParamField body="Default Hand Bone" type="Transform">
  The fallback IK target used when no custom grip attachment is active. Set to **IK hand\_l\_r** — the dynamic bone that stores the left-hand pose relative to the right hand.
</ParamField>

<ParamField body="IK Hand Bone" type="Transform">
  The left-hand IK target that the arm IK solver reads. Set to **IK hand\_l**.
</ParamField>

<ParamField body="IK Weapon Bone" type="Transform">
  Reference to **IK weapon\_bone**. Used to compute the hand position in weapon-local space.
</ParamField>

<ParamField body="Fingers" type="Transform[]">
  A bone chain covering the left-hand finger bones. When a custom Hand Pose clip is assigned, CAS samples the clip and applies it to these bones to curl or extend the fingers around the grip.
</ParamField>

<ParamField body="Hand Pose" type="AnimationClip">
  The grip pose animation clip provided by the active weapon's Grip Attachment. Poses the left hand and fingers for the specific grip point on this weapon.
</ParamField>

<ParamField body="Attach Transform" type="Transform">
  The world-space transform on the weapon prefab that the left hand is pulled toward. Supplied by the active Grip Attachment component. When null, the modifier falls back to Default Hand Bone.
</ParamField>

***

## FPS Offset

**FPS Offset** applies positional and rotational offsets to the weapon and hand IK targets. Use it to tune the weapon's resting position in first-person view, adjust the hand grip orientation, or switch the entire weapon pose between gameplay states using Weight Overrides.

You can add multiple FPS Offset instances to the same PA\_ asset — for example one for first-person aiming, one for first-person hip fire, and one for third-person — and then use Weight Overrides to activate only the appropriate one at runtime.

### Bones

<ParamField body="IK Weapon Bone" type="Transform">
  Set to **IK weapon\_bone**. The offset is applied to this transform in component space.
</ParamField>

<ParamField body="IK Weapon Bone Aim" type="Transform">
  Set to **IK weapon\_bone\_aim**. Also receives the weapon offset to keep the ADS reference in sync.
</ParamField>

<ParamField body="IK Hand Right / Left" type="Transform">
  Set to **IK hand\_r** and **IK hand\_l**. Hand offsets are applied relative to the weapon bone.
</ParamField>

### Offsets

<ParamField body="Weapon Bone Offset" type="Pose (position + rotation)">
  Rotation and translation offset for IK weapon\_bone in component space. Bind this from a weapon data ScriptableObject or your character controller so different weapons carry their own offsets without requiring separate PA\_ assets.
</ParamField>

<ParamField body="Right Hand Offset" type="Pose (position + rotation)">
  Rotation and translation offset for IK hand\_r relative to the weapon bone.
</ParamField>

<ParamField body="Left Hand Offset" type="Pose (position + rotation)">
  Rotation and translation offset for IK hand\_l relative to the weapon bone.
</ParamField>

***

## ADS Modifier

**ADS Modifier** procedurally aligns any optic or iron sight with the camera to simulate aiming down sights. It translates and rotates `IK weapon_bone` so the point defined by Aim Point lands exactly on the camera's forward axis.

### Inputs

<ParamField body="Aim Point" type="Transform">
  The transform on the weapon prefab that should be centred in the camera view when aiming. For iron sights this is typically the rear sight notch or front post. For optics it is the lens centre. Bind this from the weapon component so each weapon provides its own aim point.
</ParamField>

<ParamField body="Is Aiming" type="bool">
  Whether the player is currently aiming. Bind from your player controller or weapon component. When false the modifier blends back to the hip-fire pose.
</ParamField>

### Bones

<ParamField body="Weapon Bone" type="Transform">
  The bone that is translated and rotated to align sights. Set to **IK weapon\_bone**.
</ParamField>

<ParamField body="Hip Target Bone" type="Transform">
  Used to compute the additive aiming offset. Set to **IK weapon\_bone\_r**.
</ParamField>

<ParamField body="Aim Target Bone" type="Transform">
  The camera socket or head bone that represents the player's view direction. The modifier aligns Aim Point with this transform's forward axis.
</ParamField>

### ADS Blends

<ParamField body="Position Blend" type="float [0–1]">
  Controls how much of the positional aim alignment is applied. At 1 the weapon translation is fully overridden; at 0 the position is entirely additive on top of the base pose.
</ParamField>

<ParamField body="Rotation Blend" type="float [0–1]">
  Same as Position Blend but for the rotation axis. Mix absolute and additive rotation to control how much the weapon tilts back toward its animated orientation during actions like reloading.
</ParamField>

<ParamField body="Aiming Speed" type="float">
  Playback rate of the ADS transition animation. Higher values snap into the aimed pose faster.
</ParamField>

<ParamField body="Aiming Ease Mode" type="EaseMode">
  The interpolation function for the ADS blend-in and blend-out transition.
</ParamField>

<ParamField body="Aim Point Speed" type="float">
  How quickly the aim reference follows a new Aim Point transform when swapping weapons or attachments.
</ParamField>

<ParamField body="Aim Point Ease Mode" type="EaseMode">
  The interpolation function for the aim point transition.
</ParamField>

<ParamField body="Camera Blend" type="float [0–1]">
  At 0 the weapon moves to align its sights with a stationary camera. At 1 the camera moves instead. Intermediate values split the motion between weapon and camera.
</ParamField>

<Tip>
  For reload or other full-body animations in ADS, reduce Position Blend and Rotation Blend on the axes that carry the most animation motion. This lets the animation propagate visually while still keeping the sights reasonably aligned.
</Tip>

***

## Sway Modifier

**Sway Modifier** applies spring-based translational and angular offsets to the weapon as the player looks around and moves. It creates the organic feeling that the weapon has physical inertia and does not rigidly track the camera. It also supports additive curve animations for movement cycles or idle breathing layered on top of the spring sway.

### Bones

<ParamField body="Weapon Bone" type="Transform">
  The bone that receives the sway offset. Set to **IK weapon\_bone**.
</ParamField>

<ParamField body="Weapon Additive Bone" type="Transform (optional)">
  An optional secondary bone that drives additive curve animations, such as a breathing or movement cycle. Leave empty if you only need spring sway.
</ParamField>

### Inputs

<ParamField body="Delta Look Input" type="Vector2">
  The frame-delta of the player's look input. Bind from your camera or input controller. The magnitude drives spring sway intensity.
</ParamField>

<ParamField body="Move Input" type="Vector2">
  The player's normalised movement direction input. Used to drive movement-direction sway so the weapon lags behind as the player strafes or sprints.
</ParamField>

<ParamField body="Is Aiming" type="bool">
  When true, aiming-specific sway multipliers are applied, typically producing a tighter, smaller sway envelope.
</ParamField>

### Spring Sway

Each of Movement Sway and Aiming Sway has separate Position and Rotation sub-sections with the following properties:

<ParamField body="Damping" type="float [0–1]">
  Oscillation suppression factor. Higher values dissipate the spring energy faster. A value around 0.4–0.5 tends to feel most natural.
</ParamField>

<ParamField body="Stiffness" type="float [0–1]">
  Oscillation frequency factor. Higher values make the spring snap back faster. Keeping Stiffness slightly above Damping (around 0.6–0.7) adds that characteristic jiggle or bounce.
</ParamField>

<ParamField body="Speed" type="float">
  How fast the spring moves toward its target value. Setting different values for position and rotation sway adds variety and reduces the mechanical feel.
</ParamField>

<ParamField body="Scale" type="float">
  Final multiplier applied to all sway values after spring solving.
</ParamField>

<ParamField body="Damping Factor" type="float">
  How quickly the sway interpolates back to zero when there is no input.
</ParamField>

<ParamField body="Space" type="Space enum">
  The space in which sway is applied. **Component** is correct for most cases. Use **Bone** if you want the bone's local rotation to affect the sway direction.
</ParamField>

### Curve Animation

<ParamField body="Space Offset" type="Pose">
  Transforms the additive animation from a custom coordinate space. Use this when the movement animation was authored in a space that does not match the weapon bone's default orientation.
</ParamField>

<ParamField body="ADS Curve Scale" type="float">
  Scales the influence of additive curve animations when the player is aiming down sights.
</ParamField>

<ParamField body="ADS Curve Smoothing" type="float">
  Interpolation speed for transitioning between the hip-fire and ADS curve scale values.
</ParamField>

***

## Weapon Collision

**Weapon Collision** prevents the weapon from clipping through walls, cover, and other geometry by performing a sphere-cast in front of the weapon and pushing it back when the cast hits something. Place this modifier after the Look Modifier and after the IK solvers so it operates on the final character pose.

<ParamField body="Pitch Input" type="float [-90–90]">
  The player's current vertical look angle. When positive (looking up) the Primary Pose is applied; when negative (looking down) the Secondary Pose is applied instead. This distinction lets you tuck the weapon differently depending on whether the player is looking over cover or crouching under something.
</ParamField>

<ParamField body="Primary Pose" type="Pose">
  The weapon offset applied when the sphere-cast hits an obstacle while the player is looking upward or horizontally.
</ParamField>

<ParamField body="Secondary Pose" type="Pose">
  The weapon offset applied when the sphere-cast hits an obstacle while the player is looking downward.
</ParamField>

<ParamField body="Target Space" type="Space enum">
  The space in which the collision pose is applied. Set to **Component** in most cases.
</ParamField>

<ParamField body="Interp Speed" type="float">
  Smoothing speed for transitioning into and out of the collision pose. Set to zero for instant snapping.
</ParamField>

<ParamField body="Layer Mask" type="LayerMask">
  The physics layers the sphere-cast will test against. Exclude the player's own layer and any layers that should not trigger weapon retraction.
</ParamField>

<ParamField body="Start Offset" type="float">
  Forward offset from the weapon origin where the ray begins. Increase this if the cast is triggering against the player's own collider.
</ParamField>

<ParamField body="Weapon Length" type="float">
  The length of the sphere-cast trace. Bind this from a weapon component if different weapons have different barrel lengths.
</ParamField>

<ParamField body="Trace Radius" type="float">
  The radius of the sphere used in the sphere-cast. Larger values detect obstacles earlier but may trigger false positives in tight corridors.
</ParamField>

***

## IK Motions

**IK Motion** plays a dynamic additive animation on an IK bone. It is used for any motion that should blend in and out on demand — aiming, drawing, and holstering are the most common use cases. Unlike other CAS modifiers, IK Motion can be instantiated as a standalone ScriptableObject via **Create → KINEMATION → CAS → Addons → FPS → IK Motion**.

<ParamField body="Bone To Animate" type="Transform">
  The IK bone this motion drives. For aiming and draw/holster motions this is typically `IK weapon_bone`.
</ParamField>

<ParamField body="Rotation Curves" type="VectorCurve">
  Animation curves defining the additive rotation over the motion's duration.
</ParamField>

<ParamField body="Translation Curves" type="VectorCurve">
  Animation curves defining the additive translation over the motion's duration.
</ParamField>

<ParamField body="Rotation Scale" type="Vector3">
  Per-axis scale multipliers for the rotation curves. Adjust these to control the final magnitude without editing the curves directly.
</ParamField>

<ParamField body="Translation Scale" type="Vector3">
  Per-axis scale multipliers for the translation curves.
</ParamField>

<ParamField body="Blend Time" type="float">
  Time in seconds to blend the motion in from zero influence to full influence.
</ParamField>

<ParamField body="Play Rate" type="float">
  Playback speed multiplier. Values above 1 play faster; values below 1 play slower.
</ParamField>

<ParamField body="Auto Blend Out" type="bool">
  When enabled, the motion automatically blends back out to zero influence when the animation curves reach their end. Disable this for looping motions or motions that should hold their final pose until manually stopped.
</ParamField>

To play an IK Motion at runtime, call `UpdateAnimationModifier` on the **Procedural Animation** component and pass the IK Motion ScriptableObject instance. For draw and holster motions this is typically triggered from the weapon equip and unequip callbacks in your game logic.
