VRChat用にアバターを買ってBlenderでチョイチョイやって、Unityに持っていって問題なくVRCに持ち込むためのメモ

まぁこれに苦労してて、やっとまともにできるようになったぽいので自分用にメモを残しておく。

いきなり結論に行くと、Blenderへのインポートと、Blenderからのエクスポート、んでもってUnity側でのCopyComponentsByRegexを正しく使う、それだけ。3ステップだけだと覚えておくと楽。

Step1 BlenderへのFBX Import

買ったアバターについてくるであろうFBXファイルをBlenderにインポートする。ファイル→インポート→FBX

インポート時の設定は以下の画像のとおり。注意点は

・Pre/Post Rotationを使用にチェック
・リーフボーン無視にチェック
・プライマリY、セカンダリX(どうやら逆にしないといけないアバターもあるっぽいけど最近のはこれでOK)

Step2 Blenderでの作業。見やすくするためにテクスチャを入れる

BlenderにFBXをインポートするとテクスチャが付かない。FBXってテクスチャ入りのフォーマットもあるんちゃうんかいと思ったけどどうやらつかないのが正解っぽい? ので、作業しやすいようにTextureを手動で割り当てる。

こんな順で選んで、Textureフォルダからそれっぽいテクスチャを割り当てる。選択肢はあっても3つだから、だいじょうぶ。
全部割り当ててもなんか紫が残るんだけど・・・というときはこの赤枠のとこをチェック。1オブジェクトに複数のマテリアルが存在するとこうなるので、上から順にぜんぶ割り当てていけばおk
テクスチャ全部割当たった状態。これでBlender編集Ready!

みんながよくあるやりたい作業でいうと、髪型を微調整する、別オブジェクトになってないものを別オブジェクトにしてUnity(やらRadial Inventory)でオンオフしたい、など。とりまゾメちゃんの角を分離してみる。

こんな感じで下着と角が一体化しているので
裏面まで選べる状態にして、選択して、P押して分離。

こんな感じで分離完了。名前はCloth.001とかになっているのでHornとかに書き換え


シェイプキーが絡むメッシュを不用意にいじると爆発する。これだけ覚えておこう。

Step3 スケールの確認

スケールがXYZ全部1.0になっていることを確認。だいたいArmatureが0.01になっている。1.0になっていない場合はオブジェクトモードにしてALT+HしてからA押して全選択し、「Ctrl+A」で「スケール」を選ぶ。

これじゃダメ
これでおk

Step3 BlenderからのFBX Export

  • アーマチュアとメッシュだけ選んで
  • トランスフォームを適用をオン
  • リーフボーン追加はオフで
  • パスモードはコピー
  • スケールを適用は「すべてFBX」で

を忘れないように。これでおk

Step4 UnityへのインポートとCopyComponents by regex

Unityにはxxxx.fbxというファイルと、xxxx.fbmというフォルダをセットでインポート(Drag Drop)する。

アバターを買ったときに付いてきたPrefabをインポートしておき(ここではZome_VRC)、右クリックしてCopyComponents by regexを選ぶ。正規表現のところに VRC|Animator|pipeline|Cloth|Collider|Dynamic といれて、Copyを押す。

続いて新しくBlenderでEditしたFBX(ここではZome-Edited.fbx)をヒエラルキーに追加して、選択。んでCopyComponents by regexのウィンドウからPasteを選ぶ。

無事、ホーン(角)だけが別オブジェクトになっているのがわかる。

Step5 GenericからHumanoidアバターにする

ここで参照しているFBXファイルが古いままのはずなので…
新しい(Blenderでイジったほうの)FBXファイルの▶を押して開いてavatarマークをみつけて選択
右上のConfigure avatarを押して、Humanoidに変更してDoneする(画像とりそこねた)
よっこいしょっとDrag Dropして、反映。

Step6 Eyelid Mesh, LipSync Meshを入れ替え

Step4のCopyComponents by regexだけだと疑似アイトラッキングが動かず、LipSyncもしない。

ここをクリックして、新アバターじゃないほうを参照していたら、
新アバターにある「Face」メッシュと差し替える。

Step7 マテリアルの再割当て

何故か全部スタンダードシェーダーのマテリアルになってしまっているので、元あったマテリアルを当てなおす。以上!

もちろんBlenderでもっと細かいことやったらいいんだけど、とりあえずのFBX→Blender→Unity→VRChat関連色々のコピペ(CopyComponents by regex)のメモということで。