見出し画像

Niantic Lightship ARDKによるARSession の ポジショントラッキングの状態を取得する方法

ARSessionのトラッキング状態について

暗い場所やかなり激しい移動を行った場合、ARSessionのトラッキングの状態が不安定になる時があります。このトラッキングの状態を取得する事ができます。

ARSessionのトラッキング状態

ARSessionのポジショントラッキングには、3段階のレベルがあります。

NotAvailable … ポジショントラッキングが機能しない。

Limited …  ポジショントラッキングは機能しているが、品質がやや低い。

Normal …  ポジショントラッキングは機能している。

ARSessionのトラッキング状態を取得する方法

ARSession.CameraTrackingStateChanged イベントで取得する事ができます。

using UnityEngine;
using Niantic.ARDK.AR;
using Niantic.ARDK.Extensions;
using Niantic.ARDK.AR.ARSessionEventArgs;

public class PositionTrackingStateDemo : MonoBehaviour
{
    
    IARSession _session;

    void Awake() {
        ARSessionFactory.SessionInitialized += OnSessionInitialized;
    }

    private void OnSessionInitialized(AnyARSessionInitializedArgs args)
    {
       //only run once guard
       ARSessionFactory.SessionInitialized -= OnSessionInitialized;

       //save the session.
       _session = args.Session;
       _session.CameraTrackingStateChanged += OnCameraTrackingStateChanged;
    }


    // Start is called before the first frame update
    void Start()
    {
    
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    private void OnCameraTrackingStateChanged(CameraTrackingStateChangedArgs args)
    {
        var state = args.TrackingState;
        switch(state)
        {
            case TrackingState.NotAvailable:
                Debug.Log("NotAvailable");
                break;
            case TrackingState.Limited:
                Debug.Log("Limited");
                break;
            case TrackingState.Normal:
                Debug.Log("Tracking Normal");
                break;
        }
    }
}

ARCamera.TrackingStateから取得することもできます。

最後に

Niantic Lightship ARDK のブログ記事

この記事以外にNiantic Lightship ARDKのブログ記事を投稿しています。

OnePlanet XR

OnePlanet XR はAR/MR技術に専門特化したコンサルティングサービスです。豊富な実績を元に、AR/MR技術を活用した新たな事業の立ち上げ支援や、社内業務のデジタル化/DX推進など、貴社の必要とするイノベーションを実現いたします。

ご相談から受け付けております。ご興味ございましたら弊社までお問い合わせください。

OnePlanet Tech Magazine

ARテクノロジーに特化した技術マガジンです。