Flow Character
Flow Character IK & Correction Layers
Add LookAt, Hand IK, Feet Plant, and Side Avoidance as animation-first presentation corrections.
- Audience
- Animation and gameplay developers
- Time
- 12 minutes
- Requires
- A configured Flow Character with authored animation
- Modules
- Flow Character
On this page
Summary
Flow Character IK adds focused presentation corrections after authored animation establishes the character’s baseline pose. Configure stable rig data on the character, then provide runtime intent such as targets, world positions, weights, and enable state.
Why It Exists
Movement and animation often provide the correct overall behavior while a character still needs to look at an object, place a hand, align feet to a surface, or react visually to a nearby obstacle. These correction layers add that response without transferring movement, gameplay rules, or pathfinding ownership into the IK solver.
Mental Model
| Layer | Runtime intent | Stable setup |
|---|---|---|
| LookAt IK | Target Transform or world position | Effector-first chains, axes, limits, smoothing, and optional body links |
| Hand IK | Target, point, reach, or world position | Arm chain, bend behavior, hand axes, offsets, and influence |
| Feet Plant | Ground contact and locomotion gates | Foot bindings, probes, axes, gait, and body compensation |
| Side Avoidance | Enable state, movement gate, and optional hand contact | Detection, body response, stabilization chains, and contact timing |
LookAt: one target
A LookAt entry aims its configured head or effector toward one Transform or world position while preserving animation as the incoming pose. Target smoothing and contribution weight are separate responsibilities.
Multiple LookAt entries
The primary entry and additional entries keep independent targets, limits, smoothing, and chains. Use additional entries for multi-head characters or other separately controlled gaze effectors.
Hand IK
Hand IK resolves explicit hand goals while preserving authored calibration on the character. Runtime graph logic can select targets and intent; it should not rebuild the arm chain every time the target changes.
Feet Plant
Feet Plant adapts configured feet to detected surfaces after the animation pose is available. Treat it as a grounding presentation layer, not as the owner of character movement or navigation.
Side Avoidance
Side Avoidance can turn the visible torso, stabilize configured head or foot directions, and offer otherwise free hands for contact. It does not rotate or steer the Flow Character root.
Behavior Contract
- Authored animation remains the baseline for every correction layer.
- Stable bones, axes, chains, offsets, limits, and calibration belong in character setup.
- Graphs and runtime APIs provide changing intent such as targets, positions, weights, and enabled state.
- LookAt entries are selected explicitly; additional entries are not merged into one shared target.
- Explicit Hand IK goals retain ownership over automatic Side Avoidance contact.
- Feet Plant and Side Avoidance respond to the current scene instead of restoring stale surface or obstacle observations.
- A configured persistence handler can restore selected runtime intent, but it does not recreate missing IK entries or replace rig calibration.
Design Implications
Add one correction at a time. Verify the animated pose first, then confirm the target resolves, then tune weight and smoothing, and only then introduce limits or coordination with another layer.
Keep correction layers visually responsible. Movement chooses where the character goes, animation establishes the authored motion, gameplay chooses the target, and IK adjusts the presented pose.
Common Misunderstandings
- LookAt does not require Humanoid Animator LookAt IK or a third-party rig package.
- Hand IK target data does not replace arm-chain calibration.
- Feet Plant does not make an ungrounded movement controller grounded.
- Side Avoidance does not steer around obstacles or change the character root path.
- Enabling a layer does not guarantee a visible result when its target, chain, weight, or runtime gate is invalid.
- Save and Load restores supported runtime intent, not transient solver samples, contacts, or pose history.