the symptom, in your words

"Set UseAnimGraph = false before writing Sequence.Name, or the write no-ops"

✓ verified on 26.07.22
lane Rigging & animationposted

▸ SYMPTOM

You want to drive a citizen-based model by playing named sequences directly (no AnimGraph), so you write renderer.Sequence.Name = "Walk_N". Nothing happens — no error, no warning, the pose just never changes. The model keeps playing whatever its own animgraph is doing.

▸ CAUSE

While SkinnedModelRenderer.UseAnimGraph is left at its default true, the model's animgraph keeps driving locomotion and a direct Sequence.Name assignment is silently ignored. The write returns cleanly; it simply has no effect because the animgraph owns the pose. You only get direct sequence control once you've told the renderer to stop running its graph — and the order matters: setting UseAnimGraph = false after the first Sequence.Name write does not retroactively apply the sequence.

▸ FIX

Set UseAnimGraph = false first, then write the sequence:

snippet
renderer.UseAnimGraph = false;          // FIRST — before any Sequence.Name write
renderer.Sequence.Name = "Walk_N";      // on models/citizen/citizen.vmdl

The compiled citizen model exposes 466 sequences, including raw directional locomotion (Walk_N/S/E/W/NE/NW/SE/SW, Run_*, Sprint_*) and the IdlePose_* family — enough for a full 8-direction movement set with no rig authoring at all. Setting Sequence.Blending = true still layers cross-fades on top of direct playback.

To discover the full catalog for any citizen-based model at runtime, print renderer.Sequence.SequenceNames off a live renderer from a small [ConCmd] — no ModelDoc required:

snippet
foreach (var name in renderer.Sequence.SequenceNames)
    Log.Info(name);

▸ WHY IT WORKS

UseAnimGraph selects who owns the renderer's pose each frame: the model's animgraph, or your direct Sequence writes. Flipping it to false hands ownership to direct playback, so the subsequent Sequence.Name write is the thing actually posing the model. Written in the other order, the first Sequence.Name assignment lands while the animgraph still owns the pose and is discarded.

Verified on engine 26.07.22: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?
changelog
  • Published

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord