modular-avatar
modular-avatar copied to clipboard
MA Bone ProxyのAttachment ModeにTargetからの相対位置を設定できるモードがほしい
現在のMA Bone Proxyの仕様では、Targetとなるボーンと同じTransformにする(at root)、またはワールド座標を基準として位置・回転を指定する(keep position and rotation)のいずれかの方法が指定できます。
しかしModular-Avatarを用いて、特定のアバターに依存しないギミックを作成する際、例えば手に何かを持たせたいケースなどにおいて、オブジェクトを持たせたいボーンがTargetボーンのTransform全く同じ位置ではなく、Targetボーンから多少ずれた位置に調整されるケースは多くあります。
現状だと上記ケースにおいてはAttachment Modeにkeep position and rotationを適用し、位置調整はユーザー側に任せる形式が一般的だと考えられますが、Prefabを入れるだけの改変しかしたことのないユーザーなど、この方法が難しいケースは安易に想定され、また、位置調整を行うオブジェクトが増えた場合などにおいては導入手順が煩雑化してしまいます。
そのため、MA Bone proxyに指定のTargetボーンからの相対位置を記録し、異なるボーン構造・スケールのアバターに導入した場合でも、ある程度Targetボーンからの距離が一致するようなオプションを実装してほしいです。
あっても良さそうだけど今の中ではAt rootにして子で調整するのが正しそうな気もしてます
子で調整する想定ですね・・・それでは何か不都合とかありますか?
At rootの子で調整する想定の場合、例えばBoneProxyを用いて移動させたいオブジェクトがPrefab(FBX)に含まれていて、移動させたいオブジェクトがUnpackなしに構造変更不可能なケースなどにおいて、少なくとも非破壊的にその手法を取れないことがあります。
現行のModular AvatarではBone Proxyの二重構造にも対応していないため、At rootを設定したオブジェクトをTargetに、更にBoneProxyを設定することもできないため、少なくともこのケースにおいてはBoneProxy側で相対位置に対応するか、BoneProxyを二重構造に対応する( #1455 )かのいずれかの対応が必要になると考えられます
長らく音沙汰なかったのですが、他に不都合のあるケースがあったので改めて
例えば手に何かをもたせたいシチュエーションにおいて、アバターによってHandのロール角が異なっているケースがあるため、アバター問わず汎用的に使用できる手持ちギミックを作成したいケースなどにおいて、At rootの子にオブジェクトを配置した場合だと、アバターによって子オブジェクトの位置が変化してしまうケースが見受けられました。 上記ケースにおいてはグローバル座標を基準としたTarget Objectからの相対位置の設定が必要になると考えられます
例えば、下記はHandボーンをTargetにBone Proxyを設定した空オブジェクトの子に持たせたいオブジェクトを配置したケースですが、 設定を行った1枚目のアバターと、Handボーンのロール角の異なる2枚目のアバターにおいては画像のように角度が大きく変化してしまっています
at root ではなく keep rotation だとどうでしょう…?