Unity AR의 모션 트래킹 중심 —— XR Origin
XR Origin은 Unity에서 모션 트래킹 기능의 핵심 개념입니다. 현대 AR 애플리케이션에서 모션 트래킹은 점차 필수 기능으로 자리잡고 있습니다. 모션 트래킹을 통해 애플리케이션은 다른 식별물 없이도 사용자가 현실 세계에서의 위치와 방향을 파악하여 몰입형 AR 경험을 구현할 수 있습니다. 아래 내용을 통해 XR Origin의 기본 개념, 구성 요소, 라이프사이클 및 사용 시기를 이해할 수 있습니다.
시작하기 전에
- ARSession 소개를 통해 session의 기본 개념, 구성 요소 및 워크플로를 이해하세요.
XR Origin이란
모션 트래킹 기능 초기화 시 추적 원점으로 참조점이 선택됩니다. 이 참조점은 일반적으로 사용자가 애플리케이션을 시작할 때 또는 시스템 AR 서비스가 시작될 때 기기가 위치한 지점입니다. Unity 씬에서 이 참조점을 대표하는 것이 XR Origin입니다. 대부분의 경우 XR Origin의 초기 위치는 카메라의 기본 시작 위치이기도 합니다.
이 영상은 모션 트래킹만 동작하는 간단한 AR 씬을 보여줍니다. 왼쪽은
Hierarchy뷰, 중앙은Scene뷰, 오른쪽은Game뷰입니다. 영상은 시뮬레이션 데이터를 사용해 Unity 에디터의Play모드에서 녹화되었습니다.Game뷰의 내용은 사용자가 현실 세계에서 스마트폰으로 보는 내용과 동일합니다.영상에서 XR Origin(파란색 구체)은 씬에서 고정된 위치에 있지만, 사용자를 나타내는 카메라(카메라 아이콘)는 현실 세계에서의 사용자 이동에 따라 움직입니다. 흰색 원뿔은 지난 시간 동안 카메라의 위치와 방향 궤적을 표시하여 씬 내 카메라 운동을 더 잘 이해할 수 있게 합니다. 이 흰색 원뿔들이 XR Origin 노드 아래 생성된 것을 볼 수 있는데, 이는 이러한 씬에서 오브젝트의 전형적인 조직 구조입니다.
Unity의 모션 트래킹 시스템에서 카메라는 일반적으로 XR Origin을 따라 움직입니다. 카메라가 반드시 XR Origin의 자식 노드일 필요는 없지만, AR Session은 카메라 위치를 계산할 때 XR Origin의 위치를 기준으로 하여 사용자가 보는 내용이 현실 세계와 일관되도록 합니다.
이 영상은 동일한 씬을 보여주지만, 이번에는 런타임 중 XR Origin(파란색 구체)을 이동시켰습니다. XR Origin이 이동된 후 카메라가 XR Origin을 따라 움직이지만,
Game뷰의 내용은 변하지 않은 것을 확인할 수 있습니다.
실제 AR 씬에서는 이러한 운동 관계가 더욱 복잡합니다.
다양한 센터 모드에서의 XR Origin 동작
Unity에서 모든 AR 추적의 중심 참조점을 session center라고 하며, session 실행 중 이 중심을 결정하는 규칙을 센터 모드라고 합니다. 서로 다른 센터 모드에서 XR Origin의 동작은 다음과 같이 다릅니다:
SessionOrigin 센터 모드에서는 XR Origin을 자유롭게 이동할 수 있습니다.
일반적으로 SessionOrigin 모드는 모션 트래킹만 작동하는 씬에서 사용됩니다. 다른 기능이 동시에 실행될 때는 일반적으로 SessionOrigin 모드를 사용하지 않습니다.
하지만 헤드셋을 사용할 때 제조사가 Unity에서 모션 트래킹 참조점을 올바르게 구현하지 않은 경우, Unity의 world center를 강제로 사용해야 하므로 SessionOrigin 모드를 적용해야 합니다. 이 경우 콘텐츠 루트 노드가 AR 기능을 따라 움직여야 하므로 콘텐츠 효과에 영향을 미칠 수 있지만, 타사 제조사가 변경하기 전에는 다른 방법이 없습니다.
다른 센터 모드(예: FirstTarget)에서는 XR Origin을 자유롭게 이동할 수 없습니다.
일반적으로 FirstTarget 모드는 모션 트래킹이 아닌 경우나 다른 AR 기능이 모션 트래킹과 동시에 실행되는 씬에서 사용됩니다.
이 모드에서는 XR Origin의 위치가 AR 기능에 의해 결정되므로 XR Origin을 임의로 이동해서는 안 됩니다.
센터 모드와 씬 내 오브젝트 운동 방식에 대한 자세한 내용은 다음을 참조하세요: 센터 모드.
XR Origin의 형태와 구성
EasyAR는 두 가지 형태의 XR Origin을 사용할 수 있습니다:
- EasyAR에서 제공하는 XR Origin
- Unity XR 프레임워크에서 제공하는 XR Origin
XR Origin (EasyAR)
전형적인 XR Origin 구조는 다음과 같습니다:

