MRが楽しい

MRやVRについて学習したことを書き残す

MRTKのRadialViewを使ってUIやオブジェクトを視界に追従させる

本日は MRTK の小ネタ枠です。
MRTKのRadial Viewを使ってUIやオブジェクトを視界に追従させる手順を記事にします。
f:id:bluebirdofoz:20210120231423j:plain

RadialView

RadialView は MRTK の Solver 機能に含まれるコンポーネントです。
敷居値の範囲を超えたときに、Solver 設定に基づきオブジェクトが追従します。
microsoft.github.io

以前の Toolkit における Tagalong に相当する機能になります。
bluebirdofoz.hatenablog.com

MRTKのインポート

MRTKのインポート手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

設定手順

サンプルシーンとして以下の Cube オブジェクトを正面に配置したシーンを用意しました。
f:id:bluebirdofoz:20210120231450j:plain

追従させたいオブジェクトに RadialView コンポーネントを追加します。
オブジェクトの Inspector ビューを開き、[Add Component]で[RadialView]を検索すると、検索結果に表示されます。
f:id:bluebirdofoz:20210120231511j:plain

これで RadialView コンポーネントを設定できました。
Solver の共通コンポーネントである[SolverHandler]と[RadialView]が追加されます。
f:id:bluebirdofoz:20210120231538j:plain

設定項目

コンポーネントはそれぞれ以下の設定項目を持ちます。
・SolverHandler

Tracked Target Type:頭や手などトラッキングする対象を設定します。
Additional Offset:トラッキング対象からのオフセット座標を設定します。
Additional Rotation:トラッキング対象からのオフセット回転を設定します。
Update Solvers:有効な場合、フレームごとにSolverUpdate()を呼び出します。

・RadialView

Update Linked Transform:有効な場合、位置と方向は計算されますが適用されません。
Move Lerp Time:移動に対する遅延時間を設定します。
Rotate Lerp Time:回転に対する遅延時間を設定します。
Scale Lerp Time:拡縮に対する遅延時間を設定します。
MaintainScale:有効な場合、ローカルスケールを使用します。
Smoothing:有効な場合、遅延時間に応じてトランスフォームがスムーズに変化します。
LifeTime:有効期限を設定します。0で無制限に動作します。
Reference Direction:カメラ方向などオブジェクトが正対する方向を設定します。
Min Distance:最小距離を設定します。この距離より近づくとオブジェクトが移動します。
Max Distance:最大距離を設定します。この距離より離れるとオブジェクトが移動します。
Min View Degrees:ビューの中心からの最小角度を設定します。この角度より近づくとオブジェクトが移動します。
Max View Degrees:ビューの中心からの最大角度を設定します。この角度より離れるとオブジェクトが移動します。
Aspect V:水平とは異なるクランプを垂直FOVに適用します。垂直FOVのクランプは 水平設定 * aspect V で計算されます。
Ignore Angle Clamp:有効な場合、角度のクランプを無視します。
Ignore Distance Clamp:有効な場合、距離のクランプを無視します。
Use Fixed Vertical Position:有効な場合、垂直方向の動きを無視してオブジェクトのY位置をロックします。
Fixed Vertical Position:垂直位置のオフセット量を設定します。
Orient To Reference Direction:有効な場合、Reference Direction の回転に正対します。

microsoft.github.io
microsoft.github.io

動作確認

各種設定を行い、シーンを再生して動作を確認します。
f:id:bluebirdofoz:20210120231658j:plain

オブジェクトが視界に追従して移動すれば成功です。
f:id:bluebirdofoz:20210120231706j:plain