見出し画像

xアーカイブ:VRMSpringBoneの「センター」設定(24/9/5再編集)


24/9/5再編集:記載内容の校正とか状況の進展とか踏まえて全体的に見直します。

センターとは?

たまに僕らの間で課題になる、VRMの揺れ物の「センター」設定について。
そもそもVRMを扱っている人の間でも、それが何を意味するのか知らない人もいるのでは?なんて話をすることもあるけども。
ほんとに何のために存在しているか知っている?

それについてわかりやすそうなポストを見かけたので。
magica clothの「アンカー」の説明なんだけど、センターの考え方としてはこれは近いと思う。

モデルをグローバルで移動させると、揺れ物はそれに取り残されて、本体に引っ張られる挙動になるんだけど、効きすぎてしまい、あたかもモデルが崩壊しているのかのような見た目になることがある。
かといって、これを完全になしにしてしまうと、全く何も揺れないということになるので、これは何とかしたい。

そこで、指定した部分(この場合、上の階層のオブジェクトとかボーンとか)から先の移動のみを参照しろ、という要素を設けて対処している。
下の映像では、移動している床にモデルが乗っている。しかしモデルの揺れ物の計算は、床以降の部分しかしないので、揺れ物の破綻を防ぐことができている。
要するにこれを設定するということなんだ。

VRMに於いての扱い

実のところVRMの揺れ物では、magicaclothのデモのような都合の良いことにはならない。モデル内のルートオブジェクトを指定する方法でこれを実現しようという向きもあるんだけど、もともと想定されていない仕様なので、アプリによってうまくいく場合とそうでない場合があるとか、VRM1.0に至っては、この指定が強制的に無効になったりする。

もともと想定していないから、どう振舞うかも想定していなくて、仕様にも書いてなくて、例えばモデルに設定できてしまっても、アプリがどう扱うかも定かではない。

最近、VRM1.0に於いて、センター指定にルートオブジェクトを使うことを仕様に加えるよう提唱されたけど、規格のモデル構造のコンセプト的に却下されそうな感じ。
モデルデータっていうひとつの部品を、複雑なシーンファイルみたいな扱いにはしたくないので、余計な部分に枝葉を分岐させたくはない、ということみたいだ。

実際どうなのか

例えば下記のリポストでは、もともとVRMを設定している人が、
「(アプリによっては)センターになにも入れないと揺れすぎてしまうし、Hipsを入れると全然揺れなくて固い印象になってしまうので、どうするのがいいかわからん!」
ということが大元だった。

アプリの実装方法によって仕様は違うし、モデル自体も揺れ方の理想的な感じが異なるので、こうすればいい、ということはなかなかいかない。

おそらくはセンターに、VRM本来の仕様に沿って、Hips以下のいずれかのボーンとかを設定して、アプリごとの実装方法の影響を少なくしたうえで、揺れ方のパラメータを調整して、すこしでも良いと思える感じにしていく、というあたりがマシな方向性だろうか。

更には、センターを設定する部分と、あえて設定しない部分を想定するとかで使い分けるとか。

参考

参考のために、これまでに知り合いがセンター設定について考察や調査した事柄についてのリンクを置いておきます。


この記事が気に入ったらサポートをしてみませんか?