【VRoid】VRC用アバター作成時の気づき

VRoidでVRC用のアバター作る中で気づいたメモなど。
VRoid関係ない内容もある。
VRoid Studio 2.1.5
Unity 2022.3.22f1
Blender 4.4.3

GestureManagerのToolsタブ>TestAnimationで任意のアニメーションファイル指定すれば、Playモードでそのアニメーションしてくれる。
Controller不要。

ToonLitとToonStandardの比較

.animファイルのモーションをBlenderで改変したときの手順(絶対間違ってる)
- UnityでアバターのAnimationコンポーネントに改変したいモーションを設定
- Unity Recoderのアドオンでモーションを録画(Window>General>RecorderでRecorderのウィンドウを表示、StartとStopで録画する)
- 録画するとFBXファイルがAssets/Recorderファイルに生成されるので、それをhierarchyに置く
- 置いたやつを別のFBXファイルに出力する。この時出力モードをBinaryにする
- 出力したやつをBlenderに読み込む。だいたい化け物が出力されてしまうので、ボーンだけ残していらないものは消す
- BlenderにUnityで読み込んでたアバターを読み込む
- 5で読み込んだやつをPoseモードにして、Aキーでボーンを全選択してCtrl+Cでコピー(5で読み込んだやつのボーンはColider階層に入ってる)
- 6で読み込んだやつををPoseモードにしてAキーでボーンを全選択、Ctrl+Vで貼り付け
- これでアバターがポーズをとってくれるようになるので、そこからポーズモードでいじくる。

UnityでPhyBoneを統合する方法 Android用アバターのボーン減らすの忘れてたのでやる

VRCアバター用の帽子やアクセサリー(Vroid用ではないやつ)を付けるならBlenderではなくUnityがよさそう。
BlenderだとFBXに書き出したときなぜかオブジェクトではなくボーン扱いになってしまった。
今回は帽子をかぶせるにあたり髪のメッシュの調整をしたかったので、以下のように作業した。
- Blenderで帽子を装着。サイズも調整する
- 髪のメッシュを調整
- 帽子以外をFBXに書き出し(帽子はアバターと親子関係になってないほうがいいかも?)
- 帽子だけをFBXに書き出し
- 帽子以外と帽子を両方Unityに読み込む。座標変えてなければ読み込んだ時点で装着してる見た目になるはず)
- 帽子にMA PloxyコンポーネントつけてHeadのボーンに追従させる
メッシュの調整がいらなければ最初からUnityでいい。
服とかはXWear使った方がいい?MAでもいけるらしい?

Blenderで作ったポーズ(アニメーション)をUnityに持って行ってVRCで使う手順
基本はこの手順
▼違うところ
- Animationウィンドウを開いたら「新規」で新しいアクション?を作って、その隣のシールドマークを押す(アクションリストにFのマークがついたらOK)
- Blender4.1以降はIキーではなくKキーでキーフレームを追加
- 出力時のアニメーションの設定で「NLAストリップ」と「全アクション」のチェックを外す(=Animationウィンドウで選択しているアクションが書き出される)

Unityでアニメーション再生中だけ特定のオブジェクト(持ち物とか)を表示する方法
(ChatGPTの回答)
- 表示/非表示させたいオブジェクト(例:エフェクト、アイテムなど)をHierarchyのアバターの下階層に設置。非表示にしておく。
- アイテムを追加するアニメーションのControllerを作成する
- アバターのAnimationコンポーネントに2で作ったコントローラーを設定する
- 該当のアニメーションを選択し、Animationウィンドウを開く
- アニメーションを編集する対象オブジェクトを選択し、Animationウィンドウで表示されている AnimationClip を選ぶ
- Add Property → 表示したいオブジェクト → GameObject > Is Active を追加
- 表示したいタイミングで「チェックON」=非表示にしたいタイミングで「チェックOFF」に設定(キーフレームを打つ)
- 再生して動作確認
→ アニメーションのあるタイミングでオブジェクトが表示・非表示されます。
アイテムの位置調整は、Playモード中に調整して、そのTransformコンポーネントの値をコピーすればいい
アニメーションの最後にアイテムを非表示にするキーを打たないと、アバターを変えない限りアイテムが非表示にならない。

VRoidアバターにVRChat用アバターの衣装をUnityで着せる方法
- 衣装を非表示にした素体を用意する
- XWearで素体だけXAvatar形式で書き出す
- モデルのXAvatarと衣装をUnityに読み込んでHierarchyに設置
- Hierarchyのモデルの配下に衣装を入れてModulerAvatar実行
- 衣装がフィッティングしない場合は、衣装のArmature側についているMA Merge Armatureコンポーネントの「位置を元にアバターに合わせてリセット」を開いて実行すればOK
衣装のサイズとかはキセテネで事前に調整しておく。
まぁこんなことするならXWearで着せた方がいいけどね。今回は衣装がAポーズでXWearが使えなかったので…
※補足:XWear通さないといけない理由
普通にVRMで書き出すとUpperChestというボーンがVRoidアバターにある。衣装側にはこれがないようで、そのためにModulerAvatarが使えない。
XWearは書き出すときにUpperChestを削除するオプションがあるのでできる。
ちなみに下記の方法はうまくいかなかった。

ModulerAvatar適応後の衣装をxwear形式で書き出してXWearに持っていくこともできる。
キセテネやUnityでやるよりXWearの方が調整しやすいし…

VRoidにVRoid以外の衣装着せるなら、これが最強
ちょっとメッシュはみ出たところはこれで調整すると良い