vrm-c / vrm-specification

vrm specification

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VRMC_springBone.center について

eijiasano opened this issue · comments

#155 にて、下記の様に決定されています

”1.0において、SpringBoneのcenterのシリアライズは廃止されます。
0.0におけるcenter相当の機構が必要な場合、VRMの実装もしくはアプリケーションが対応を行う必要があります。”

ですが、
SpringBoneの挙動については、デザイン側の意向、ないしモデル作成上の都合で調整が必用になる項目です。
これにcenterの指定も含まれております、部位ごとに調整も必要です。

指定をせず、アプリケーション毎の対応とされますと、モデル製作時に挙動を想定することが難しくなります。

0.0と同様の設定内容、実装を求めたいです。

前髪等の顔にめり込んでほしくない部分、なびきすぎて貫通してしまうスカートをアバタールートにしたり、
長いポニーテールなどは移動の際なびいてくれると非常に見栄えが良い部分をワールドルートにするなど、
細かい設定を行ってキャラクターの魅力を引き出しています、
こういった個別の設定が出来なくなるとアバターメイキングにおいて非常に困ります。

なので僕も0.0と同様の設定が出来るようにして欲しいです。

#155 でCenterの利用率が疑問視されていますが、当時は資料が整備されておらずCenterの利用法が分からなかったのが原因だと感じます。不要の判断は早いかもしれません。

commented

前髪等の顔にめり込んでほしくない部分、なびきすぎて貫通してしまうスカートをアバタールートにしたり、
長いポニーテールなどは移動の際なびいてくれると非常に見栄えが良い部分をワールドルートにするなど、
細かい設定を行ってキャラクターの魅力を引き出しています、

より詳しい説明をお願いできますでしょうか。

commented

VRM1.0の実装のうち、UniVRMおよび@pixiv/three-vrmにおけるcenterの挙動は、VRM0.0のドキュメントの説明から変わらず、揺れものの基準点を変更するものです。

https://vrm.dev/univrm/springbone/univrm_secondary.html#id7

アプリケーション側が需要に応じてモデル全体に設定する項目と想定していますので、
centerパラメータがシリアライズされ、モデルデータに収録されている必要はないという判断をしていました。

アプリ側が挙動を設定する場合、部位によりcenterの挙動を変えることが難しくなると予想しています。

例えば、スカートと髪では、理想的な動作は異なります。
髪はキャラクターの移動に影響される挙動をさせたいが、スカートは柔らかい動作をさせつつ、破綻を防止するために移動の影響はさせないようにする、という設定をする場合があります。

またゲーム用途、アバター用途では許容できても、ライブやMVの様な用途では、ルックスを重視するため、center挙動もよりシビアに設定します。

これらの理由から、部位ごとにcenter挙動を設定できる必要があると考えます。

commented

なるほど!「歩行」の影響をさせたくないボーンが存在する、という需要ですね。理解しました。
その需要について、これまで私は理解をしていませんでした。

一点質問なのですが、このとき、centerパラメータはモデルのルート以外に設定することはどのくらい考えられますでしょうか?

いま私の方で、VRC PhysBones・Dynamic Bone・MagicaClothあたりの設定を見てみたのですが、どれも「キャラクタールートの移動の影響度を調整する」という設定項目が存在するようですね。

実際、こういった設定の使い分けをしたいケースは、モデルのデザインと用途次第ですが、
衣服や髪に多くのボーンを設定して揺らしている場合では特に必要とされると思います。

モデルのデザイン、実装内容の高度化は確実に進んでおり、揺れ物部分の増加に伴って、使う機会は増えていく傾向にあると考えます。

揺らさないという表現を使えるということが重要で、コライダーを設定している脚で押された時だけ動く金属製のアーマースカートなど、個別にcenterを自由に設定できることでアバターの表現力は飛躍的に向上すると考えられます。
現在ほとんど周知されていないパラメータのため実例は殆ど見かけませんが、
今後、用途が周知していくにしたがってスプリングボーンにとって一番重要なパラメータの一つになると考えています。

commented

このとき、centerパラメータはモデルのルート以外に設定することはどのくらい考えられますでしょうか?

全体の数、割合を出すことは難しいです。
ですが、自分のほうで扱ってきたモデルの傾向から考慮して、7割くらいのモデルには、こういった設定がなんらかの恩恵をもたらしていた可能性はあると思います。
あくまで、自分の扱ってきたものでは、です。ボカロ、Vチューバーさんのライブに用いるもの、VRCで用いるものは揺れ物に繊細な調整や場合によってはスキニングの根本的な見直し等もあります。

commented

centerをモデルのルート以外、例えば、腕や首などに設定することは有り得ますか?

あり得ます。

commented

もう少し具体的な説明をいただけますか。仕様検討の上でとても参考になります。

mendosuさんの言っているのとかなり近いことですが

前髪部分に限った例を出すと、

他のスカートや長い髪の毛っていうのは体全体が動いたとき、ちょっと体が揺れたときに敏感に反応してほしい。
しかし「前髪」に限っては敏感には動いてほしいけど激しく動いてほしくないんですね、なぜなら顔アップの印象が崩れるからです。

つまり、体全体が動くたびに前髪が崩れているとキャラクターの表現としては好ましくないですが、顔を動かす演技をした際に前髪が動いてないと前髪が固定されたものになってしまいます。
なので

通常揺れものcenter → root
前髪だけは「顔を振った」ときに動いてほしいためcenter → upperChest に設定する変更が有効。

ということですね。

commented

ありがとうございます。やりたいことの解像度がよりクリアになりました。

commented

アプリケーション側が需要に応じてモデル全体に設定する項目と想定していますので、
centerパラメータがシリアライズされ、モデルデータに収録されている必要はないという判断をしていました。

この発言の意図について改めて説明をさせてください。

現状、VRMSpringBoneのcenterパラメータを使うモチベーションが以下の2通りあると思っていて、

  • (本issueで議論されている)モデルのSpringBoneごとに、モデル内の任意のnodeからの相対的な空間で評価し、揺れ方を調整する
  • シーンが平行移動している場合や・ARでシーンのルートが動的に変化する場合などに、モデルのSpringBoneの揺れ方をシーン内のあるTransformから相対的にしたい

このうち、後者のcenterの使い方しか私はこれまで想定できていませんでした。
今回のディスカッションで、前者の需要とモチベーションが理解できました。

開発している側と、 アバター制作者やアバターをセットアップする側と
この両者の間には大きな認識の差が今後も潜んでいると思われます。

今回その穴埋めが少しでも出来ているなら喜ばしいことです。

commented

#374 において1.0のSpringBone仕様ににcenterのシリアライズを再導入し、本issueの要旨は達成されました。
議論へのご協力ありがとうございました。