메가 추적 대상 추가
이 문서에서는 메가의 추적 대상을 추가하는 방법과 개발을 보조하기 위해 Unity 편집기에서 환경 모델을 로드하는 방법을 설명합니다.
시작하기 전에
- 내 로컬라이제이션 라이브러리를 사용할 수 있나요? 확인
- 메가 기능을 활성화하려면 최신 버전의 EasyAR 플러그인 가져오기
- Unity AR의 추적 대상 기본 개념 및 사용법 이해
참고
다음 내용 및 도구는 EasyAR 메가를 사용하여 Unity 앱을 개발하는 과정에만 적용됩니다.
미니프로그램을 개발하는 경우 Unity 편집기를 사용하여 주석 생성 및 업로드(미니프로그램 개발)를 참조하세요.
메가 매핑 결과만 확인하려는 경우 메가 사용 가이드의 3D 실경 메쉬 미리보기를 참조하세요.
로컬라이제이션 효과를 시뮬레이션하여 확인해야 하지만 사용 가능한 Unity 애플리케이션 프로젝트가 없는 경우 메가 사용 가이드의 시뮬레이션 효과 미리보기를 참조하세요.
메가의 추적 대상
메가의 추적 대상은 BlockController 컴포넌트를 포함하는 빈 게임 오브젝트로, 블록(block)이라고 합니다. 장면에서 블록은 BlockRootController 컴포넌트를 포함하는 빈 게임 오브젝트 아래에 구성되며, 이 오브젝트의 기본 이름은 MegaBlocks입니다. MegaBlocks 아래의 모든 블록 오브젝트는 현재 로컬라이제이션 라이브러리의 모든 추적 대상을 나타냅니다.

개발 중에는 3D 콘텐츠를 보고 배치하는 데 블록 모델을 사용하는 경우가 많습니다. 이 모델은 도구를 사용하여 장면에 로드할 수 있어 확인 및 참조가 용이합니다.

모델 위치는 블록 추적 대상과 정렬되어 있으며, 모델 위에 직접 3D 콘텐츠를 배치할 수 있습니다.
팁
모델은 도구 노드 아래에 저장되며 편집기 모드에서만 존재하며 최종 애플리케이션에 번들로 포함되지 않습니다.
편집기에서 추적 대상 추가
이 방법을 사용하려면 BlockHolder.BlockRootSource를 External(기본값) 또는 Mixed로 구성해야 합니다.

Block Viewer for Unity Developer 도구 추가
Hierarchy 뷰에서 빈 공간을 우클릭하고 EasyAR Mega > Tool > Block Viewer for Unity Developer (Edit Mode) 메뉴를 통해 Unity 개발용 Block Viewer 도구를 추가할 수 있습니다.

중요
Unity로 메가 애플리케이션을 개발할 때는 반드시 Block Viewer for Unity Developer 도구를 사용해야 합니다. EasyAR Mega > Tool 메뉴 아래의 다른 도구는 Unity 앱 개발에 적합하지 않습니다.
Annotation Tool에도 유사한 기능이 있지만, 이 도구의 일부 기능은 향후 버전에서 제거될 예정이므로 사용하지 않는 것이 좋습니다.
Annotation Tool의 주석 기능(주석 자체만)은 곧 EasyAR 개발 센터 웹으로 마이그레이션될 예정이며, 블록 메쉬 로드 및 모델 배치는 영향을 받지 않습니다.
도구가 성공적으로 추가되면 장면 계층 구조에 EasyAR.Mega.BlockViewer (Dev) 노드와 MegaBlocks 노드가 추가됩니다.

추적 대상 생성 —— 블록
EasyAR.Mega.BlockViewer (Dev) 노드를 선택하고 Inspector 패널에서 EasyAR 계정 정보를 입력하여 로그인합니다.

Mega Cloud Service 오른쪽 버튼을 클릭합니다.

사용할 Mega 로컬라이제이션 서비스를 선택하고 확인을 클릭합니다.

서비스를 선택한 후 현재 라이브러리의 블록 목록이 MegaBlocks 노드 아래에 표시되고 도구 패널에 나타납니다.

여기까지 하면 추적 대상 블록이 생성되며, MegaBlocks 노드 아래의 각 Block_로 시작하는 하위 노드는 하나의 블록 추적 대상을 나타냅니다.
블록 모델 로드
선택한 블록 로드를 클릭합니다:

로드가 완료되면 블록이 Scene 창에 표시됩니다.

로컬라이제이션 성공 시 자동으로 추적 대상 추가
이 방법을 사용하려면 BlockHolder.BlockRootSource를 Internal 또는 Mixed로 구성해야 합니다.
이 두 모드에서 새로운 블록이 로컬라이즈되고 BlockHolder.BlockRoot 노드에 해당 블록이 없는 경우, 이 새로운 블록은 BlockHolder.BlockRoot 노드에 자동으로 추가됩니다. BlockHolder.BlockRoot이 존재하지 않으면 자동으로 생성됩니다.
팁
로컬라이제이션 성공 시 추적 대상을 자동으로 추가할 때는 블록 모델을 로드할 수 없으며 블록 추적 대상만 추가할 수 있습니다.
스크립트에서 추적 대상 추가
이 방법을 사용하려면 BlockHolder.BlockRootSource를 Internal 또는 Mixed로 구성해야 합니다. 이 경우 BlockHolder.BlockRoot이 존재하지 않으면 자동으로 생성됩니다. 또는 BlockHolder.BlockRootSource이 External일 때 편집기에서 미리 BlockHolder.BlockRoot 게임 오브젝트를 지정할 수도 있습니다.
참고
블록이 로컬라이제이션 라이브러리에 없으면 스크립트를 사용하여 장면에 추가하더라도 블록을 로컬라이즈할 수 없습니다.
BlockHolder.Hold 메서드를 사용하여 새 블록을 BlockHolder.BlockRoot 노드 아래에 추가할 수 있습니다. 이 메서드는 일반적으로 ema 주석 파일을 사용할 때, 스크립트가 주석 정보를 읽은 후 블록을 추가하는 데 사용됩니다.
예를 들어, 다음 코드 조각은 주석 파일의 정보를 사용하여 블록을 추가하는 방법을 보여줍니다:
foreach (var item in ema.blocks)
{
var info = new BlockController.BlockInfo { ID = item.id.ToString(), Timestamp = item.timestamp };
if (!item.keepTransform && item.location.OnSome)
{
blockHolder.Hold(info, item.location.Value);
}
else
{
blockHolder.Hold(info, item.transform.ToUnity());
}
}
팁
런타임에 스크립트를 사용하여 추적 대상을 추가할 때는 블록 모델을 로드할 수 없으며 블록 추적 대상만 추가할 수 있습니다.