본문 바로가기

Unity/ARCore

ARFoundation으로 ARCore 사용하기 - 세션 상태

ARFoundation으로 ARCore 사용하기 - 세션 상태

 

ARSession 객체 들어있는 ARSession 스트립트로 세션 상태를 체크할 수 있습니다.

세션 상태에 대한 설명은 아래에 있습니다.

 

public class MyComponent {
    [SerializeField] ARSession m_Session;

    IEnumerator Start() {
        if ((ARSession.state == ARSessionState.None ||)
            (ARSession.state == ARSessionState.CheckingAvailability))
        {
            yield return ARSession.CheckAvailability();
        }

        if (ARSession.state == ARSessionState.Unsupported)
        {
            // Start some fallback experience for unsupported devices
        }
        else
        {
            // Start the AR session
            m_Session.enabled = true;
        }
    }
}

 

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@2.0/manual/index.html

 

세션의 현재 상태 (예 : 기기가 지원되는지 여부, AR 소프트웨어가 설치중인 경우 및 세션이 작동 중인지 여부)를 확인하려면을 사용하십시오 ARSession.state. 세션 상태가 변경 될 때 이벤트를 구독 할 수도 있습니다.  ARSession.stateChanged..

None AR System이 초기화되지 않았으며 가용성을 알 수 없습니다.
Unsupported 현재 기기에서는 AR이 지원되지 않습니다.
CheckingAvailability 시스템이 현재 장치에서 AR의 가용성을 확인하고 있습니다.
NeedsInstall AR은 현재 장치에서 지원되지만 추가 설치가 필요합니다.
Installing AR 소프트웨어 설치 중
Ready AR 지원 및 준비
SessionInitialized AR 세션이 초기화 중입니다 (즉, 시작). 이는 일반적으로 AR이 작동하지만 환경에 대한 충분한 정보를 수집하지 않았 음을 의미합니다.
SessionTracking AR 세션이 실행 중이고 추적 중입니다 (즉, 기기가 세계에서 위치와 방향을 결정할 수 있음).

 

제가 세션 상태 이벤트를 가져와 사용할 때는 Ready에 잘 들어오지 않았습니다.

대부분의 상태가 SessionTracking 이었습니다.

그래서 코드를 작성할때 Ready 상태일 때만 작업을 실행하지 말고 다른 상태일 때도 작업이 가능하게 해야 할것 같습니다.