Continuous Turn Provider (Device-based) を用いて VR 空間内での連続的な視点回転処理を行う【XR Interaction Toolkit】

VR空間での連続的な視点回転処理を提供する Continuous Turn Provider についての説明です.

VR 空間内での視点回転処理

panora.tokyo

VR酔いを防ぐため,VR空間での視点回転処理は瞬発的な処理がよく使われます.
XR Interaction Toolkit では Snap Turn Provider を利用することでこの機能が実装できます.

xrdnk.hateblo.jp

0.9 までの XR Interaction Toolkit では瞬発的な回転処理しかありませんでしたが,
0.10 以後から Continuous Turn Provider という連続的な回転処理を提供するスクリプトコンポーネントが追加されました.

環境

xrdnk.hateblo.jp

こちらの記事と同様です.

XR Interaction Toolkit 0.10 以後に追加されているため,0.9 以前にはありません.

Continuous Turn Provider (Device-based)

今回も Device-based で説明します.
適当なオブジェクトに Continuous Turn Provider (Device-based) コンポーネントをアタッチします.
Snap Turn Provider がすでにある場合はチェックを外しておきます(チェックがあると両方処理が走ってしまいます).

f:id:xrdnk:20210130201926p:plain

System

Locomotion System コンポーネントがアタッチされているオブジェクトを設定します.XR Rig が入ると思います.

Turn Speed

回転速度を設定します.体感では30度程度が良さげでした.
この回転速度は設定画面を作ってスライダで調整できるようにしたいですね.

Input Binding

Input の Bind を Primary 2D Axis にするか Secondary 2D Axis にするかを設定します.
大方,Primary 2D Axis のままでよいかと思います.

プラットフォームとの対応表はこちらになります.

f:id:xrdnk:20210217232404p:plain

Controllers

回転処理を実行したいコントローラを設定します.

Deadzone Min,Max

回転処理を実行できるスティックの閾値を設定します.

実機確認

youtu.be

動画ではわかりにくいですが,連続的な回転処理を行うことができるようになりました.
個人的には瞬発的な回転よりもこっちの方がやりやすいですね….