Skip to content

Live2D Animation & Mapping

This page reflects the current Live2D runtime used by AnySoul today: reusable clips, rule-owned priority, scoped base behaviors, and runtime arbitration by priority tier.

Think in three layers:

  1. Clips describe reusable animation assets
  2. Rules decide when clips should play
  3. Base Behaviors schedule long-lived background playback for idle and active scopes

The Full Editor is the recommended place to author all three.

At runtime, playback resolves in this order:

  1. authored neutral pose from Parameters
  2. optional legacy idle-motion participation
  3. one active base-behavior scope: idle or active
  4. every currently matched rule
  5. lip sync / focus dispatch after parameter resolution

For a single parameter, writes are grouped by priority tier. The important part:

  • higher priority tiers resolve before lower ones
  • inside one tier, Multiply and Add evaluate before Override
  • Override consumes remaining weight
  • a higher-tier full-weight Override can leave zero room for lower tiers

That means a low-priority base wobble will not leak through if a higher-priority rule fully owns that same parameter.

Clips are reusable assets. A clip can be triggered by many rules or many base behaviors.

Runtime priority does not belong to the clip asset anymore.
Priority is owned by:

  • the Rule
  • the Base Behavior

If you see legacy references to “clip priority”, treat them as old terminology.

  • Add Clip for manual authoring
  • Create From Expression to import .exp3.json
  • Import Motion As Clip to convert .motion3.json
  • Template for common setups such as gaze wander or breathing
  • parameter tracks
  • keyframes
  • playback mode
  • end behavior
  • release configuration
  • per-track blend modes
  • per-track modifiers
ModeUse it for
One Shotreactions, gestures, short expression changes
Loopsustained states like speaking cycles or ambient motion
Repeat Nexact counts such as double nods or triple blinks

Clips also define:

  • whether they are bound to trigger duration or should complete even if the trigger ends
  • whether tracks should stop immediately or hold then release
  • how long the release should take

Every clip is really a set of parameter tracks.

Blend mode is a track-level choice:

ModeBehaviorTypical use
Overrideclaims ownership of the parameterexpression poses, action poses, “freeze head” clips
Addlayers an offset on topbreathing, sway, accent motion
Multiplyscales the current valuespecial effects, amplitude shaping

Use Add only for motion that should genuinely layer. If the motion must stop whenever a stronger clip takes control, use Override at the right priority tier instead.

Modifiers run on top of keyframe interpolation:

keyframed value -> modifier chain -> final track write

Current modifier types:

  • Wiggle
  • Drift
  • Sine
  • Pulse
  • Spring
  • Loop
  • Noise
  • Clamp

Use Mod ON/OFF in the inspector to preview the raw keyframes versus the final procedurally modified result.

The virtual parameters:

  • __focus_x__
  • __focus_y__

can be animated just like normal tracks and are ideal for gaze wander clips.

Rules connect runtime state to clips.

Current rule conditions can match:

  • emotion
  • action
  • tool call
  • text
  • thinking
  • idle

For text-triggered rules, the runtime can distinguish between message text and thinking text. Use the Sequence Tester to validate that path instead of guessing.

AnySoul uses all-match playback:

  • every satisfied rule fires
  • each rule can play multiple clip groups in parallel
  • multiple rules can be active at the same time

This is why good parameter ownership matters.

A rule owns:

  • priority (0 idle, 1 normal, 2 emotion, 3 force)
  • one or more clip groups
  • each group’s selection mode
  • each group’s weight
  • each group’s timeScale

Clip groups are how one rule chooses clip variants.

  • groups play in parallel with each other
  • inside a group, selection can be random or sequential
  • each group can scale its playback strength with weight
  • each group can speed up or slow down with timeScale

Base Behaviors are the current answer for long-lived ambient playback.

Each base behavior belongs to one scope:

  • Idle Base
  • Active Base

Only one scope is active at a time, depending on whether non-idle rules are currently matched.

Base behaviors can schedule clips with:

  • Loop one clip
  • Pick one per idle session
  • Random playlist

They also expose:

  • cycle transition duration
  • handoff transition duration
  • scope transition duration
  • priority

If your model has a bundled legacy idle motion, you can optionally let it participate in idle-base playback. This is configured in the Rules area, not in clip authoring.

The Sequence Tester is the best way to validate real playback behavior without waiting for live chat output.

Use it to simulate:

  • emotion
  • action
  • tool call
  • text
  • thinking
  • explicit idle steps

It shows the current runtime interpretation, including:

  • current state
  • current base scope
  • whether the current frame is base only or base + rule overlay
  • which rules matched
  • which base behaviors matched

While a sequence is running, the inspector also shows Parameter Control so you can see which writer currently owns a parameter and which writers are suppressed.

In the inspector, Preview Base changes what the preview clip is evaluated against:

ModeMeaning
Baselineclip/rule against only the authored neutral pose
Idle Basepreview on top of idle-scope base behaviors
Active Basepreview on top of active-scope base behaviors

Use this constantly when tuning subtle overlays.

  • Put breathing, sway, and gaze wander in Base Behaviors, not ordinary rules.
  • Put reactions and explicit state poses in Rules.
  • Use Override for parameters that must not inherit lower-priority motion.
  • Use Add for secondary motion that should survive same-tier layering.
  • If a pose looks correct in isolation but wrong in runtime, check:
    • rule priority
    • base-behavior priority
    • track blend mode
    • preview base mode
    • parameter-control inspector