XR Origin 루트 노드는 빈 GameObject이며, 하나 이상의 XR Origin Child 자식 노드를 가질 수 있습니다. XR Origin Child에는 XR Origin 제어 로직을 대행하는 XROriginChildController 컴포넌트가 포함됩니다.
session 실행 중 씬에 올바른 XR Origin 구조가 없으면 XR Origin과 XR Origin Child가 자동으로 생성됩니다. 실행 과정에서 XR Origin Child는 XR Origin과 동일한 위치와 방향으로 제약됩니다.
session에 의해 생성된 오브젝트(예: sparse spatial map의 point cloud 또는 dense spatial map의 mesh)는 XR Origin Child 노드 아래에 생성됩니다.
이 영상은 동일한 씬에서 모션 트래킹과 동시에 dense spatial mapping이 실행되는 효과를 보여줍니다. 생성된 mesh가 XR Origin Child 노드 아래에 생성된 것을 확인할 수 있습니다.
참고: 이해를 돕기 위해 영상에서는 depth map 생성을 비활성화했으므로,
Scene뷰의 내용은 실제 실행 시 표시되는 내용과 차이가 있을 수 있습니다.Game뷰의 표시 효과는 mesh 투명도를 비활성화한 경우와 동일합니다.
[선택 사항] XR Origin (Unity XR)
필요한 경우 Unity XR 프레임워크에서 제공하는 XR Origin 컴포넌트를 사용할 수 있습니다.
Unity XR 프레임워크의 XR Origin을 사용할 때 전형적인 구조는 다음과 같습니다:

헤드셋 씬에서의 전형적인 구조는 다음과 같습니다:

XR Origin 루트 노드는 Unity XR 프레임워크가 생성 및 유지 관리하는 GameObject이며, 하나 이상의 XR Origin Child 자식 노드를 가질 수 있습니다. XR Origin Child에는 XR Origin 제어 로직을 대행하는 XROriginChildController 컴포넌트가 포함됩니다.
session 실행 중 씬에 올바른 XR Origin Child 구조가 없으면 XR Origin Child가 자동으로 생성됩니다. 실행 과정에서 XR Origin Child는 XR Origin과 동일한 위치 및 방향으로 제약됩니다.
Unity XR 프레임워크의 XR Origin은 주로 다음 두 가지 상황을 지원합니다:
- 프로젝트에서 이미 AR Foundation을 사용 중이며 EasyAR와 동시에 작동하거나 기기 지원 상황에 따라 둘 사이를 전환하고자 하는 경우
- 사용 중인 헤드셋 SDK가 Unity XR 프레임워크의 XR Origin 컴포넌트를 사용하는 경우
참고
Unity XR의 핵심 패키지 com.unity.xr.core-utils가 프로젝트로 가져오지 않았을 때, 씬의 카메라가 Unity XR 프레임워크의 XR Origin과 동일한 계층 구조(카메라 및 Camera Offset이라는 부모 노드)에 있으면 session은 이 구조를 Unity XR 프레임워크가 생성한 것으로 간주하고 이를 사용합니다. 이는 씬에 최대한의 호환성을 제공하기 위함입니다. 즉, AR Foundation으로 생성된 씬은 AR Foundation이 프로젝트에 가져오지 않았을 때 AR Foundation은 작동하지 않지만 나머지 AR 기능은 계속 정상 작동합니다. AR Foundation만 제공할 수 있는 기능을 제외하면, 이는 전체 AR 애플리케이션의 기능성 및 기기 호환성에도 영향을 미치지 않습니다.
대부분의 EasyAR 예제 씬은 AR Foundation이 없을 때도 계속 실행될 수 있도록, 그리고 AR Foundation이 존재할 때 AR Foundation과의 협업 능력을 보여주기 위해 이 방식을 사용합니다.
AR Foundation의 정의에서 XR Origin은 XR 씬에서 추적 공간의 중심입니다. 하지만 주의할 점은, AR Foundation의 개념에서 모션 트래킹은 필수 기능으로 간주되며, 여기서 설명하는 XR 씬의 추적이 바로 모션 트래킹을 의미합니다.
EasyAR 시스템에서는 모션 트래킹이 선택적 기능이므로 XR Origin 역시 선택 사항입니다. XR Origin은 모션 트래킹 기능이 활성화된 경우에만 생성되고 사용됩니다.
XR Origin 라이프사이클
XR Origin의 라이프사이클은 session에 의존합니다. session이 시작될 때 XR Origin이 선택되거나 생성됩니다(씬에 올바른 XR Origin 구조가 없는 경우). session이 중지되면 XR Origin은 다음 session에 의해 사용되거나 수동으로 삭제될 때까지 그 자리에 남아 있습니다.
다음 단계
생성
- 씬에서 XR Origin 생성을 시도해 보세요.
실행 제어
- XR Origin의 활성화 제어 전략을 이해하세요.