Where Modifiers Live
You configure modifiers in the Procedural Animation Settings asset, where they appear as an ordered list. You can add multiple modifiers of the same type to the same settings asset — for example, two separate Two Bone IK modifiers for the left and right arms. Each entry in the list has a Gizmo-toggle button that shows or hides the modifier’s scene widget, and a visibility icon that enables or disables the modifier entirely. Both controls are useful during setup and debugging.Two-Part Architecture
Every modifier is composed of two distinct pieces:1
Settings (ScriptableObject)
A
ScriptableObject-derived class that stores inspector-editable data — bone references, angle limits, smoothing speeds, and so on. By default, modifier settings live embedded in the Procedural Animation Settings asset and are not exposed as standalone project assets.2
Animation Job (struct)
A struct that implements the actual runtime logic via Unity’s Playables API. The job runs on the animation thread, so you should never mutate its internal fields directly from the main thread — use the provided
UpdateJobData callback path instead.AnimationModifierSettings Base Class
All built-in modifier settings inherit fromAnimationModifierSettings:
GameObject
Reference to the player or character prefab. Required so editor widgets can resolve the skeleton hierarchy.
float
default:"1"
Global influence multiplier for this modifier, clamped to
[0, 1]. Set to 0 to fully disable the modifier’s effect without removing it from the stack.List<WeightOverride>
Additional runtime float parameters that further modulate the final influence. Multiple overrides are multiplied together, so a single zero override zeroes the whole modifier. See Weight Overrides below.
Weight Overrides
Weight Overrides give you fine-grained per-modifier influence control driven by arbitrary float properties — for example, blending a modifier out when a specific animation state is active.float property binding
A bound float that controls how much this override contributes. Connect it to any float value in your project via Property Bindings.
bool
default:"false"
When enabled, the override’s contribution is computed as
1f - Weight, effectively inverting it. Useful for “disable when active” patterns.float
default:"0 / 1"
Remaps the incoming Weight value from an arbitrary range into
[0, 1]. If your source value lives in a different range (e.g., [0, 100]), set Min to 0 and Max to 100.The IAnimationModifierJob Interface
Every Animation Job struct implementsIAnimationModifierJob in addition to Unity’s IAnimationJob. The interface defines the following lifecycle methods:
Modifier Pooling
CAS reuses already-allocated modifier jobs when the active Procedural Animation Settings change (for example, when swapping profiles at runtime). On reuse, the system callsInitialize() again and recreates the AnimationScriptPlayable linked to that job. You do not need to manually manage this lifecycle.
Built-in Modifiers
Aim At
Rotates a bone or chain to point at a world-space target. Ideal for head tracking, spine aiming, and weapon direction.
Foot IK
Raycasts beneath feet to keep them planted on uneven terrain. Works with Two Bone IK for full leg correction.
Full Body IK
Applies IK to all four limbs simultaneously with a single modifier — hands, feet, and elbows/knees in one pass.
Two Bone IK
Solves a two-bone chain (arm or leg) to reach a target position. The foundation for hand and foot IK setups.
Look Modifier
Distributes pitch, yaw, and roll rotation across spine bones. Includes built-in turn-in-place support.
Copy & Modify Bone
Transfers bone transforms between bones (Copy Bone) or applies position/rotation offsets to one bone or a chain.
Dynamic Bones
Animates a bone in one skeleton space and applies it in another — essential for weapon positioning and left-hand IK.
State Behaviours
Animator Controller state components that trigger CAS events — smooth float transitions and procedural step playback.
