前回はUnityでテンプレートでVRを使っての作成例を紹介。今回はXR Toolkitから実行する場合の手順をまとめてみました。
XR ToolkitはVR環境をひとまとめにしたもので、ヘッドセットの差を吸収してくれるものです。XR Toolkitに慣れておけば、いろんなVR・AR環境に対応しやすくなると思います。
セットアップ
準備
Unityでテンプレートの段階でVRがあるのでそれを使った事例をいかにまとめました。
今回は3Dのテンプレートから作ってVR化する手順です。
前回を参考に
・Unityでアンドロイド開発環境を整備
・Java,AndroidSutdioをインストール
・Meta Quest 2で開発者モードにしておく
・オキュラスリンクを導入し、PCとメタクエ2がつながるようにしておく
といった準備をしておきましょう。
プロジェクト作成
Unityで新規プロジェクトを「3D」のテンプレートから作成。
「ウィンドウ>パッケージマネージャ」で「XR Interaction Toolkit」をインストールする。他「OculusXRPllugin」「XR Plugin Management」をいれておきます。
シーン作成
シーンでは「作成>XR>XR Origin(Action based」を作って配置。
これがヘッドセットになり、これだけでカメラやコントローラも配置されます。
「編集>プロジェクト設定」で「Oculus」を指定すると、PC実行時にOculusにもデータが送られます。
「XR Plugin Management」をいれてないと「Oculus」が出ないので注意。
オキュラスリンクで先にPCとメタクエ2を接続しておきます。
あとはUnityのほうからシーンを実行してメタクエ2からシーンが見れればOK。
以下はスナップショット。床とボックスはこちらで追加したもの。
「赤いレイ」は、すでに装備されているもののようです。
コントローラの制御
イベントを登録する
コントローラの制御は、前回同様InputSystemを使って指定できます。
手順は一緒ですが、「OculusXRPllugin」をいれてないとOculusControllerの表示が出ませんでした。入れておきましょう。
あとはオブジェクトに「PlayerInput」コンポーネントを追加して、作ったInputSystemを登録。
スクリプトも書いておき、例えばスティックの移動でLogを出力などしておいてから実行・確認しましょう。
Locomotionのコンポーネントをアタッチすれば、スクリプトを書かなくても回転などは実装可能なようです。
振動させる
振動ですがたとえばRightHand Controllerで、Hapticをチェックし、HapticDeviceのスクリプトをアタッチ。
するとスクリプトからBase Controllerコンポーネントへ「SendHapticImpulse」で強さと長さを送ることができます。
g=GameObject.Find("RightHand Controller");
g.GetComponent<XRBaseController>().SendHapticImpulse(0.4f, 0.1f);