Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自作ソフト(VMagicMirror)がVRMA対応してる話+実装のTips

 自作ソフト(VMagicMirror)がVRMA対応してる話+実装のTips

Baku_Dreameater

March 21, 2024
Tweet

More Decks by Baku_Dreameater

Other Decks in Programming

Transcript

  1. /15 目次 • アプリケーション紹介: VMagicMirror • VRM Animationの前: 自前定義 •

    Unity + UniVRMでVRMA対応を実装 • 基本編 • 応用編 • ついで: AnimationClip→VRMA変換 3
  2. /15 VRM Animationの前: 自前定義 独自フォーマット & 自前のセーブ + ロード実装 ・自前実装がそもそも多い

    ・データ設計がイケてるか自信がない ・第三者がファイルを配布しにくい ・ 個人開発者として悩ましい → VRM Animationに移行判断 専用ファイル (.vmm_motion) 変換用コード 自作ソフト Help: https://malaybaku.github.io/VMagicMirror/tips/use_custom_motion/ GitHub: https://github.com/malaybaku/VMagicMirror_MotionExporter ファイル 自作コード 元データ (AnimationClip) 変換用Project セーブ ロード+再生 6
  3. /15 Unity + UniVRMでVRMA対応を実装(応用編) 実は一つのAPIで解決する public static class Vrm10Retarget {

    public static void Retarget( (INormalizedPoseProvider Pose, ITPoseProvider TPose) source, (INormalizedPoseApplicable Pose, ITPoseProvider TPose) sink ); } 11
  4. /15 Unity + UniVRMでVRMA対応を実装(応用編) 呼び出し方 // ↓基本編で使ってるのと同じ変数 Vrm10Runtime runtime; Vrm10AnimationInstance

    vrma; // こう呼ぶと、再生中のVRMAの現在の姿勢がVRMに書き込まれる Vrm10Retarget.Retarget( vrma.ControlRig, (runtime.ControlRig, runtime.ControlRig) ); 12
  5. /15 Unity + UniVRMでVRMA対応を実装(応用編) ・ボーンの更新タイミングを自前で調整 → Retarget()を呼んだ時点で更新される ・複数のVRM Animationをブレンド →

    Retarget()を2回呼んで補間すればOK Retarget Retarget 1つ目のVRMA 2つ目のVRMA VRM + → → → VRMのボーン姿勢を取得 VRMのボーン姿勢を取得 → ↓ 2つの姿勢どうしを補間 13