Skip to content

3.46.0

Choose a tag to compare

@fernandotonon fernandotonon released this 02 Oct 05:48

Animation retargeting between different skeletons

You can now copy an animation from one character onto another, even when the two skeletons don't match. They can differ in bone names, bone axes, proportions, up axis (Y-up or Z-up) and rest pose (A-pose or T-pose).

  • Auto-mapping pairs source and target bones by exact name, then by humanoid role (hips, spine, arms, legs, fingers), then by side-aware synonyms and spelling distance. You can review and override every pair.
  • Bone maps save and load as .bonemap files. Three are bundled: mixamo_to_humanik, mixamo_to_unity and mixamo_to_unreal.
  • Options: translation none, root (the default, scaled by the rigs' height ratio) or all. You can also choose the source rest pose (bind or first frame) and turn rest-direction matching on or off.
  • The result is an ordinary skeletal clip on the target, so the timeline, dope sheet and every exporter handle it with no extra steps. In the editor it is one undo step.

Using it

  • GUI: in Animation mode, open Mode Tools, then Retarget, then Retarget Animation…. The wizard picks the source clip and the target rig, auto-maps the bones, lets you edit the map, and previews both characters side by side before you apply.
  • CLI: qtmesh anim source.fbx --retarget target.glb --bonemap mixamo_to_unity --anim Walk -o target_walking.glb. Omit --bonemap to auto-map, and omit --anim to retarget every clip. Also available: --translation, --source-rest, --no-align, --name, --print-bonemap, --save-bonemap and --json.
  • MCP: retarget_animation works on entities already in the scene, with undo, or on files with an output_path. dry_run returns the bone map without writing anything.

See docs/RETARGETING.md for the algorithm and the bone-map format.

Also in this release

  • Fixed a crash on macOS 27 whenever a message box opened. Examples include the result box after Merge Animations and the cloud-upload prompts. On macOS 27, AppKit throws while drawing a native alert's icon. Message boxes now use Qt's own dialog, so they look slightly different. Native file and colour pickers are unchanged.

Full changelog: 3.45.0...3.46.0