アインちゃんをMODOで編集してから、Unityに戻した場合に
VRC上で、一定周期で意図しないシェイプキーが暴発する問題に遭遇して、!?!??ってなってた...
最初はAnimator周りとか、シェイプキーの干渉とかかと思ってたけど、そうではなかった。
調べて行ったら、VRChatのアイトラ仕様とMODOのFBX Exportの仕様が合わさり、その現象を引き起こしていた模様
何が問題だったか?
オリジナルのFBXがこういうBlendshapeのソート順であったのに対し
MODOで吐いたFBXではこうなっていたのが原因
そもそものVRCでの仕様
VRCのシェイプキー定義順の仕様で、上から順に奨励値が存在していて、それを守らないとアイトラで暴発するらしい
(参考) https://jellyfish-qrage.hatenablog.com/entry/2018/07/25/034610
MODOの仕様
MODOでFBX吐いた場合に、VRCのIdleでいくつかのシェイプキーが暴発すると思ったら、この仕様で上から4つ目までのキーに意図しないシェイプキーが入ってしまってたからだった。。
— 月琴かりん (@karinharp) October 14, 2020
MODO側でシェイプキーを複製して、定義順に再生成するスクリプト書くかー https://t.co/nO4JpYIpjh
解決方法
MODOは最後に作ったものが一番上にキーとしてくる仕様。
そのため、干渉を回避するだけなら、最終工程でダミーのシェイプキーを4つ投げ込んでからFBXを吐けばよい。
アイトラ考えるなら、該当のアイトラ用のキーを複製して生成、生成後にリネームとかで。
もっと真面目にやるなら、MODO側のシェイプキーを別ファイルで定義した順に再生成するようなMODOのスクリプトを書いてしまうとよさそう。
補足
既存のモーフ値をコピー => ペーストすると、新しく生成しても上に来ないっぽい...(なぜだ。。