feat: add native IK, retarget, and contact authoring - #897
Open
alexkenley wants to merge 7 commits into
Open
Conversation
alexkenley
marked this pull request as ready for review
August 10, 2026 12:35
alexkenley
marked this pull request as draft
August 10, 2026 12:45
alexkenley
force-pushed
the
agent/ik-retarget-contact-authoring
branch
from
August 10, 2026 13:55
a361d92 to
c499dec
Compare
alexkenley
marked this pull request as ready for review
August 10, 2026 13:57
alexkenley
force-pushed
the
agent/ik-retarget-contact-authoring
branch
from
August 12, 2026 06:20
c499dec to
27a4fc3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack
Depends on #896 at its final head,
cb9d5a9ea4476510528f43218faf3ba44c7ecf25.This branch contains the complete #896 stack plus the native IK/retarget/contact tranche (
8d630a07) and its final FK contact-correctness fix (27a4fc38). Merge #896 first, then #897. Until #896 merges, GitHub's comparison for this PR includes the inherited #896 commits.What changed
configure_ik_rigauthoring for retarget roots, root-motion bones, validated chains, goals, Full Body IK effectors/settings, and solver exclusions.configure_ik_retargeterauthoring for the default op stack, per-op rig assignment, preview meshes, exact/fuzzy/manual mappings, named retarget poses, auto-alignment, offsets, and processor validation.contact_lockoperations to the Control Rig transaction, including component-space targets, smooth boundary blends, optional driven bone/socket verification, and stabilizer controls.Final-head contact correctness fix
UE skeletons can mark FK bones with
TranslationRetargeting=Skeleton, which discards authored local translation offsets during evaluation. A translation-only contact edit could therefore appear to apply successfully while the evaluated bone never reached the target.The final head detects that case and solves the contact through per-frame FK chain rotations derived with FABRIK, writes normalized local quaternion keys, and verifies the evaluated driven-bone residual after the solve. This prevents false-success contact reports on skeleton-retargeted FK chains.
The rotation-chain path deliberately requires a driven bone,
Replacemode, and no stabilizer controls; unsupported combinations are rejected before mutation. Position-only contact targets preserve the source orientation.Why
The previous surface could create shallow IK assets but could not round-trip solver goals, author the UE 5.8 retarget op stack/poses, or express and verify a generic contact constraint. Agents therefore had to guess from viewport output or use custom probes. This tranche makes those decisions native, typed, transactional, and numerically verifiable.
Transferability
The process is skeleton- and body-part-independent: discover the hierarchy/control types and reference transforms, express the desired motion as component-space anatomical/contact constraints, author normalized quaternion/scalar keys, bake to a new asset, and validate every affected and preserved bone numerically.
Rig mappings do not transfer blindly. Each skeleton still requires discovery of control/bone names, axes/signs, mirrored scale, joint limits, solver goals, translation-retargeting modes, and retarget chain mappings. The workflow and acceptance gates transfer; fixture-specific values do not.
Compatibility
configure_ik_rig,configure_ik_retargeter, andcontact_lockuse UE 5.8 editor APIs and returnerrorCode=unsupported_engine_versionon older engines. There is no silent raw-track or reflection fallback.Live V&V (UE 5.8)
Checks
Final head:
27a4fc385b1b9399fc9bc4047f6f77fccecd63a8npm run test:unit: passed at the final headnpx tsc --noEmitnpm run audit:docs,audit:em-dash, andaudit:unitybuildcheck is green at the final headNo Computer Use or
execute_pythonis used by the implementation or workflow.