概要
© Unity Technologies Japan/UCL pic.twitter.com/WcaotcAb4j
— 120 (@120byte) August 13, 2019
これの作例を書きます。
作例
まず掴むためだけのサブアイテムを作ります。何故こんなことをしたかは後述の注意をご覧ください。
人型のrootにFixed Jointを付けて先の掴む用オブジェクトをConnected Bodyに指定します。
後は各関節構造に従って順にHinge JointのConnected Bodyを指定します。関節のオブジェクト?を外に引っ張り出す必要はありませんが、この方が作業しやすかったです。なお、これらの関節部分にサブアイテムを付ける必要はありません。付けても良いですが、合わせて必要になるであろうコライダーを追加すると物理が暴れやすくなります。
仕上げに各関節の可動範囲(Hinge JointのUse LimitをONにしてLimitのMinとMaxを設定)を指定します。図のガイドはEdit Joint Angular Limitsの左のボタンを押すと表示されます。図のように全部見たければ対象を複数選択してから押せば図のように表示されます。
MinとMaxが左右で同じ値を使えない場合(設定しても反対側を向く時)はAxisの値をマイナスにすると良いかもです。
可動範囲参考値
首:-30~30
腕:-60~80
肘:0~60
手首:-30~30
足:-120~30
膝:0~140
足首:-60~45
捕捉
足と手は垂直・水平だと流石に違和感があるので少し角度を付けました。この場合、Hinge JointのAxisの値を小数点単位で調整して角度を合わせています。
左腕の例
注意
人型は直接持たない方が良い……? pic.twitter.com/qF9y2VWhJ9
— 120 (@120byte) August 12, 2019
原因は良く分かっていませんが、人型の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