2022年11月20日日曜日

VRChatアバター製作(改変)でつまづいた点

お久しぶりです(3年ぶり)。就職したfuesです。
2020年にVRChatにハマり、オリジナルアバター等作っていました。
しばらくVRChatは離れていたのですが、今回初めてVRChatのアバター改変とQuest対応を行ったのでつまづいた点をまとめました。

Unity初心者のため間違いなどあるかもしれません・・・

環境

  • Unity 2019.4.31f1
  • VRCSDK3-AVATAR-2022.10.27.00.35_Public
  • 改変元アバター:Avatar_Akyo2022
  • 確認日:2022/11/20

Parent Constraintを設定した小物の不具合

アバターに小物を持たせたり、体の別の部位にくっつけたりしたい場合はParent Constraintを使用して場所を移動させる方法を用いると思います。

解説記事などを見ると移動させる小物はアバターの直下(①の位置)に置き、Parent Constraintを設定する…とありますが、この場合色々不具合が起こりました。

結論から言うと対策は
Parent Constraintを設定した小物は一番親のBoneの直下(②)に置く
ことです
アバター
├─小物←①この場合PhysBone不具合
└─Armature 
    └─一番親のBone
        ├─小物←②この場合正常
        └─(省略)
            ├─(省略)
            │  └─頭
            │      └─頭の位置用Object
            │          └─小物←③この場合自分から見えなくなる
            └─(省略)
                └─右手
                    └─右手の位置用Object
小物(suama)の設定

①の場合:PhysBoneを設定した小物が小刻みに震える・揺れが不自然

PhysBoneを設定しない場合は問題ないが、アニメーションなしでも発生しました。また、Parent Constraintを用いないで直接問題の場所に小物を置いた場合は現象は発生しませんでした。

③の場合:小物が自分から見えない(鏡越し・カメラ越しには見える)

Quest対応アバターではParent Constraintが使えないため、
Parent Constraintを切っても小物が頭の位置に来るように小物の位置を頭(③の位置)にしようとしたところ、小物が自分から見えない(鏡越し・カメラ越しには見える)現象が発生しました。この場合も小物の位置を②にすると直りました。

ツリーの中での位置が変わるとアニメーションファイルも変更しないといけないため、QuestとPCで2つづつアニメーションファイルを用意しないといけないのめんどくさい・・・

Build & Testでアバターが更新されない

VRCSDKのBuild & Testボタン
アバターを毎回アップロードするのは非効率なのでBuild & Testボタンからアップロードせずアバターの確認ができるっぽい機能なのですが、VRChatを起動したままだとアバターが更新されないようです。
結局毎回アップロードしないといけないじゃん・・・



感想として「Unityめんどくせぇ・・・」大まかな設定を共通にして細かい処理をPCとQuestで分けたい場合になんかいい方法はないんでしょうかね・・・
エディタ拡張作るしかないんだろうか・・・