Repository navigation
Animation, the rest: docs, a character component, natural motion (#853) - #905
Merged
Merged
Conversation
What Siltreach needs to put its settlers on the pipeline while motion sits them down, eats and stands them up (2026-11-01): - animator_free left its behaviour in the engine, so the pose phase went on calling it on freed memory. It removes and frees it now. - engine_remove_behaviour took the behaviour out of the list the phase loops walk, so one removed mid-frame shifted the rest under the loop: with an animator freed in the pose phase, the next figure went unposed that frame (its clock 20 frames on of 21; now 21 of 21). The slot is emptied and the holes close at the start of the next frame; the behaviour count and index skip them. - animator.pause / resume: paused, it writes none of the figure's joints and reads back what another writer draws (what stood was 3e-6 degrees off it). Resumed over 0.3 s it eases out of that pose, inertialized as a transition is: the fastest joint turn 9.7 rad/s against the clips' own 8.3 plus the easing's 6.7; at once, it snaps at 60.9. ikrig.feet_reset lets go of the locks held before the pause. - animator.share_take: a take retargeted once serves every figure on a rig, not freed with any of them; refused to a rig of another size. test_anim_pipeline 85 checks, test_ik_constraints 16, test_matching 16, and the suites that remove behaviours (campath, orbitcam, audio, buoyancy, worldsound) all pass.
After #891, a merge that touched most of the engine, main's first Linux run on the 26.04 image built cold and its linux and linux-2 legs were cut off at 34 minutes in Run CI (run 41279330619), each leaving a rerun to finish what it had started. A cut-off run and its rerun cost more than one run let finish, and a warm shard (24 minutes) never comes near the limit. Run CI stops at 54, six inside it, so a cut-off run still saves its compile cache.
This was referenced Nov 2, 2026
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.
All the remaining animation work in one pull request, in this order: the README, docs and images (#902), a character component (#903), then natural motion (#858, #859, #861), with the other milestones alongside. #891 landed the pipeline's first layers and closed its milestones before their lists were met; they are reopened, each with its remaining work written out. A box is ticked only when its issue's own list is met on this branch.
Issues
In this push
Handing a figure between writers, which Siltreach needs to put its settlers on the pipeline while motion sits them down (part of #860):
animator.pause/resume: paused, it writes none of the figure's joints (what another writer drew stands, 3·10⁻⁶° off). Resumed over 0.3 s, it eases out of that pose: the fastest joint turn is 9.7 rad/s against the clips' own 8.3 plus the easing's 6.7. Taken back at once, it snaps at 60.9 rad/s.ikrig.feet_resetlets go of locks held from before the pause.animator.share_take: one take retargeted once and shared by every figure on a rig. It plays alike on two figures, outlives their animators, and is refused to a rig of another size.test_anim_pipeline: 85 checks, all passing.