Hmd를 지원하는 EasyAR
이 문서는 EasyAR Sense Unity Plugin의 HMD 확장 패키지 템플릿을 사용하여 HMD 디바이스를 지원하는 EasyAR 확장 패키지를 개발하는 방법을 설명합니다.
시작하기 전에
개발을 시작하기 전에 EasyAR Sense Unity Plugin 사용법을 이해해야 합니다.
- 빠른 시작
- AR Session 샘플, 이미지 추적 샘플 ImageTracking_Targets 및 고밀도 공간 맵 샘플 SpatialMap_Dense_BallGame 실행. 이들의 실행 효과는 휴대폰과 HMD에서 유사합니다.
HMD 플러그인 개발에는 다음과 같은 기본 기능이 포함되므로 먼저 이 내용을 이해해야 합니다:
- AR Session 이해하기
- 프레임 데이터 소스 및 외부 프레임 데이터 소스 이해하기
또한 Unity 패키지 개발 방법에 익숙해져야 합니다.
AR/MR을 위한 디바이스 준비
모션 추적/VIO 시스템 준비
디바이스 추적 오류가 제어되는지 확인하십시오. Mega와 같은 일부 EasyAR 기능은 어느 정도 디바이스 누적 오류를 줄일 수 있지만 큰 지역적 오류는 EasyAR 알고리즘을 불안정하게 만들 수 있습니다. 일반적으로 VIO 드리프트가 1‰ 미만이 되기를 기대합니다.
디스플레이 시스템 준비
가상 세계에 현실의 어떤 물체와 크기 및 윤곽이 동일한 가상 물체가 배치되고, 가상 물체와 가상 카메라 간의 상대적 변환 관계가 현실 세계에서 해당 물체와 디바이스 간의 변환 관계와 동일할 때, 가상 물체가 실제 물체 위에 정확히 표시되고 디바이스 이동이나 머리 회전으로 인해 표시 효과가 깨지지 않도록 하십시오. Vision Pro의 효과를 참고할 수 있습니다.
디바이스 SDK 준비
외부 입력 프레임 데이터를 제공할 수 있는 API가 이미 있는지 확인하십시오. 이 데이터는 시스템 내 두 개의 시점에서 생성되어야 하며 데이터가 정렬되지 않는 상황이 발생하지 않도록 해야 합니다.
HMD 확장 패키지 템플릿 사용하기
Unity의 Package Manager window를 사용하여 로컬 tarball 파일로 플러그인 설치하여 EasyAR Sense Unity Plugin (패키지 com.easyar.sense)을 가져옵니다. HMD 확장 템플릿 (패키지 com.easyar.sense.ext.hmdtemplate)을 Unity 프로젝트의 Packages 디렉토리에 압축 해제하고 Samples~ 폴더 이름을 Samples로 변경합니다.
이때 다음과 같은 디렉토리 구조가 보여야 합니다:
.
├── Assets
└── Packages
└── com.easyar.sense.ext.hmdtemplate
├── CHANGELOG.md
├── Documentation~
├── Editor
├── LICENSE.md
├── package.json
├── Runtime
└── Samples
└── Combination_BasedOn_HMD
팁
필요한 경우 Unity에서 허용하는 방식을 사용하여 EasyAR Sense Unity Plugin을 가져오고 HMD 확장 템플릿을 저장할 수 있습니다.
템플릿을 사용하지 않으려면 Unity 사용자 정의 패키지 생성 가이드를 참조하여 새 패키지를 생성할 수 있습니다.
디바이스 SDK가 Unity 패키지로 구성되지 않은 경우, HMD 확장 템플릿을 Unity의 Assets 폴더에 압축 해제한 후 압축 해제된 파일에서 package.json 및 .asmdef 접미사가 붙은 모든 파일을 삭제해야 합니다. 이 사용 방식에서는 디바이스 SDK와 EasyAR를 함께 사용하는 사용자가 적절한 버전 종속성을 얻을 수 없음을 유의하십시오.
런타임 입력 확장 완료
이미지 및 디바이스 모션 데이터 입력 확장 생성 방법에 따라 Runtime/HMDTemplateFrameSource.cs를 수정하고 HMD에 적합한 입력 확장을 완성하십시오. 이는 확장 패키지의 가장 주요한 개발 작업입니다.
에디터 메뉴 완료
MenuItems 클래스의 "HMD Template" 문자열을 디바이스 이름을 대표하는 문자열로 수정하십시오. 다른 사용자 정의 에디터 기능이 필요하면 다른 스크립트를 추가할 수도 있습니다.
개발자가 Hierarchy 뷰에서 AR Session (EasyAR) 을 선택하고 오른쪽 클릭하면 다음 메뉴 항목이 나타납니다:
EasyAR Sense>Extensions>Frame Source : [디바이스 이름]: 현재 세션에 해당 디바이스의 프레임 데이터 소스를 추가합니다.EasyAR Sense>Extensions>Frame Source : [디바이스 이름 (keep it only)]: 현재 세션에 해당 디바이스의 프레임 데이터 소스를 추가하고 유일하게 유지합니다.

애플리케이션 샘플 완료
샘플은 Samples/Combination_BasedOn_HMD에 위치합니다. 간결함을 위해 샘플 템플릿에는 코드가 없으며, 모든 AR 기능은 장면 내용 및 구성을 통해 완료됩니다.
디바이스 실행을 지원하는 내용을 장면에 추가하십시오.
팁
필요한 경우 반대로 할 수도 있습니다. 디바이스에서 실행 가능한 장면을 사용한 다음 EasyAR 컴포넌트 및 샘플 장면의 다른 물체를 장면에 추가하십시오.
세션 원점 아래에 배치하도록 설계된 물체를 수정하십시오.
장면에 세션 원점이 정의된 경우,
EasyARPanda및UI를 원점 노드 아래로 이동하십시오.
EasyARPanda는 디바이스 모션 추적 동작에 대한 참조를 제공하여 추적이 불안정할 때 원인을 판단하는 데 도움을 줍니다.이 물체 이름 괄호 안의 텍스트는 확장 개발자를 위한 안내이므로 삭제할 수 있습니다:
(Move into Origin if there is any)(Move into Origin if there is any, set constraint source to your rendering camera)
HUD버튼 동작 구성.UI의 constraint source를 가상 카메라로 설정하여HUD버튼이 예상대로 작동하도록 하십시오.
Canvas의 raycast 기능 구성.UI노드 아래의Canvas를 수정하여 raycast가 작동하도록 하여 모든 UI 버튼 및 스위치가 예상대로 작동하게 하십시오.템플릿에는 이미
Canvas노드 아래에 XR Interaction Toolkit의 Tracked Device Graphic Raycaster가 사전 추가되어 있으며, 해당 패키지를 가져온 후 볼 수 있습니다.
디바이스에서 실행할 때 XR Interaction Toolkit을 사용하지 않으면 다음과 같은 누락된 스크립트 경고가 표시됩니다. 이를 삭제하고 디바이스에 필요한 raycaster 컴포넌트를 추가할 수 있습니다.

다음 단계
- 확장 패키지를 더 진행하기 전에 먼저 입력 확장을 실행 검증 (bring-up)하십시오.
- 모두 완료되면 확장 패키지를 배포 준비할 수 있습니다.