VRChatのフルトラ適正とVRoid正式版の話
※お知らせ
この記事の問題は、VRChatがIK2.0にアップデートされてからは起きなくなりました!
-------
どんな問題が起きている?
https://scrapbox.io/files/61ae34a49e123f001e9f9bd5.png
2021年12月現在、VRoid Studio正式版で作成したアバターを、VRChatのフルトラ(Full Body Tracking, FBT)で使おうとすると、上図左のように腰が横にねじれてしまう問題が起きることがあります。
対処法
結論から言うと、腰ねじれの解消に有効だったのは
Chestの位置を少し高くする
UpperArmの位置を少し低くする
UpperLegの位置を少し低くする
の3種類でした(3つ全部を行う必要はなく、どれか1つだけで有効です)。
少しというのはアバターによりますが、手元のアバターでは0.01程度で有効でした(もっと少なくても良いかもしれません)。
https://scrapbox.io/files/61ae4752382812001deb5d5f.png
ここからは推測ですが、
胸部の高さ (UpperArmとChestの高さの差)
上半身全体の高さ (UpperArmとUpperLegの高さの差)
の比率次第で問題が起きたり起きなかったりするのではないかと思います。
https://scrapbox.io/files/61ae498e212596001d06135f.png
調べた範囲では、おおむねBがAのだいたい半分よりも大きくなると腰ねじれの問題が起きるようです。ただし、その境目となる比率は調べた限りでもアバターによって微妙に異なっていてまだよく分かっていません。本当は「胸部の高さをいくつ以下にすればいい」といった事が言えると全自動修正への道が開けるのですが、そこまでは判明しなかったので今は調整量を各自で探ってもらうほかなさそうです。
上記の推測を補強する情報をひとつ。
https://youtu.be/2sfTEBAl8sA?t=1980
(33:00 "Shifting Down Fix")
VRChatのフルトラに関する公式ガイドで「すごくよく出来てるので見てみて」と紹介されているのが上記の動画です。その中で「上半身が下がって膝が曲がってしまう現象("Shifting Down")」への対処が示されています。 VRoid正式版で起きる問題は一見「腰が曲がる問題」に見えますが、横から見ると公式動画同様に上半身が落ちて膝が曲がっていることがわかります。おそらく両者は同じ問題で、腰の曲がりは上半身が落ちたことの副作用と考えられます。
そして、上の動画によるとこの現象は「Chestボーンが長すぎる」と起きるとのことです。
ですので、
Chestの位置を少し高くする
UpperArmの位置を少し低くする
UpperLegの位置を少し低くする
というのはどれも
「上半身と比較して相対的にChestボーンが短くなるようにしている」
のではないか、ということになります。
(※ 「Chestボーン」と呼びましたが、実際にはChestとUpperChestをまとめた全体の長さです。VRChatではUpperChestボーンの使用はあまり推奨はされていないようです)
手軽な解決策は?
11/5の時点で
VRM Converterの複製時に肩の高さを-0.001にする
という解決法にたどり着いた方がいました。
Blenderを通したりFBX経由したりしないので、今のところこれが最も手軽な解決策と言えそうです。
この方法でうまくいくのは、VRM Converter For VRChatで肩の高さにマイナスの補正値を入れると、Shoulderと連動してUpperArmが下がる ので、結果的に胸部を短くすることになるためだと思います。
ただし、肩の高さを下げると極端ななで肩になりがちになります(もともとVRM Converterのこの機能は、肩の高さを「上げる」ことでなで肩を補正する目的のものです)。ですのでこの方法で腰ねじれを直す場合、なで肩対策は他の方法(Humanoidのmuscleの可動域を制限する方法など)で行う必要がありそうです。
ちなみに、VRoid正式版以前にも「なで肩修正のために肩の高さを上げたら腰が曲がる問題が発生した」という事例があったそうです。これも今回調べた結果と符合する話で、肩を上げたことで胸部が長くなって起きたものと思います。