Skip to content

A character component: a moving, aiming, reacting person in a few lines #903

Description

@nicolas-maman

Setting up one figure on the animation pipeline takes too much: the showcase's figure on a stick is 96 lines and 56 calls across seven modules (figure, animator, clips, retarget, ikrig, mover, pose), with the clip preparation (straighten, loop cut, crop about the move) done by hand. Beside the pipeline, older modules still do parts of the same job (anim, feet, lookat, locomotion, idle, posing, ik, handover, and motion's own feet).

Wanted: one component, the way Unity's Animator plus a CharacterController reads, with defaults that are right for a person:

hero = character.humanoid(e, "Hero", "people/adventurer.glb", character.gaits("100style/neutral"))
character.move(hero, velocity, facing)      // every frame, from the game
character.aim(hero, target)
character.hit(hero, bone, point, impulse)   // physical reaction, then back to the animation
  • Locomotion out of the box: idle, starts and stops by distance, a 2D blend of the gaits, turns on the spot in steps, motion matching where a database is given.
  • Feet, look and aim IK on by default, held to the numbers test_anim_pipeline and test_ik_constraints already measure.
  • States, takes and transitions declarable as data (a file), not only as calls.
  • Everything underneath still reachable for a game that wants it.
  • The overlapping older modules retired behind it (with M6 migration onto the animation pipeline; old writers retired #860).

Done when the showcase's figures are each set up in a few lines through it, the README's animation example is the real code, and every check in test_anim_pipeline and test_ik_constraints holds through the component.

Activity

  1. nicolas-maman commented on Nov 2, 2026

    @nicolas-maman
    CollaboratorAuthor

    Reopened: #905's merge (68934a3) closed this, but it carried only the hand-off between writers (animator.pause, resume, share_take, safe behaviour removal). The remaining work is as written above.

  2. nicolas-maman commented on Nov 2, 2026

    @nicolas-maman
    CollaboratorAuthor

    Moves as data, from the joint plan with Siltreach (2026-11-02): one graph file format (states, takes by file and name with their retarget, transitions with their conditions, events, parameters) read into the animator. A profession's action set is one such file, so a new profession is data, not code. This is the 'states as data' item above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions