Edited at

VCIでラグドールを作る(Lua不要)


概要



これの作例を書きます。


作例

image.png

まず掴むためだけのサブアイテムを作ります。何故こんなことをしたかは後述の注意をご覧ください。

image.png

人型のrootにFixed Jointを付けて先の掴む用オブジェクトをConnected Bodyに指定します。

image.png

後は各関節構造に従って順にHinge JointのConnected Bodyを指定します。関節のオブジェクト?を外に引っ張り出す必要はありませんが、この方が作業しやすかったです。なお、これらの関節部分にサブアイテムを付ける必要はありません。付けても良いですが、合わせて必要になるであろうコライダーを追加すると物理が暴れやすくなります。

image.png

image.png

仕上げに各関節の可動範囲(Hinge JointのUse LimitをONにしてLimitのMinとMaxを設定)を指定します。図のガイドはEdit Joint Angular Limitsの左のボタンを押すと表示されます。図のように全部見たければ対象を複数選択してから押せば図のように表示されます。

image.png

MinとMaxが左右で同じ値を使えない場合(設定しても反対側を向く時)はAxisの値をマイナスにすると良いかもです。


可動範囲参考値

首:-30~30

腕:-60~80

肘:0~60

手首:-30~30

足:-120~30

膝:0~140

足首:-60~45


捕捉

image.png

足と手は垂直・水平だと流石に違和感があるので少し角度を付けました。この場合、Hinge JointのAxisの値を小数点単位で調整して角度を合わせています。

image.png

左腕の例


注意



原因は良く分かっていませんが、人型のrootに直接サブアイテムとコライダーを入れて掴むと暴れてしまいました。


余談

アリシアさんのFBX(VRMではない)をVCIで取り込んでバーチャルキャスト内で表示すると、右腕が左側にめり込む謎現象が発生するので、一度VRMに変換してVRM系コンポーネントを全部削除して使っています。一度VRMを通ると関節角が正規化されるのでこの効果を期待した所、右腕の不具合?を回避できました。可動範囲の参考値もVRMの正規化が適用されていれば、別モデルでも同じ値が使えるかもしれません。

作例では表情が付いていますが、アニメーションで対応しています。


関連

ニコニ立体ちゃん(アリシア・ソリッド)

https://3d.nicovideo.jp/alicia/

Cube Room

https://poly.google.com/view/1fahMeqZOw_

生贄モデル(暴れてた子)

https://3d.nicovideo.jp/works/td33034

VCIで人型の関節を動かす

https://qiita.com/120byte/items/485e38c935ddc547bb63

VCIで人型の関節を動かす2

https://qiita.com/120byte/items/44c1f024f9133f0bf050

© Unity Technologies Japan/UCL