Open9

Unity の xr interaction toolkit で VRM を操作する

SH1R4S4G1SH1R4S4G1

IKのターゲットにするやつは何でもいいけどXR Grab Interactableをアタッチ。
Rigidbodyに「use Gravity」があるのでオフにしておくと浮いてくれる。

SH1R4S4G1SH1R4S4G1

FINAL IKのVRIKのReferenceは基本自動で設定されるはず。
設定されないこともあったが理由は不明、何回かやったらできた

SH1R4S4G1SH1R4S4G1

XR Grab Interactableのオブジェクトを持つとぐるぐる回ってしまうのは、useDynamicAatattchを有効にすれば回避できる。

SH1R4S4G1SH1R4S4G1

Three.jsでどうにか実現しようとしていたことがこんなに簡単に実装できるとは
教訓として一番思ったのは餅は餅屋

SH1R4S4G1SH1R4S4G1

secondaryのcenterはArmatureが設定されているけど、ゲームがスタートした瞬間に座標が狂うから削除した方がいいっぽい?ひょっとしてこれはユーザー始点のVRを想定してユーザーを中心にしてるのかな?

空のオブジェクトを入れるっていう記事も読んだけど、入れなくていいみたい

https://vrm.dev/univrm/springbone/univrm_secondary/

移動する際の揺れ防止
VRMSpringBoneは通常ワールド原点を基準に揺れ計算をします。
一方で、VRMSpringBoneのCenterを活用すると揺れ計算の基準点をボーンなどに変更できます。
以下のような場合にCenterの活用が効果的です。

モデルが歩行などによって平行移動した場合にSpringBoneが揺れ過ぎてしまう
頭を動かした場合のみに髪の毛や髪飾りなど頭についているSpringBoneが動いてほしい
なおVRM 1.0ではCenterに設定出来るノードの制約が決まりましたが、VRM 0.Xの段階ではCenterに設定出来るノードの制約が決まっていませんでした。

Centerノードは、そのSpringChainの0番目のJointもしくは、その祖先nodeである必要があります。 > また、Centerノードには、他のSpringChainのJointノードおよびその子孫を指定することはできません。

うーんよく分からない 自分で動かないオブジェクトなら少なくとも関係ないかな?

SH1R4S4G1SH1R4S4G1

全身のハンドルと手足のハンドルを分けるには、手足のハンドルに対してUnityのPositionConstraintとRotationConstraintを追加して全身のハンドルを参照させる

inActionが☑

SH1R4S4G1SH1R4S4G1

AVETERに対してインタラクションする場合、プレファブを展開しておかないと思った動作をしないことがあるかも?できれば展開したくないけど

SH1R4S4G1SH1R4S4G1

IKで頭の回転に追従して身体がぐるぐる回ってしまう
→FINALIKのコンポーネント Solver,Spine,RootRotationを増やす