自作3DアバターをVRChatにアップロードしたときの備忘録

VRChat

これはいわゆるメモです。

内容について責任は持てませんし、バージョンが変われば直ることもあれば悪化することもあるかもしれません。
が、誰かの役に立ったら嬉しいな。

使用環境:Blender 3.6 (LTS)、Unity 2022.3.6f1、VRChat Creator Companion 2.2.4

※たまに更新されます

FBXをHumanoidの設定でUnityにインポートしたのに、VRChatにアップロードすると非Humanoidとして扱われる

  • FBXをインポートしたとき、Rigの設定で警告出てない?
  • ボーンの設定がおかしいとか、ボーンが足りないとかあるのでBlender側でなんとかする
  • アップロードするよりも前に、VRC Avatar Descriptorにnon Humanoidみたいな表示が出ていた気がするので、その時点でやり直すべきだと思うの

アバターをアップロードしようとしたらボーンが足りないみたいなこと言われた

  • 足りないって言われてるならそれはつまり足りないってことですよね
  • Unity的にはHumanoidのRigでOptionalとなっていても、VRChat的には必須とされているボーンがある。Neckとか…
  • ウワサによると、VRChatでは以下のボーンが必須
    • Head (あたま)
    • Neck (くび)
    • Chest (むね (バストではない))
    • Shoulder (L/R) (かた)
    • Upper Arm (L/R) (じょうわん)
    • Lower Arm (L/R) (ぜんわん)
    • Hand (L/R) (て)
    • Spine (せぼね)
    • Hips (しり)
    • Upper Leg (L/R) (ふともも)
    • Lower Leg (L/R) (すね)
    • Foot (L/R) (あし)
  • 実はボーンが存在してちゃんと接続されていればOKのようなので、使わない部位はウェイトを持たせないようにすれば、腕や脚が見た目上存在しないモデルも作れるはず (実際にHandは存在しているけど使ってないモデルを作った)
  • でもHandやFootはオブジェクトを触るときや床に乗るときの基準になりそうなので、ちゃんとしたところにつけておいた方が無難

ボーンが足りない箇所にボーンを追加したいけどどうやれば…

  • すでにボーンがあるならば、ボーンを選択して細分化すれば分割できる
  • ボーンの名称や、頂点グループが設定されているのなら、その再設定を忘れずに
  • ちゃんと動くかポーズモードで確認するとよい

Blenderではちゃんと描画されているのに、UnityやVRChat上ではきちんと描画されないメッシュがある

  • もしかしてメッシュが裏返ってない?
  • Blenderでオーバーレイメニューから「面の向き」にチェックを入れると、表向きは青、裏向きは赤で表示されるので、そこで確認できる
  • 該当のメッシュが赤くなっている場合は、編集モードで該当のメッシュを選択し、「メッシュ」→「ノーマル」→「反転」を選ぶと直せる

ウェイトの指定が抜けてるぞみたいなこと言われた

  • どの頂点グループにも割り当てられていない頂点が存在すると言われる気がする
  • 腕とかいろんな部位を動かしたとき、頂点グループが設定されていないと、そこだけその場に置いていかれるので崩れてしまう
  • 頂点グループを設定するとき、透過表示にするのを忘れて範囲選択したときなどに起こりがち
  • Blenderでポーズモードにして、警告のあった部位を動かしてみて、動いてない部位がないか確認して、正しい頂点グループを設定してあげればよい
  • それでもどこなのかわからなければ、いちどアップロードしてみて、自分で動いてみるといいかも

アバターをVRChatにアップロードしたら、身長の表示は正しいのに、東京スカイツリーみたいな天まで届く描画がされてしまう

  • たぶんスケールがおかしい
  • BlenderでFBXをエクスポートする際、”トランスフォーム”→”スケールを適用”を「すべてFBX」にすると解決する
  • BlenderからFBXをエクスポートする手順を載せているサイト/ブログによって、この辺の項目が異なっていたりすることがあるので、できる限り最新または自分の環境に合っている情報を採用しよう

アバターをVRChatにアップロードしたら、顔が真上を向いていたりと身体の方向があちこちおかしい

  • どうやらBlenderとUnityで座標軸の扱いが違う事から発生する互換性の問題らしい
  • Unity側でメッシュを選択した際に、回転に90に近い数値が入っていたら影響を受けている
  • BlenderでFBXをエクスポートする際、”トランスフォーム”→”トランスフォームを適用”をオンにすると解決する
  • ただし、”トランスフォームを適用”は実験的な機能のため、アーマチュアやアニメーションが壊れることがあるらしい。そうなってしまった場合は”トランスフォームを適用”をせず、あらかじめBlender内でモデルを回転させておくといいらしい。手順はよそのサイト見てね

