なんかいろいろしてみます

Dec 3, 2018 - 1 minute read - HoloLens

HoloLensのトラッキング状態を取得する

HoloLensでのトラッキング状態をUnityから取得することができます.

HoloLensのトラッキング状態

HoloLensは本体のセンサを用いてポジショントラッキング行っています. そのためセンサの状態によってはトラッキングが正常に行えずロスト状態になることがあります.

トラッキングロストが発生するとHoloLens自身が把握している現実空間での位置がずれる原因となり,表示させていたモデルがずれる場合があります.

またポジショントラッキングがロスト状態でもHoloLensの回転状態のみ取得できる場合もあります.

Microsoftのリファレンス

Unityから状態取得

UnityのPlayerSettingsからトラッキングロスト時の表示を切り替えることができる.

On Tracking Loss Pause and Show Imageのチェックを外して表示させたい画像を設定すると,トラッキングロスト時でおなじみの表示を切り替えることができる. チェックを外しただけの場合はトラッキングがロストした時の表示を出ないようにできる.

トラッキング状態をコード内で取得したい場合にはWorldManagerから取得が行えます.

 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627
#if UNITY_2017_2_OR_NEWER
using UnityEngine.XR.WSA;
#else
using UnityEngine.VR.WSA;
#endif

    public class TrackingWorldState : MonoBehaviour
    {

        void Start()
        {
            WorldManager.OnPositionalLocatorStateChanged += OnPositionalLocatorStateChanged;
        }

        void OnDestroy()
        {
            WorldManager.OnPositionalLocatorStateChanged -= OnPositionalLocatorStateChanged;
        }

        private void OnPositionalLocatorStateChanged(PositionalLocatorState oldstate, PositionalLocatorState newstate)
        {
            if (newstate != PositionalLocatorState.Active)
            {
                // トラッキングロスト状態
            }
        }
    }

https://github.com/akihiro0105/HoloLensModule/blob/master/Assets/HoloLensModule/Environment/Scripts/TrackingWorldState.cs

まとめ

  • トラッキングロスト時の状態取得と表示画像の切り替えができる
  • 体験会などでトラッキングがロストしても問題ないアプリの場合,ロスト時の表記を非表示にすることで体験を中断しなくてもよくなる