ARSession은 애플 공식 문서를 찾아보았다. 하지만 정확한 개념을 이해하지 못한거 같아 인터넷에 검색하며 찾으니 좀 이해가 되는 기분이다.
이러한 여러가지 데이터를 합성하여 휴대폰이 있는 실제 공간과 AR Object를 모델링하는 가상 공간 간의 대응 관계 설정을 한다.
-> 모든 AR 기능을 사용하려면 ARSession이 필요하다.
AR을 이용하면 대부분 카메라에 표시되는 물체를 분석하는데, 이러한 분석을 ARSession에서 처리하기 때문에 필요하다고 이해하였다.
ARSession 생명 주기도 공식문서에 있어 궁금해서 공부했다.
World-Tracking AR Session은 시각적 관성 주행 거리 측정 이라는 기술을 사용하는데, 이 기술은 모션 센서 데이터를 카메라 이미지 분석과 결합하여 실제 공간에서 장치의 위치와 방향을 추적한다. 라고 적혀있다.
결론은 모션 센서와 카메라 이미지 분석을 이용해 사용자 기기의 위치와 방향을 추적한다는 말이다.
새로운 세션을 생성하면 Not available 상태 인데, 이 상태는 장치의 포즈(위치와 방향)을 추적하기에 정보가 부족한 상태.
몇 프레임 후 Limited 상태가 되는데, 위치와 방향을 추적하지만 정확성은 조금 떨어지는 단계이다. 이 상태의 경우 ARKit을 사용하는 기능을 사용할 수 없다.
Limited 상태 이후는 Normal 상태로 ARKit의 모든 기능을 사용할 수 있게된다.
ARKit은 ARSession없이 장치의 포즈를 추적할 수 없다. 만약 세션이 중단되면 relocalization을 통해 복구를 할 수 있다. relocalization이 성공려면 장치를 중단 되었을때 있던 위치로 돌아가야한다. 돌아가지않으면 세션은 무기한 중단 상태가 된다.
말이 조금 어렵지만 세션이 도중에 중단되면 relocalization을 통해 복구를 할 수 있는데, 이 과정에서 중단된 위치로 다시 돌아가야한다는 것으로 이해했다.그러면 이 세션이 중단될 때 그 중단된 위치를 저장해야하는데, 이 기능은 iOS 12.0 이상 부터 지원한다.
그렇지만 이 모든 정보를 저장하는게 아니라, ARSession에 저장할만한 가치가 있는것들만 저장을한다.