Product documentation · Current desktop UI

Engine animation, rigging and pose editing

UI library · All asset editors · Conversion · Keyboard shortcuts

Contents

The top-level Animation menu is the quickest route to animation assets, new clips/takes/blend spaces/controllers/motion databases, IK and Control Rig, retargeting, Sequence Editor, and the shared qualification workflow. The top-level Physics menu similarly exposes Physics Assets/ragdolls, constraints, scenes, fields, Simulate, Runtime Profiler, and qualification. The command palette also indexes these menu actions.

Images below are real current Qt widgets, captured offscreen with sample assets and the application theme. They demonstrate controls, not live DCC transfer or native-player animation quality.

Skeleton and pose updates

Open a Skeleton from Assets. Structure shows authored elements and the reference-joint view. Hierarchy edits bones, parents and reference transforms; Sockets, Retarget Pose and Validation address their named data. The joint view is a reference preview, not a deforming skinned-character comparison.

Skeleton Hierarchy with reference-pose columns, joint viewport and Update Pose from Asset button

To update from animation or a pose preset:

  1. Open Hierarchy > Update Pose from Asset….
  2. Select an Animation Clip or local-pose preset assigned to this Skeleton. A source assigned to another skeleton must be retargeted first.
  3. For animation, enter a frame; fractional frames are allowed. Sampling uses the clip's sample rate. Pose presets do not use the frame input.
  4. Choose Reference pose or Retarget pose. Choose translation, rotation and/or scale; scale is off initially.
  5. Leave Bone selection empty for all matching bones, or enter comma-separated bone names. Keep unmatched target bones unchanged allows a partial source; disable it for strict matching.
  6. Click Preview changes and inspect updated, unchanged and ignored source bones. Changing options invalidates the preview.
  7. Click Stage pose update, inspect the skeleton, then Save. Use Undo/Redo before saving if needed.

Actual pose-update dialog with source, frame, target, channel choices, preview results and Stage pose update

A reference-pose change does not rebind meshes or regenerate inverse bind matrices. Existing skin-binding data remains unchanged. Use an appropriate bind/rebind workflow and deformation checks before relying on it in a skinned character. Updating Retarget pose leaves reference bones untouched.

Local-pose presets currently use a tc.data asset with the tech_connector.local_pose.v1 pose schema. The public create_pose_asset API creates them; there is no separate pose-preset creation button promised here. The sampler supports absolute local translation/scale vectors and local Euler-degree rotation channels. Bake or convert quaternion, mesh-space and additive source formats first. Unsupported sources, invalid frames, malformed keys and mismatched skeleton assignments fail explicitly.

Animation clips

Open an Animation Clip to inspect Timeline, Curves, Events, Root Motion and Compression. Confirm duration, sample rate, loop policy, skeleton assignment and track data. Preview values and metadata are separate from a live native skeletal playback result. Root-motion settings must agree with the intended character movement. Imported events/curves need source-to-target validation.

Blend spaces

Open a Blend Space. Its editor supports one or two dimensions. Set meaningful axis names/ranges and sample positions. Use the table to edit clip references, rate and mirror flags. Click or drag the yellow query cross, or enter exact input values; the displayed weights update together. Verify referenced clips exist and target the expected skeleton.

Actual 2D Blend Space widget with authored samples, query cross, sample table and live weights

1D sampling interpolates bracketing samples and clamps outside the authored range. 2D sampling uses deterministic triangulation and linear barycentric weights; outside the convex hull it projects to the nearest boundary edge. Collinear layouts remain usable. Duplicate positions share influence and repeated keys aggregate. These are editor/scripting evaluation features; native player skeletal blend integration is not established by this preview.

Controllers and state trees

Animation Controllers expose State Machine, Parameters, Transitions, Pose Graph and Debugger. Define states and motion references, parameter types, transition conditions, blend durations and exit times. Use Step, Play and Reset in the debugger to inspect the active state and trace.

Actual controller debugger showing a speed-driven transition and parameter values

The debugger is a deterministic symbolic simulation. Its stick figure is an illustrative UI element, not the selected clip's sampled skeleton. It consumes triggers when a transition commits and can reach exit times beyond one cycle. It does not prove native interruption blending, layered pose mixing or a complete engine Animation Tree implementation. Inspect the real player for transitions, foot contacts and root motion.

Control rigs and retargeting

Control Rig assets expose structure/graph/control/hierarchy/variable/debug/bake pages. IK Rig assets expose chain/goal and solver-related pages; IK Retargeter assets expose chain mapping, retarget poses, root motion, preview and bake pages. Some pages are property or guidance surfaces rather than a fully implemented live solver. Inspect validation and baked output. A hierarchy or transform preview does not establish that a recreated control rig drives the mesh correctly.

For imported characters, preserve skeleton, mesh and skin-binding links. A character conversion receipt remains needs_review until deformation, materials and source-specific behavior are checked. See character conversion.

In-game IK and motion matching

Procedural Animation Profile pages cover ground IK, limb setup, pelvis and runtime diagnostics. The public scripting runtime supports an explicit airborne IK bypass and zero-weight pose preservation; these clear cached plant anchors. Native measured-sole terrain IK follows a separate player implementation. Validate slopes, stairs, airborne transitions and contacts in the actual player.

