![見出し画像](https://assets.st-note.com/production/uploads/images/74394612/rectangle_large_type_2_e9014fd589d91338b886bdfb2f8c21c7.png?width=1200)
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テクノロジーに特化した技術マガジンです。