約半年ぶりに、真面目にいうと2年ぶりくらいに作ったら色々変わっていたのでメモ。
おそらくそのうち役に立たなくなる。
使用するもの
- VRChat Creator Companion 以下VCC
- ModularAvatar 以下 MA
- FaceEmo 以下 FaceEmo
環境
- VRReadyのPC
- Quest2 Air Link
環境を整える
- VCCをインストールする。
- Unity ダウンロードアーカイブから指定のエディターをインストールする。Unity Hubからだと失敗する。
- VCCで新規プロジェクトを作成する。
- MAとFaceEmo、GestureManagerとAv3Emulatorをプロジェクトに追加する。
- VRChatアカウントにログインする。
アバターをセットアップする
アバターのボーンについて
全部受け売りです。
赤字部分
青字部分
緑字部分 参考にしたツイートを見失った……
ピンク字部分 特に参考にしているものはないはず……
ちなみにベースはVRM Addon for Blenderで作れるHumanoidボーンです。
おすすめBlenderExtensions
すべて4.2で確認済み
- VRM Addon for Blender
Unityに持っていく人形モデルを作るときはいれると楽。 - Mio3Shapekey
同じコレクション内の同じシェイプキーを持つモデルのシェイプキーを同期して操作できる - ShapeKeysUtil
シェイプキーを持つメッシュにモディファイアーを適用できる
また、シェイプキーを左右別々にできる。ウィンクを作るときなど。 - CATS Blender Plugin
非公式4.2対応版。わかりにくいVRChatの口パクシェイプキーを自動生成してくれる。
とりあえず基本的な設定をする
- FBXとテクスチャをUnityに読み込む
- お好きなシェーダーを読み込む。今回はliltoonを使うのでそれを前提に話す。
- マテリアルをExtractし、RigをHumanoidにする。
この際Hipを靴底など分の高さ上げておくとVRChatに持っていった時に埋まらない。 - Hierarchyに配置し、配置したモデルを右クリックしてUnpackCompletelyする。
- Materialの調整をする。liltoonの場合はモデルを右クリックしてFix lightingをする。
- Add ComponentでAvatarDescripterを追加
- ViewPositionを設定
- LipSyncとEyelidを設定する。
ひとまず最低限これだけでアップロードできます。
オフラインでテストしてからアップロードしてみましょう。
表情をセットアップする。
FaceEmoの公式ドキュメントを読んでください。
これは投げやりとかではなく、そっちのほうが最新情報がまとまっているので……
目線コントロールシェイプキーアニメーションを作る
- 目線コントロールシェイプキーをFaceEmoの除外シェイプキーに設定します。
- 目線を左右に動かすアニメーションと上下に動かすアニメーション、そしてそれらのシェイプキーを0にするアニメーションを作成する。
- 左右に動かす場合は0フレーム目をアバターから見て左向き、1フレーム目を右向きにする。
- 上下に動かす場合は0フレーム目を上向き、1フレーム目を下向きにする。
- 作ったアニメーションはInspectorからLoop Timeを切ること。
- Projectウィンドウで右クリック→Create→VRChat→AvatarsでExpression MenuとExpression Parametersをどちらも作成。Expression Menuはメインメニューと目線コントロール用で二個作り、一個目は名前を変えず、二個目はEyeControllにする。
- Parametersに
EyeMoveLR
とEyeMoveUD
とEyeMoveON
を作成する。
EyeMoveLRとEyeMoveUDはFloatでデフォルト0.5、EyeMoveONはboolでFalseにする。
- 名前を変えなかった方のExpressionMenuに以下の設定をする。
- EyeControllに以下の設定をする。
- Projectウィンドウで右クリック→Create→Animtation Controllerを作成する。名前はFXLayerにする。
- FXLayerのパラメーターに4で作ったパラメーターと同じものを設定する。
- FXLayerにEyeMoveLRレイヤーとEyeMoveUDレイヤーを作成する。忘れずに歯車をクリックし、Weightを1にすること。
- リセットアニメーションを追加し、次に視線コントロールアニメーションを追加。
1. リセットアニメーションを右クリックしてMake Transitionで視線コントロールアニメーションに接続。
2. 作られた線をクリックし、ConditionでEyeMoveONがTrueの場合視線コントロールアニメーションを追加。
3. 視線コントロールアニメーションを右クリックしてMakeTransitionで視線コントロールアニメーションに接続。同様にConditionでMoveONがFalseの場合はリセットアニメーションに遷移するようにすること。
4. これを左右分と上下分作成する。
- 視線コントロールアニメーションのMotion Timeに対応したパラメーターをセット。
- Avatar DescriptorのPlayableLayersにFXLayerを追加。ExpressionsにVRCExpressionsMenu、ParametersにVRCExpressionParametersを追加
- ToolsからGesture Manager Emulatorを追加してシーンを再生してテスト。
無事に動いていたら完成です。
動かない場合
- 除外シェイプキーに入ってるか確認してからFaceEmoPrefabを削除し、FaceEmoを再度適用する。
- パラメーターの名前や型が合っているか確認する。
揺れモノをセットアップする。
特に書くことないので意識していることだけ。
- 長くない揺れモノはコライダーではなくLimitsで制限する。
- コライダーは大きめに設定する。
- 同ボーンを親とする揺れモノボーンは特別なことがなければ空のGameObjectを作成しその子にしてから揺れモノ設定をする。
これでとりあえずアバターをアップロードすることはできると思います。
ギミックとかは作るタイプではないので詳しい人にお願いします。
おすすめアバターギミック(無料)
VRChat内で簡単に視線の向きを設定できる。設定は簡単ではない。
VRChat内で座ったときの位置を変更できる。助かる。
Constraint使う系のギミックが動かないとき
大体.animファイル内のボーンの階層の問題なので、
- .animファイルをVSCodeで開く
- Pathを書き換える
でどうにかしてください。
おすすめエディター拡張
参考にした解説記事
アバターに使用されているテクスチャのVRAMとかを見れるようになる。昨今のVRChatはVRAMの最適化が重要なので必須
様々な環境下でアバターがどう表示されるのか確認できる。
アバターをBlenderなどで編集して更新したい際に。
Avatar 3.0 Emulator
VRC Gesture Manager
VRChatを起動しなくてもギミックの動作確認がある程度できます。
(QuestTools使うと高確率でアバターぶっ壊れるのはなんでだろう……)
おまけ
BlendShapeNormalsはImportにしよう
BlendShapeNormalsはImportにしよう!!!!!!!!!!!!!!!!!!!!!!!!!!!!
間違ってもNoneやCalculateにしてはいけません。顔がぐっちゃぐちゃになります。
Quest対応について
QuestTools使うと何故かアバターが高確率でぶっ壊れるので全手動でやってます。今のところ遭遇したQuestやPico4単機勢には見えると評判。
意識するのは
- 見える場所以外は全部削除
- サブディビをPCより一部低くして出力
- 顔周りはポリゴン多め、それ以外は少なめ
- 裏面表示・透過表示はできないので適宜厚み付け使ったり諦めたりする
です。
PCは大体58000Tris、Questは30000Trisちょい超えです。それでもQuestで表示されるのでまぁまぁ。
ランクはPCがMedium、QuestがOverPoorです。
QuestでPCと同じ挙動はできないと思ってるので、そこら辺も意識して諦めてます。必要なのは諦めの心。
FaceEmo使うとQuestとPCで同じ表情を見せられるのはいいですね。便利な世の中だぜ。
モデルだけ差し替えたい。
何度かモデルをインポートし直さなきゃいけない場面が出てきます。ボーンの調整とか。
その場合はUnityを閉じてプロジェクトフォルダをファイルエクスプローラーで開き、モデルのfbxだけ差し替えます。
その後何かしらの理由でコンポーネントだけ移植したいときはCopyComponentsByRegexを使うとめちゃくちゃ楽です。これがないともうやってけないぜ……