Motion matching searches a baked library for pose/trajectory candidates. The host selector can account for elapsed time between searches. Library selection, native clip selection and final skeletal playback are distinct stages. Open a Motion Matching Database for Animations, Feature Schema, Search Debug, and Validation. The editor makes the database and search inputs inspectable; it does not by itself prove final skeletal playback quality. Use the qualification workflow and inspect actual frame output for the target game.

Character contact and movement

The native runtime exposes one deterministic capsule-query substrate for character gameplay. Runtime::overlap_capsule(...) returns stable, sorted overlaps with layer and trigger filtering. Runtime::sweep_capsule(...) reports the first blocking entity, impact point and normal, travel fraction, distance, penetration, and whether the query started overlapped. Runtime::move_capsule(...) performs bounded depenetration and iterative sweep-and-slide with a configurable skin width and iteration budget.

Native character.move uses this same path to constrain predicted planar travel before physics integration. RuntimeProfile::character_sweep_queries and character_sweep_hits expose the per-frame cost and collision count for the profiler. Traversal and cover clearance should consume these APIs instead of implementing independent ray-only collision rules.

Ragdoll lifecycle

Physical-animation characters can now enter partial or full ragdoll through Runtime::enter_ragdoll(...). The transition blends authored muscle drive down while physics influence rises, locks ordinary move/jump graph operations, and emits deterministic lifecycle events. Runtime::recover_ragdoll(...) aligns the character root to the simulated pelvis, grounds the capsule, selects a face-up or face-down get-up variant, restores muscle drive, blends physics out, and unlocks movement only after get-up completes.

Packaged graphs use character.ragdoll and character.recover. Runtime tools can inspect RagdollDiagnostic for phase, blend progress, effective drive and physics weights, movement lock, selected get-up variant, and recovery position. Each physical-animation body can author ragdoll_weight: zero keeps that body animation-driven, one gives it the full lifecycle blend, and intermediate values support layered hit reactions. Recovery accepts optional face-up and face-down animation clips, validates that they target the same skeleton, and motion-warps the root toward the grounded simulated pelvis before starting the selected clip.

tc_ragdoll_network_service provides the matching authoritative replication contract. Only a server session may author lifecycle transitions. Clients accept newer, hash-verified snapshots containing the phase, lock state, selected clip, orientation and recovery target; stale, cross-character and tampered states fail closed. Authored physics assets and an actual packaged multiplayer/graphical capture still require content-level qualification. Use qualify_packaged_ragdoll_capture(package) for that final gate: it requires an actual D3D11 frame with a skinned character, a debug snapshot, and ordered Requested → Entered → Recovery Started → Get-Up Started → Recovered events. Use qualify_packaged_ragdoll_transport(package) for the multiplayer gate. It launches separate packaged server/client processes, sends authoritative roots and ragdoll phases over UDP, requires prediction correction and near-latest delivery, and fails unless all phase changes arrive and recovery returns to the unlocked active state.

This foundation does not yet constitute climb, mantle, or cover. Those features still require typed movement modes, shape/ledge classification, motion-warp targets, full-body contact IK, authoritative replication, and packaged qualification scenes.

Qualification and Unreal comparison

Choose Animation > Animation & Physics Qualification… or Physics > Animation & Physics Qualification…. The dialog explains each optional stage, runs in the background so Garden stays responsive, and writes a JSON receipt. It currently verifies:

  • 1D/2D blend evaluation, state transitions, Any State triggers, and timing;
  • trajectory roles, jump phases, continuity, finite costs, and search timing;
  • two-limb terrain IK, contact/planting, zero-weight preservation, and timing;
  • deterministic physics record/replay/rollback and optional native stress scenes;
  • installed Unreal 5.8 Animation, Control Rig, IK Retargeting, Pose Search, Physics, and Sequencer API surfaces plus representative asset save/reload;
  • optional Maya character carrier import into Unreal as Skeletal Mesh, Skeleton, Anim Sequence, Anim Blueprint, IK Rig, Pose Search database/schema, and Physics Asset, followed by axis-independent golden-pose comparison across five animated times, fresh-process reopen and cook;
  • a production-scale Unreal Control Rig fixture with 23 bones, 23 controls, 46 authored graph nodes and observable Forward Solve output, followed by save and reload;
  • a two-clip, 36-value Pose Search schema over trajectory, hands, and ankles; twelve indexed and eleven blended/perturbed off-index queries must choose the identical pose in TC and Unreal 5.8 before fresh reopen and cook can pass.

Use api.close_animation_physics_parity_gates(output, package) for the deeper runtime gate. It launches separate packaged server/client processes and proves authoritative root-motion transport and prediction correction, compares the same 600 m/s projectile against TC and Chaos with discrete collision, CCD and eight substeps, and captures/inspects a scripted D3D11 gameplay frame. The gate passes only when all four observed runtime results pass. This still does not claim pixel-identical deformation for every character, arbitrary third-party Control Rig graphs, WAN multiplayer conditions, or every Chaos shape/solver.