本日は MRTK の小ネタ枠です。
MRTKのRadial Viewを使ってUIやオブジェクトを視界に追従させる手順を記事にします。
RadialView
RadialView は MRTK の Solver 機能に含まれるコンポーネントです。
敷居値の範囲を超えたときに、Solver 設定に基づきオブジェクトが追従します。
microsoft.github.io
以前の Toolkit における Tagalong に相当する機能になります。
bluebirdofoz.hatenablog.com
MRTKのインポート
MRTKのインポート手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com
設定手順
サンプルシーンとして以下の Cube オブジェクトを正面に配置したシーンを用意しました。
追従させたいオブジェクトに RadialView コンポーネントを追加します。
オブジェクトの Inspector ビューを開き、[Add Component]で[RadialView]を検索すると、検索結果に表示されます。
これで RadialView コンポーネントを設定できました。
Solver の共通コンポーネントである[SolverHandler]と[RadialView]が追加されます。
設定項目
コンポーネントはそれぞれ以下の設定項目を持ちます。
・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 の回転に正対します。
動作確認
各種設定を行い、シーンを再生して動作を確認します。
オブジェクトが視界に追従して移動すれば成功です。