헤드마운트 디스플레이 확장 실행 검증
EasyAR를 기기에서 동작시키기 위해 가장 중요하면서도 가장 까다로운 작업은 입력 데이터의 정확성을 보장하는 일입니다. 새로운 기기에서 EasyAR를 처음 실행할 때 발생하는 문제의 90% 이상은 잘못된 데이터에서 비롯됩니다.
가능하다면 EasyAR를 넣기 전에, 기기와 그 인터페이스만 사용한 테스트 방법으로 데이터를 직접 검증하는 것이 좋습니다. 이 문서는 EasyAR 기능을 이용해 데이터를 검증하는 경험적 방법을 소개합니다. 이 과정은 외부 입력 프레임 데이터를 이해하는 데 도움이 되지만, EasyAR 자체에도 오차가 있으므로 이렇게 결합된 시스템으로 데이터 정확성을 검증하는 것은 최선의 방법이 아닙니다.
시작하기 전에
- 헤드셋에 EasyAR 지원 추가하기 개발을 완료합니다.
- EasyAR Sense Unity Plugin 사용 방법을 이해하려면 빠른 시작을 읽습니다.
- 헤드셋 샘플 사용하기를 이해합니다.
- Android 프로젝트 설정을 이해합니다.
기본 기능 예제 실행
기기에서 EasyAR를 처음 검증할 때는 아래 기능을 순서대로 실행해야 합니다. 특히 Mega는 짧은 실행이나 단일 실제 장면에서는 문제가 잘 드러나지 않는 내성 특성이 있으므로, 서둘러 실행하지 마세요.
화면에 표시되는 session 정보를 확인해 예상치 못한 문제가 없는지 보고, frame count가 계속 증가하는지 확인합니다.
Image, 즉 이미지 트래킹 기능을 실행한 뒤, 모바일 기기에서의 동작과 비교해 같은 결과인지 확인합니다(기준은 iPhone을 권장합니다). 추적 상태와 target 오버레이 표시를 주의 깊게 봅니다.모션 퓨전을 켜지 않은 상태에서는 이미지 트래킹에 눈에 띄는 지연감이 생기는데, 이는 정상입니다. 모션 과정이 올바르고, 기기가 멈췄을 때 위치가 맞아떨어지면 됩니다.
Dense, 즉 밀집 공간 매핑 기능을 실행한 뒤, 모바일 기기에서의 동작과 비교해 같은 결과인지 확인합니다(기준은 iPhone을 권장합니다). 메쉬 위치, 생성 속도, 품질을 주의 깊게 봅니다.입력 데이터의 frame rate가 낮으면 메쉬 생성 속도는 느려지지만 품질은 크게 나빠지지 않습니다.
이 기능은 일부 Android 기기에서는 동작하지 않을 수 있으며, 메쉬 품질도 기기마다 달라집니다.
중요
헤드셋 확장 패키지에서 사용하는 입력 확장은 커스텀 카메라 구현입니다.
사용자 지정 카메라 또는 헤드셋에서 평가판 제품(Personal Edition license, 평가판 XR license 또는 평가판 Mega 서비스 등)을 사용할 때 EasyAR Sense는 시작할 때마다 100초 후 응답을 중지합니다(Mega 사용자는 승인 후 EasyAR Business를 통해 시간을 조정할 수 있습니다). 유료 버전의 EasyAR Sense와 유료 EasyAR Mega 서비스에는 이 제한이 없습니다.
커스텀 카메라나 헤드셋에서 체험판 제품(예: 개인판 라이선스, 체험용 XR 라이선스, 체험용 Mega 서비스)을 사용할 경우, EasyAR Sense는 매번 시작 후 100초가 지나면 응답을 멈춥니다(Mega 사용자의 승인 후 EasyAR Business를 통해 지속 시간 조정 가능). 유료 버전의 EasyAR Sense와 유료 EasyAR Mega 서비스에는 이 제한이 없습니다.
Image와 Dense가 모바일 기기와 같거나 더 나은 수준으로 동작한다면, EasyAR의 대부분 기능은 기기에서 정상적으로 동작할 것입니다. 이제 Mega 테스트로 넘어가면 됩니다.
동작 중 이상 상황 해결: 문제 분해
모바일 기기와 같은 결과를 재현할 수 없다면, 아래의 세부 문제 분해 과정을 따라 원인을 찾아볼 수 있습니다. 시스템 로그 출력을 항상 주의 깊게 보는 것이 좋습니다.
0단계: 헤드셋 자체의 시스템 오차 이해하기
AR/MR용 기기 준비에서 설명한 모션 추적과 디스플레이 요구사항을 기억하시나요?
중요
모션 추적/VIO 오차는 항상 서로 다른 방식으로 EasyAR 알고리즘의 안정성에 영향을 줍니다.
중요
디스플레이 시스템 오차 때문에 가상 물체와 실제 물체가 완벽하게 정렬되지 않을 수 있습니다.
오차가 큰 경우, 가상 물체가 실제 물체의 위나 아래에 떠 있는 것처럼 보이다가 계속 드리프트하는 것처럼 보일 수 있습니다. 이 현상은 Pico 4E에서 확인할 수 있으며, EasyAR를 사용하지 않고 자체 VST만 켜도 같은 현상이 나타납니다.
1단계: session 실행 상태 확인
UI 메시지에서 표시되는 session 상태가 정상으로 나오려면 다음 기능 또는 데이터가 정상이어야 합니다.
- ExternalFrameSource의
가용성- ExternalFrameSource의
가상 카메라
session 상태 정보가 보이지 않으면, 옵션을 Log로 바꾼 뒤 시스템 로그에서 session 상태와 사용 중인 frame source 이름을 확인해 보세요.
ARSession 노드 아래의 다른 frame source를 모두 삭제한 뒤 변화가 있는지도 확인해 볼 수 있습니다.
2단계: EasyAR가 받은 카메라 프레임 카운트 확인
반드시 정상이어야 하는 기능 또는 데이터:
- Unity 코드 계층에서 ExternalFrameSource의
카메라 프레임 데이터로 이어지는 경로(데이터 정확성과 네이티브 계층으로의 경로는 제외)
이 값은 시간이 지나면서 증가해야 하며, 그렇지 않으면 몇 초 뒤 경고가 표시됩니다.
이 값이 증가하지 않는다면 가장 먼저 해결해야 합니다.
3단계: 기기에서 EIF를 녹화하고 Unity Editor에서 재생
반드시 정상이어야 하는 기능 또는 데이터:
- ExternalFrameSource를 통해
카메라 프레임 데이터가 네이티브 계층으로 입력되는 경로(데이터 정확성은 제외)카메라 프레임 데이터의raw camera image data카메라 프레임 데이터의timestamp(시점과 데이터 동기화는 제외)
EIF를 눌러 녹화를 시작하고, 다시 눌러 중지합니다.
팁
랜덤 인덱싱 가능한 EIF 파일을 얻으려면 녹화를 정상적으로 중지해야 합니다.
Unity Editor에서 EIF 데이터를 재생할 때는, 장면에 잘못된 설정이 들어 있지 않도록 깨끗한 EasyAR 씬이나 EasyAR 예제를 사용하는 것이 좋습니다.
Unity Editor에서 카메라 프레임 데이터의 재생을 볼 수 있습니다. 전체 과정에 손실형 인코딩이 있으므로 이미지 데이터는 바이트 단위로 동일하지 않습니다.
EasyAR는 계산에 왜곡 파라미터를 사용하지만 표시할 때는 이미지에 역왜곡을 적용하지 않습니다. 따라서 이 데이터를 입력하면 Unity에서 EIF 파일을 재생할 때 역왜곡되지 않은 데이터가 보이는데, 이는 정상입니다.
팁
Unity game 창의 비율을 입력과 맞추지 않으면, 표시 시 데이터가 잘릴 수 있습니다.
데이터가 너무 빠르거나 너무 느리게 재생되면 timestamp 입력을 확인하세요.
참고
EIF로 할 수 있는 일은 많습니다. Unity Editor에서 EIF를 사용해 이미지 트래킹과 밀집 공간 매핑을 실행할 수 있습니다. 실제 기기에서 실행할 때는 표시 결과가 다를 수 있습니다.
4단계: EIF로 이미지 트래킹 실행
반드시 정상이어야 하는 기능 또는 데이터:
카메라 프레임 데이터의raw camera image data카메라 프레임 데이터의intrinsics(알고리즘이 오차를 어느 정도 허용하므로 데이터 정확성을 완전히 보장할 수는 없습니다)
Unity Editor에서 EIF를 사용해 ImageTracking_Targets 이미지 트래킹 예제를 실행하려면, 이미지가 추적 가능한 EIF를 녹화해야 합니다.
참고
이미지 트래킹은 추적 대상이 전체 이미지의 일정 비율을 차지해야 합니다. 이미지를 추적할 수 없다면 머리를 이미지에 더 가까이 이동해 보세요.
추적이 계속 실패하거나 가상 물체가 이미지의 대상 위치에서 멀리 보인다면, intrinsics에 문제가 있을 가능성이 높습니다.
이미지 데이터에 왜곡이 있으면, 가상 물체가 이미지의 추적 대상과 완벽하게 겹치지 않는 것을 볼 수 있습니다. 이는 정상이며, 추적 대상이 이미지 가장자리에 있을수록 더 두드러집니다.
5단계: 기기에서 이미지 트래킹 실행
반드시 정상이어야 하는 기능 또는 데이터:
- 기기 자체의 디스플레이 시스템
카메라 프레임 데이터의raw camera image data카메라 프레임 데이터의intrinsics(알고리즘이 일부 오차를 허용하므로 데이터 정확성을 완전히 보장할 수는 없습니다)카메라 프레임 데이터의extrinsics카메라 프레임 데이터와렌더링 프레임 데이터의device pose좌표 일관성카메라 프레임 데이터와렌더링 프레임 데이터의device pose시간차
참고
이미지 트래킹은 추적 대상이 전체 이미지의 일정 비율을 차지해야 합니다. 이미지를 추적할 수 없다면 머리를 이미지에 더 가까이 이동해 보세요.
이미지 트래킹은 이미지의 가로 길이가 실제 물체 크기와 같아야 합니다. 예제에서는 가로 길이가 수평으로 놓인 A4 용지의 긴 변을 가득 채우는 이미지를 추적해야 하므로, 자를 사용해 이미지의 가로 길이를 A4 크기에 맞추지 않는 한 컴퓨터 화면에 표시된 이미지는 추적하지 마세요.
EIF를 사용할 때는 이미지 트래킹이 완벽한데 기기에서는 그렇지 않다면, 다른 테스트를 진행하기 전에 먼저 해결해야 합니다. 이후 단계에서 문제를 해결하는 것은 훨씬 더 어렵습니다.
가상 물체가 실제 물체와 멀리 떨어진 곳에 떠 있는 것처럼 보이고, 사람이 움직이지 않아도 그렇다면 intrinsics 또는 extrinsics가 잘못되었거나 카메라 프레임 데이터와 렌더링 프레임 데이터의 device pose가 같은 좌표계에 있지 않거나, 혹은 디스플레이 시스템이 이런 오차를 만들어낸 것일 수 있습니다.
가상 물체가 머리를 움직일 때 계속 이동하면서 지연이 있는 것처럼 보인다면, device pose가 충분히 건강하지 않을 가능성이 큽니다. 이런 경우는 주로 다음 상황에서 발생합니다(다른 문제 가능성을 배제할 수는 없습니다).
device pose와raw camera image data의 데이터 시점이 동기화되지 않음카메라 프레임 데이터와렌더링 프레임 데이터에서 같은 pose를 사용함
6단계: EIF를 사용해 기기에서 밀집 공간 매핑 실행
반드시 정상이어야 하는 기능 또는 데이터:
- 기기 자체의 디스플레이 시스템
카메라 프레임 데이터의raw camera image data카메라 프레임 데이터의intrinsics(알고리즘이 오차를 어느 정도 허용하므로 데이터 정확성을 완전히 보장할 수는 없습니다)카메라 프레임 데이터의extrinsics카메라 프레임 데이터의device pose
메쉬 생성 속도가 매우 느리거나 바닥 재구성이 울퉁불퉁하다면, device pose에 문제가 있을 가능성이 높습니다. pose의 좌표계가 올바르지 않거나 pose의 시점이 맞지 않을 수도 있습니다.
팁
입력 데이터의 frame rate가 낮으면 메쉬 생성 속도도 느려지지만, 품질은 크게 나빠지지 않습니다. 이런 경우는 정상입니다.
보통은 정확한 메쉬 위치를 판별하기가 그리 쉽지 않기 때문에, 밀집 공간 매핑을 사용할 때 디스플레이 시스템 오차가 반드시 눈에 보이는 것은 아닙니다.
Mega 예제 실행
아래 내용을 읽고 Unity에서 Mega를 사용하는 방법을 알아보세요. 아직 Mega 서비스를 개통하지 않았다면 EasyAR 영업팀에 문의해 체험 자격을 받아야 합니다.
- EasyAR Mega 소개
- 내 위치 기능을 사용할 수 있나요?에서 위치 라이브러리가 올바르게 생성되고 지도가 추가되었는지 확인합니다.
- EasyAR Mega Unity 샘플 빠른 시작
그다음 기기에서 Mega를 실행해 모바일 기기에서의 결과와 비교합니다(기준은 iPhone을 권장합니다). 다음 사항을 주의 깊게 봅니다.
- 물체 표시 위치가 올바른지
- 멀리 있는 물체(10M 이상)의 표시 위치와 크기가 올바른지
- 시선 중심 밖의 물체 표시 위치와 크기가 올바른지
- 머리를 돌릴 때 물체 표시 위치와 크기가 올바른지
동작 중 이상 상황 해결
반드시 정상이어야 하는 기능 또는 데이터:
- 기기 자체의 디스플레이 시스템
카메라 프레임 데이터와렌더링 프레임 데이터의 모든 데이터
이미지 트래킹과 밀집 공간 매핑 두 기능의 검증을 마치면, 이론적으로 EasyAR Mega는 이미 지원되고 있어야 합니다. 헤드셋에서의 동작이 모바일 기기보다 현저히 나쁘다면 다음 사항을 확인하세요.
카메라 프레임 데이터와렌더링 프레임 데이터의 pose 데이터와 timestamp를 확인합니다.- 모션 추적/VIO 시스템 출력을 확인합니다.
XR Origin아래의 팬더는 좋은 기준이 됩니다.
또한 기기 자체의 디스플레이 시스템, 특히 멀리 있는 물체, 시선 중심 밖의 물체, 머리를 돌릴 때의 물체 표시 효과를 중점적으로 살펴봐야 합니다. 이런 상황은 기기 자체 테스트에서는 자주 놓치지만, 보통 문제의 원인은 여전히 기기 자체의 디스플레이 시스템입니다. 이러한 문제와 가능한 영향에 대해 EasyAR에 알려 주고, 개발자에게 합리적인 결과 기대치를 제공해야 합니다.
중요
사용자는 이런 디스플레이 문제에 매우 민감하며, 많은 기기 역시 넓은 공간 장면에서 완벽한 디스플레이 효과를 제공하지 못합니다. EasyAR는 기기 자체의 디스플레이 문제를 해결할 수 없으며, 이는 기기 제조사가 반복적으로 개선해야 합니다. 동시에 사용자도 이러한 문제를 이해해야 합니다.
다음 단계
관련 주제
기기에서 실행할 수 있는 예제: