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

Animator As Code As JSON As Model

Animator As Code As JSON As Model

Animator As Code のコードを Rust から作るために JSON を Blender から吐く話です。まわりくどすぎるだろ

https://github.com/kb10uy/sk2aac

Yū Kobayashi

July 31, 2022
Tweet

More Decks by Yū Kobayashi

Other Decks in Programming

Transcript

  1. 自己紹介 (02:33:19) • kb10uy / 日下夏稀 • VRC-LT 登壇 2

    回目 • Rust や HLSL を書いたり、 オンゲキ15.7 や Arcaea11.6 をプレイしている ◦ どっちもデカいアプデとエンディングがやってきて大変 • Skeb 依頼納品数が 30 を超えた(今朝も納品された) • Pixel 6a を買った
  2. 僕のアバターセットアップについて (12:33:47) • 表情はハンドサインではなく Action Menu からパーツごとに調整可能なように設計 している • つまり

    Animator Controller のレイヤーが表情パーツ単位になる • 更に BlendShape 単位で Animation が生える • するとどうなる?
  3. どう考えても自動化できる (12:47:05) • BlendShape それぞれに対応する安全な名前の Animation を作る • Expression Parameter

    をパーツごとに割り当てる • Int/Bool に応じて Enter → Disabled → Enabled (No.*) → Exit という 流れの Animator Layer を作る • 助けて Haï えも~ん!
  4. Animator as Code (13:02:19) • Haï~ 氏による UnityEditor 拡張 •

    "Fluent" に Animator Controller などの 構成を記述できる • むしろ今までなんで使ってなかったんだよ と言われればそうなんだが……
  5. UnityEditor の C# コードを書きたくない (13:04:38) • UI パネルとか作るのを考えるとダルそうすぎてやりたくなかった • あと一旦

    BlendShape とパーツ名の対応の情報を書き出してもう一回 JSON か何 かで戻してあげる必要があるのも美しくない • 微妙に古い C# を書きたくない • さてどうしよう?
  6. そうだ! Blender 拡張だ! (13:07:07) • 改変をするときは毎回 Blender を経由している • ではその時点で

    Shape Key の情報を出力してあげればいいのではないか? • まあオブジェクトのコンテキストメニュー生やすぐらいだし簡単やろ(適当) • でも入力・生成部分で C# 書かなきゃいけないのは変わらなくない?
  7. そうだ! Rust だ! (13:08:35) • もはや Rust を書きたいだけでは? • Blender

    で出力した情報を Rust で書いた専用アプリに食わせる • 専用アプリから、「Animator as Code を使って Animator Controller を構築する C# コード」を吐かせる • UnityEditor C# と格闘しなくて済む!やったね!(本当かな?)
  8. Blender プラグインができました (15:26:20) • 選択したオブジェクトの Shape Keys をいい感じの構造 の JSON

    にしてログメッセージに出力する • もはやファイルに出力すらしない • アニメーション名やグループの編集だけは手動でやるし かない ◦ 何らかのヒューリスティックな補助は実装できるかも • あとはいい感じに階層構造を調整 • ちなみに顔のオブジェクトだけで数百行の JSON が生成 されます