#やりたかったこと
研究室の教授がVRIK導入してくれたのでその使い方を勉強+Unityで汎用的な人型アバターの制御をやりたい
Animator触るのがめんどい、Blenderやだ
#VRIKについて
FinalIKという有料アセットの一部。FinalIKは、簡単に言うと始点と終点を決めれば、その間のオブジェクトの位置角度を良い感じに整えてくれるアセット。
VRIK本来の使い方は、VRChatとかで人型アバターを扱いやすくするためのものなんだけど、その時の手順が
1.ヘッドセットとコントローラのオブジェクトをVRIKにアタッチ
2.VRIKがその位置に合わせて首から下のものを自動で制御
なので、1でつけるオブジェクトを別のものにすればアニメーション的な制御が楽にできるんじゃね?と考えた。
#前提
VRIKが導入してある
Animation使える
#やってみた
使用するモデルはunityちゃん。
Unityちゃんの親オブジェクトにVRIKコンポーネントを追加する
頭、腰と四肢にあたるオブジェクト(合計6つ)をVRIKにアタッチ。
完全にオブジェクト追従して欲しいので全てのRotation、PositionともにWeightを1にする。
Unityちゃんを座らせたかったので、こんな感じに各オブジェクトを設置。
失敗、グロい。
パッと見て、角度がおかしいので、良い感じに各オブジェクトの向きを調整
それでも失敗。
手は良いとして、足の曲がる方向が逆になってるので、これを制限しないとダメ。
FinalIKに入っているRotationLimitを使って可動域を変える必要がある。
色々使った結果一番簡単な、一平面だけの制限を与えるRotationLimitHingeを使う。ただ、座標系がEditor上の表示と違うのか、それとも俺が理解できてないのか不明だけどうまく設定できない。結局この↓設定でいくことに
腕を組みながら座っているようにAnimationを組んで、再生を押す
それっぽくなった
で、それぞれのオブジェクトをAnimationで操作
#他にも使ってみる
汎用的な使い方を目指していたので、他のアバターに使ってみた
…向きが違って失敗
標準のUnityちゃんに合わせて作成したので、VRMフォーマットのニコニコ立体ちゃんには使えなかった。というかFBX系のフォーマットが違いすぎるのは問題だなぁ…RobotKyleに使ってみた結果も似た感じに。
↓な感じみたいに、それぞれのオブジェクトの子に追従するものを付け加えればなんとなく補正はできるけど、アバターごとにするのはめんどう
#感想
いちいち再生しないと動きが確かめられないのが面倒。
VRMを基準に作れば大丈夫そうだけど、HumanoidBornが既に設定されているならAnimatorを触った方が楽っぽい。
でも、FinalIK(VRIK)+Animationの発想は違うものに使えそう。