Skip to content

3.51.0

Choose a tag to compare

@fernandotonon fernandotonon released this 13 Oct 20:17

Motion graph: a clip state machine (#526, #1083)

You can now preview animation logic such as idle → walk → run on a skinned entity, without leaving the editor.

  • States and transitions. Each state plays a clip, with loop and speed settings. Transitions start from a state or from any state. A transition fires when all of its conditions on float, bool or trigger parameters hold. It blends over a duration you set, using a linear, ease or step curve.
  • Wait for the source clip. By default, a new transition waits for the source clip to finish one full play before it fires. Use the Wait for source clip checkbox and the fraction field to change this.
  • Bone-masked partial transitions. A masked transition drives only the masked bones. The rest of the body keeps playing the previous clip, so you can have an upper-body wave over a running lower body.
  • Inspector panel. The Motion Graph section is in Animation mode. It has a node view you can drag nodes around in, and the active state and blend progress are highlighted while it plays. A Template button builds an idle/walk/run graph driven by a speed parameter. Every edit is undoable.
  • Saved with your project. The graph is stored in a <file>.animgraph.json sidecar next to the export. When you re-import under a different entity name, the graph binds to the new name. Exports still contain only the clips, never an engine-native graph.
  • CLI: qtmesh anim model.glb --graph-info [--json]
  • MCP: get_motion_graph, set_motion_graph, play_motion_graph, stop_motion_graph, set_motion_graph_param

Docs: docs/MOTION_GRAPH.md