コンテンツにスキップ

Live2D アニメーションとマッピング

このページは、AnySoul が現在使っている Live2D runtime に合わせて更新されています。再利用可能な clips、rule / base behavior が持つ priority、scope を持つ base behaviors、そして priority tier 単位のパラメータ仲裁が前提です。

今の構成は 3 層で考えると分かりやすいです。

  1. Clips: 再利用可能なアニメーション資産
  2. Rules: どの条件で clip を再生するか
  3. Base Behaviors: idle / active の背景レイヤーを長時間スケジュールするもの

これらは Full Editor を中心に author するのが現在の基本です。

実行時はおおむね次の順で解決されます。

  1. Parameters で作った中立ポーズ
  2. 必要であれば legacy idle motion
  3. 現在有効な base behavior scopeidle または active
  4. 現在一致している rules
  5. lip sync / focus dispatch

同一パラメータについて重要なのは次です。

  • まず priority tier で分ける
  • 高い tier が低い tier より先に解決される
  • 同じ tier 内では Multiply / Add を先に処理
  • その後 Override が残りウェイトを消費
  • 上位 tier のフルウェイト Override があると、下位 tier はそのパラメータに影響できない

つまり、低優先度の base noise が高優先度の「頭固定」rule に漏れてくるべきではありません。

Clip は再利用可能な資産です。1 つの clip を複数の rules や base behaviors から参照できます。

runtime の優先度は clip 資産のものではありません。
優先度を持つのは:

  • Rule
  • Base Behavior

古い資料にある “clip priority” は旧表現として見てください。

  • Add Clip で手動作成
  • Create From Expression.exp3.json を取り込む
  • Import Motion As Clip.motion3.json を取り込む
  • Template で定番パターンを生成
  • parameter tracks
  • keyframes
  • playback mode
  • end behavior
  • release 設定
  • 各 track の blend mode
  • 各 track の modifier
モード向いている用途
One Shot短いリアクションやジェスチャー
Loopspeaking cycle や ambient motion のような持続状態
Repeat N回数を正確に決めたい動き

Clip は次も定義します。

  • bound to trigger duration
  • complete even if trigger ends
  • track が stop するか hold then release するか
  • release にどれくらい時間を使うか

各 clip は実際には複数の parameter track の集まりです。

blend mode は track 単位 です。

モード挙動典型用途
Overrideそのパラメータを取りにいく表情姿勢、動作姿勢、「頭固定」など
Add既存結果へオフセットを加える呼吸、微揺れ、補助モーション
Multiply現在値を比率で変える特殊効果、振幅調整

本当に重ねたい動きだけを Add にしてください。より強い clip が来たら止まってほしい動きなら、適切な priority と Override で設計する方が自然です。

Modifier はキーフレーム補間後に値を加工します。

keyframed value -> modifier chain -> final track write

現在使えるタイプ:

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

inspector の Mod ON/OFF で、生の keyframe と modifier 込みの結果を切り替えて見比べられます。

仮想パラメータ:

  • __focus_x__
  • __focus_y__

は通常の track と同じようにアニメーションできます。視線の漂いを作るのに最適です。

Rules は runtime 状態を clips に接続します。

現在の rule 条件は次を扱えます。

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

text 条件では message text と thinking text を分けて検証できるので、推測ではなく Sequence Tester で確認するのが安全です。

AnySoul は all-match です。

  • 条件を満たすすべての rule が発火
  • 1 つの rule 内で複数 clip group を並列再生可能
  • 複数 rule も同時に有効になれる

そのため、パラメータ所有権の設計がとても重要です。

Rule 自身が持つのは:

  • priority0 idle1 normal2 emotion3 force
  • 1 つ以上の clip groups
  • 各 group の selection mode
  • 各 group の weight
  • 各 group の timeScale

clip group は clip 変体を選ぶ仕組みです。

  • group 同士は並列で再生
  • group 内部では random / sequential
  • weight で強さを調整
  • timeScale で速度を調整

Base Behaviors は、現在のシステムで長時間背景レイヤーを扱う標準手段です。

各 base behavior は 1 つの scope に属します。

  • Idle Base
  • Active Base

実行時にはどちらか 1 つの scope だけが有効です。非 idle rule が一致しているかどうかで切り替わります。

現在の base behavior mode:

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

さらに次も設定できます。

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

モデルに legacy idle motion がある場合、それを idle-base 再生に参加させることもできます。これは Rules 側で設定します。

Sequence Tester は runtime 挙動を確認する最短ルートです。

次の入力を順番に再生できます。

  • emotion
  • action
  • tool call
  • text
  • thinking
  • 明示的な idle step

ここでは次が確認できます。

  • 現在の state
  • 現在の base scope
  • base onlybase + rule overlay
  • 一致中の rules
  • 一致中の base behaviors

さらに sequence 再生中は inspector の Parameter Control で:

  • 今そのパラメータを誰が握っているか
  • どの writer が suppress されているか

を確認できます。

inspector の Preview Base では、clip / rule のプレビュー先を切り替えられます。

モード意味
Baselineauthored neutral pose の上だけで見る
Idle Baseidle-scope base behavior の上で見る
Active Baseactive-scope base behavior の上で見る

微妙な overlay を調整するときは非常に重要です。

  • 呼吸、視線の漂い、待機時の揺れは Base Behaviors に置く
  • リアクションや明確な状態姿勢は Rules に置く
  • 下位の動きを止めたいパラメータには Override を使う
  • 同じ tier でも自然に重ねたい補助運動には Add を使う
  • 単独プレビューでは正しいのに runtime で崩れるなら、まず:
    • rule priority
    • base behavior priority
    • track blend mode
    • preview base mode
    • parameter-control inspector