프레임 데이터 소스 그룹 추가
하나의 AR Session에는 여러 프레임 데이터 소스 컴포넌트를 포함할 수 있으며, 이를 frame source group이라고 합니다. runtime에서 session은 현재 디바이스와 활성화된 AR 기능에 따라 frame source group에서 가장 적합한 프레임 데이터 소스를 선택해 사용합니다. 이 문서에서는 frame source group을 사용하고 관리하는 방법을 소개합니다.
시작하기 전에
- frame source의 기본 개념, 유형 및 runtime 선택 방법을 이해합니다.
preset AR Session의 frame source group 사용
기본 설정으로 생성한 session은 프레임 데이터 소스 그룹을 기본으로 포함하며, 단일 AR 기능을 사용할 때는 일반적으로 충분합니다.
preset session마다 포함되는 프레임 데이터 소스는 다릅니다.
ARSessionFactory.ARSessionPreset.ImageTracking preset 또는
AR Session (Image Tracking Preset)메뉴로 생성한 session에는 단일 프레임 데이터 소스만 있습니다:
ARSessionFactory.ARSessionPreset.MegaBlock_MotionTracking_Inertial preset 또는
AR Session (Mega Block Default Preset)메뉴로 생성한 session의 scene hierarchy에는 여러 프레임 데이터 소스 컴포넌트가 포함됩니다:
scene에서 처음에 어떤 preset으로 session을 만들었다면, 반복 개발 중 다른 기능을 추가할 때 해당 frame filter 컴포넌트를 추가하는 것뿐 아니라 필요에 따라 적절한 프레임 데이터 소스 컴포넌트도 추가해야 합니다.
중요
4.7 또는 이전 버전에서 업그레이드한 후 preset frame source group을 사용하려면 session 전체를 삭제한 뒤 메뉴 또는 ARSessionFactory를 통해 session을 다시 생성해야 합니다.
다음은 모든 preset AR 기능에 기본으로 구성되는 프레임 데이터 소스 컴포넌트를 나열합니다. 목록의 순서는 scene의 프레임 데이터 소스 컴포넌트 순서와 동일합니다.
| Preset | 프레임 데이터 소스 그룹 |
|---|---|
참고
preset으로 생성된 컴포넌트 순서는 built-in frame source가 지원하는 모든 디바이스에서 최적의 프레임 데이터 소스를 사용하도록 보장합니다.
기본 frame source 설정 사용
기본 파라미터를 사용할 때 frame source 설정은 디바이스와 runtime에 활성화된 AR 기능에 따라 자동으로 조정됩니다.
frame source 파라미터를 수동으로 수정한 적이 있다면, session의 AR 기능이 변경될 때(예: 원래 image tracking만 포함하던 session에 motion tracking 기능을 추가하는 경우) 새로운 기능 요구에 맞게 frame source 파라미터를 수동으로 조정해야 할 수 있으며, 그래야 모든 AR 기능이 최적의 효과로 동작할 수 있습니다.
중요
4.7 또는 이전 버전에서 업그레이드한 후 올바른 기본 파라미터를 사용하려면 session 전체를 삭제한 뒤 메뉴 또는 ARSessionFactory를 통해 session을 다시 생성해야 합니다.
frame source group 추가
Hierarchy 보기에서 AR Session (EasyAR) 를 선택하고 마우스 오른쪽 버튼을 클릭한 뒤, 메뉴 EasyAR Sense > [ AR Feature ] > Frame Source : *를 통해 해당 기능에 적합한 frame source 컴포넌트를 추가할 수 있습니다. 또한 메뉴 EasyAR Sense > Frame Source by Transform Type > * Dof > Frame Source : *를 통해 필요한 frame source 컴포넌트를 추가할 수도 있습니다.
script에서는 ARSessionFactory.AddFrameSource<Source>(GameObject, bool)를 사용해 frame source 컴포넌트를 추가할 수 있습니다.
예를 들어 메뉴 EasyAR Sense > Frame Source by Transform Type > 3 Dof Rot-Only > Frame Source : Three Dof Camera Device를 사용하면 현재 선택한 session에 ThreeDofCameraDeviceFrameSource를 추가할 수 있습니다.

해당 script code는 다음과 같습니다:
ARSessionFactory.AddFrameSource<ThreeDofCameraDeviceFrameSource>(session);
frame source 정렬
session assembly 과정에서 frame source group의 프레임 데이터 소스 중 최종적으로 하나만 선택되어 session에 조립됩니다. 선택 규칙은 AssembleOptions.FrameSourceSelection 속성 값에 따라 달라집니다. 기본 설정에서는 frame source group 안의 각 컴포넌트 순서를 조정하여 최종 선택되는 frame source에 영향을 줄 수 있습니다.
일반적으로 Hierarchy 보기에서 scene의 object를 정렬하는 방법으로 frame source object를 직접 이동해 정렬할 수 있습니다.
script에서는 Transform.SetSiblingIndex(int)를 사용해 object 순서를 조정할 수 있습니다.
예를 들어 MotionTrackerFrameSource를 다른 frame source보다 앞에 두려면 Hierarchy 보기에서 Motion Tracker object를 선택하고 가장 위 위치로 드래그합니다.
같은 효과는 아래 script code로도 구현할 수 있습니다:
motionTrackerFrameSource.transform.SetSiblingIndex(0);
또한 몇 가지 predefined 정렬 방법을 사용할 수 있습니다. Hierarchy 보기에서 AR Session (EasyAR) 를 선택하고 마우스 오른쪽 버튼을 클릭한 뒤, 메뉴 EasyAR Sense > Utility > Sort Frame Source : * > *를 통해 특정 frame source 컴포넌트들을 정렬합니다.
script에서는 ARSessionFactory.SortFrameSource(GameObject, ARSessionFactory.FrameSourceSortMethod)를 사용해 같은 효과를 구현할 수 있습니다.
예를 들어 메뉴 EasyAR Sense > Utility > Sort Frame Source : Motion Tracker > System SLAM을 사용하면 MotionTrackerFrameSource를 ARCoreFrameSource, ARCoreARFoundationFrameSource, ARKitFrameSource, ARKitARFoundationFrameSource, AREngineFrameSource보다 앞에 배치할 수 있습니다.

해당 script code는 다음과 같습니다:
ARSessionFactory.SortFrameSource(session, new ARSessionFactory.FrameSourceSortMethod { MotionTracker = ARSessionFactory.FrameSourceSortMethod.MotionTrackerSortMethod.PreferEasyAR });
위 정렬 후 scene hierarchy는 다음과 같이 됩니다:

관련 주제
- headset용 frame source를 추가하고 설정하는 방법을 알아봅니다
- runtime에서 사용 중인 frame source 가져오기를 시도합니다