アバターをVRChat (VRモード) で見たときに、腕の方向が実際に伸ばしている方向と違う/前ならえしてるみたいになってしまう

  • View Positionの設定がおかしいと思われる
  • VRChatは腕の長さから相対的に視点の位置を推定しているらしく、そこからズレた位置にView Positionがあると、腕(というか肩?)の位置がその分だけズレてしまうというウワサがある。そのズレた位置からコントローラーの位置で腕のポーズを推定するため、前ならえしてるみたいになってしまうみたい
  • なので多分、前後位置が合っているけど高すぎる/低すぎる場合はバンザイになったり気をつけになったりしそう。もし前ならえに角度がついているのなら、その分だけView Posotionの高さも気にした方がよさそう
  • View Positionは目と目の間に設定するのが望ましいらしいが、それは人間アバターだけのおはなし。手足が短い、頭でっかちのマスコットや動物などのアバターでは、顔の内側や口の奥あたりに設定するとうまくいくケースが多いみたい。「手の長さに対して、標準的な人間だったらどこに顔があるかな?」を想像しながら置いてみるといいかも
  • Face Mirrorや表情加工のワールドギミックはまともに使えなくなるのであきらめよう

View Positionを頭の中に設定したら、頭の中に仕込んでいる口とか表情とかが見えてしまう

  • 仕様
  • でも実は、Headボーンよりも下の階層に本体のメッシュがあると、頭の中にあるものが不可視になる不可思議な仕様もあるらしい……
  • 自分が試したときは、ハンドジェスチャで表情を変える設定を入れたところ、リップシンクが動かなくなる原因不明の不具合 (または逆にリップシンクだけ効いて表情が動かない不具合) があり、試行錯誤してたらいつの間にか直った奇病も…

Phys Boneを設定したマントやらスカートやらが貫通しちゃうよ~

  • 貫通してしまう相手にPhys Bone Colliderをつけるとよい
  • Phys Bone Colliderをつけてもうまくいかないときは、Phys Bone Colliderの形をSphere以外の形にする (CapsuleとかPlaneとか) にしてみるとか、Phys BoneのほうのRadiusを少し増やしてみるとかするといいみたい

Phys Boneの動作確認は毎回VRChatにアップロードしなくちゃいけないの?

  • Unityで再生ボタンを押し、Scene画面でアバターのルートを選び、表示される三色の矢印を動かしたり青い四角を掴んでぶんぶんすれば確かめられる。特にマントやスカートが貫通しないかどうか確かめるのに便利。
  • 再生ボタンを押すと自動的にGame画面になってしまうので、その都度Scene画面に戻して試そう
  • 終わったら再生ボタンをもう一度押すと元のモードに戻る。その際、動かしたモデルも最初の位置に戻るので、遠慮無く振り回して動作を確認しよう

Androidでも揺れものを設定したいけど、PhysBoneは4つまでってキツくない?

  • PhysBoneは揺らしたい場所の根元のボーンに設定するものなので、揺らしたいものが複数あるのなら、共通の親を追加して、そいつにPhysBoneを設定すると節約できる
  • でも子が多すぎるとそれはそれで別の制限があるので、あまりたくさんボーンを置かないのが吉

小物を持たせたいけど、Androidだと2つ持たせただけで、問答無用でPoorになってしまう

  • メッシュが別 (マテリアルが別) のオブジェクトが複数あると、すぐにMediumとかPoorとかになってしまう
  • 別のメッシュ(オブジェクト)ではなく、シェイプキーで物を持たせるようにするとよい (マテリアルを統合したりする必要があるのでわりと面倒だけど)

アップロードしたアバターがどうなっているのか、いろんな視点や動きでテストがしたい

  • 協力してくれるフレンドがいるなら頼んでみるべし
  • アバターテスト用ワールドを使うのもアリ。自分はAvatar Testing Chamberを使用している。身長計、前後左右のカメラ、照明、落下モーション、ゴースト(?)、ダンスなどひととおり揃ってる。

おしまい

コメント

タイトルとURLをコピーしました