キメラアバターの作り方

2024 年 5 月 31 日現在最新の Unity 2022.3.22f1 + Modular Avatar を活用したキメラアバターの作り方。
多分この方法が一番楽だと思います。
画像が小さくて見づらいときは 右クリック新しいタブで画像を開く でいい感じに見てください。Hexo がわるい。

やり方

シェーダーは lilToon 想定。 lilToon 以外の場合はわからないので lilToon にするか自力でがんばって。

必要なもの

全部 VCC とか ALCOM で取り寄せられるはず。リポジトリの追加は自分でググって。

  • Unity 2022.3.22f1
    • 必須。2024 年 5 月 31 日現在最新の VRChat 用 Unity。
  • Anatawa12’s Avatar Optimizer
    • 任意。アバターの最適化に使う。
  • Gesture Manager
    • 必須。テストに使う。
  • Modular Avatar
    • 必須。これがないとこの記事は成立しない。
  • 頭用アバターと素体用アバター
    • 今回は頭にカリン、素体に桔梗
      大体なんでもいいけどあまりにバランスが崩れてたり、ヒト型とそうでないアバターの組み合わせはやめたほうがいい。

手順

プロジェクトを作成、必要なものをインポート

通常通り VCC や ALCOM でプロジェクトを作成し、上記「必要なもの」と追加でアバター用のシェーダーなどをインポート。
Unity を起動したら SDK にログインしたりアバターをインポート。

ヒエラルキーに並べ、サイズを自動調整

頭用アバターと素体用アバターの Prefab を並べ、どちらも Unpack。
Unity を日本語にしてる場合は上の方の プレハブすべてを展開 で。

次に頭用の Armature の Scale を、頭頂部の高さが素体用と一致するように調整。
XYZ 全て同じ値にすると後々楽。まとめて変更するボタンがあるのでそれを使うとよい。

ついでに頭用・素体用両方で不要となる GameObject をInspector から無効化 + Tag を EditorOnly にセットしておく[1]
頭用は髪、素体用は顔と髪 (+ 必要に応じてケモ耳とか尻尾) ぐらいじゃね?

頭頂部の高さが合ったらあとはお好みで調整。
私は鼻先に奥行きを合わせた後、Scale 調整と Y 軸調整で鼻先と顎の高さがおおよそ合うように調整したのち、
奥行きを髪の襟足が首に貫通しないぐらいまで戻している。

調整が終わったら素体用の顔とか諸々を上と同じ手順で無効化。

素体テクスチャの色調整

頭テクスチャの色味と素体テクスチャの色味が大きく離れてるなら必須。そうでない (パット見近いぐらい) ならまぁいらないんじゃね、好みで。
シェーダーが lilToon なら簡単だけど、UTS とか Poiyomi とかはわからん。PSD 編集してテクスチャ上書きとかが楽なんかね。

素体オブジェクトのマテリアルを開き、 メインカラー / 透過設定 (色替え) を開き、
色相やら彩度やら弄って顔の影と首付根影の色味がおおよそ一致するように調整。
シーンライティングを無効化しておかないと影のせいで分かりづらくなるので要注意。

調整が終わったら 焼き込み
輪郭線とかにもテクスチャくっついてることが多いので忘れずに焼き込み後のテクスチャに差し替える。

ちゃんと全部置き換えられたか不安なら lilAvatarUtils とかで確認。

影設定を調整

素体の影マテリアル設定を顔のマテリアルにコピーするだけ。
素体側の顔マテリアルに影設定が存在しないか、あるいは顔マスクと併用してるなら素体・顔共に影を無効化。 [2]
マスク画像作るのだるいんじゃ。

素体オブジェクトのマテリアルを開き、 影設定 の横にある歯車をクリックし、 コピー をクリック。

次に顔オブジェクトのマテリアルを開き、 影設定 の横にある歯車をクリックし、 貼り付け をクリック。

シーンライティングをオンにして色味が素体と揃っていれば完了。

輪郭線設定を調整

顔か素体どっちかの「マスクと太さ」と「色」を統一するだけでいい。
もしどっちかにテクスチャがセットされてるならそれに倣ってセットされてないほうもいい感じにテクスチャセットすればいい…はず。

