VR コントローラでモデルを動かすあたり
今回はモデルになりきって手や頭を動かして、そのモーションをミラーで確認するあたりを実装していきます。
実現したいことを列挙すると
・コントローラのリセットに定義したボタンを押したときに、自分(ヘッドセットの視点)をモデルの位置に移動させる。
・撮影するカメラマンの位置にミラーを配置して自分の振る舞いを確認できるようにする。
です。
それでは実装していきます。
まず、モデルの手足を動かすには Animator Controller に IK Pass を設定して、Animator の SetIKPositionWeight(), SetIKRotationWeight(), SetIKPosition(), SetIKRotation() で左右の手の位置を設定します。
この手の位置を計算には、ルームスケールにおける手の位置とシーン内で移動させたモデルの位置で座標変換する必要があって、ぶっちゃけ面倒でした。数学、いや算数に詳しくなりたいです。
でも、できました。
Steam VR Plugin が描画した手の位置とずれてるけど、とりあえず気にしないことにします。何事も妥協が大事だと私は信じています。
あと、モデルの頭の位置にヘッドセットを移動させると目の前に頭の中身が見えてしまうので、ヘッドセットのカメラには頭を表示しないようにしました。
モデルの頭の位置からの視点。おっぱい。
次は、自分のモーションを確認するためのミラーをカメラマンの位置に配置します。
ミラーに関しては下記サイトを参考にしました。
UnityとHTC Viveで鏡を作る方法
で、ミラーを配置したときの様子はこんな感じです。
ミラーには枠を表示した方がいいかもですけど、そのうちやります。
さて、今回はここまでにします。
次回はモーションの記録と再生まわりをしたいのですが、先にプロジェクト管理まわりの実装をするかもしれません。テストの度に「シーン配置ボタン、モデルの位置変更ボタンを押す」とかやるのはめんどうなので。
次回の投稿: 水曜日の 20時