カリン・桔梗の場合、桔梗はテクスチャに素体テクスチャそのままセットされているが、カリンはテクスチャがない。
桔梗から輪郭線設定をコピペした後、輪郭線テクスチャに顔テクスチャセットしておわり。
コピペ手順は影と同様。違いは 影設定 ではなく、少し下にある 輪郭線設定 を使うことぐらいか。

不要なボーンを無効化

そのまんま。頭側の足とか腕辺りのボーンは無効化していい。[3]
尻尾とかも残さないなら Armature > Hips > Spine > Chect > Neck > Head... の階層構造ができればいいと思う。
自分がどうしたいかによっていい感じに。めんどくさいなら触れなければ後で AAO をアタッチしておけばよいはず。

合成

頭側アバターをそのまま素体の中に入れて 右クリックModular AvatarSetup Outfit
普通に服を MA で着せるのと同じ要領で OK。

ライティング統一

アバターを 右クリックlilToon[GameObject] Fix lighting でライティングを統一。

アニメーションを修正

FX レイヤーを開いて使えないレイヤーとパラメーターを削除。
カリン・桔梗の場合、顔パーツ系レイヤーと帽子切り替えレイヤーとパラメーターを削除。
実際に作業するアバターの組み合わせで適宜判断。

表情は今のままだとまともに動かない。 Left Hand , Right Hand レイヤーの表情ステートのアニメーションを顔側アバターのものに変更。
BlendTree が使われている場合もいい感じにアニメーション差し替えで。
FaceEmo などの表情編集ツールが使えるならそれを使ってもいいんじゃないかなあ。どちらにせよ少し面倒だが。

アニメーションパスを修正

アニメーションのパスが素体側のものを参照しているため、頭側に合わせて修正する必要がある。
表情用レイヤーの中の適当なステートをクリックし、割り当てられてるアニメーションをクリックすると、
プロジェクトウィンドウの方でそのアニメーションファイルが選択される。

選択されたアニメーションを 右クリックShow in Explorer でファイルの位置でエクスプローラーが開かれるので、メモ帳とかでアニメーションファイルを開く。

適当なテキストエディタでアニメーションファイルを開いて、素体側のパスを頭側のものに書き換える。
Ctrl+H で path: Bodypath: Karin/Body に書き換え。Karinは頭アバターの名前に合わせて変更。

これをセットしているアニメーションの分だけ繰り返す。ここが一番めんどくさい。

Viseme, Eye Movement を修正

Avatar Descriptor の真ん中ぐらいにある LipSyncFace Mesh を頭アバターの顔メッシュ (Body) に差し替えたあと、
vrc.v_ から始まる Viseme シェイプキー を手動で選択。

LipSync からちょっと下にある Eye Look の折りたたみの中にある EyelidsEyelids Mesh を LipSync 同様頭アバターの顔メッシュに差し替え、
Blink (まばたき), Looking Up (上を見る), Looking Down (下を見る) に対応したシェイプキーを手動で選択。

少し上にある Left, Right Eye Bone も頭アバターのものに差し替える。

Gesture Manager でテスト

上ツールバーから ToolsGesture Manager Emulator をクリックし、ヒエラルキーに出てきた GestureManager を選択。
インスペクターにある Enter Play-Mode ボタンを押してテスト。

表情が正しく変われば完了。
もしここで表情が変わらないなら何かを間違えている。FX レイヤーを再確認。

(任意) Avatar Optimizer をアタッチ

VCC から AAO: AvatarOptimizer をインポートしてる人はアバターに AAO Trace And Optimize をアタッチ。
チェックボックス等は触らなくてOK

適当に Prefab 化しアップロード

適当なディレクトリに Prefab をドラッグして Prefab 化。
その後 VRCSDK から通常の手順でアップロードすれば完了。
後は普通のアバターと同じように改変できるはず。

  1. 別に Delete しても構わないが、やっぱ戻したくなったときにクソ面倒なので非破壊的に破壊。
  2. 影が消えることにより「それっぽさ」は失われるが、Unlit 的な挙動になるわけではないのでそこは安心。
  3. 当然だがボーンも Delete したらめんどくさくなるので無効化。ボーンは消してしまったときのリカバリが相当めんどい。

キメラアバターの作り方
https://assault1892.github.io/chimera-avatar/
著者
Assault1892
作成日
2024年5月31日
著作権