AR Session의 center mode
Center mode는 Unity AR의 핵심 개념입니다. 이는 session이 runtime 중 모든 AR tracking의 reference point, 즉 center object로 어떤 객체를 선택하는지, 그리고 session 안의 어떤 객체가 자유롭게 이동할 수 있는지를 결정합니다. 다음 내용을 통해 center mode의 기본 개념과 scene 내 객체 이동 동작에 미치는 영향을 이해할 수 있습니다.
시작하기 전에
- AR Session 소개를 통해 session의 기본 개념, 구성 및 workflow를 이해하십시오.
- Camera를 통해 AR scenes에서 camera의 역할과 올바른 AR 경험을 보장하기 위해 session이 camera 속성을 어떻게 제어하는지 이해하십시오.
- XR Origin을 통해 XR Origin의 기본 개념, 구성 및 lifecycle을 이해하십시오.
- Target을 통해 target의 기본 개념, states 및 lifecycle을 이해하십시오.
Center object 및 center mode
하나의 session에서는 하나 이상의 서로 다른 AR 기능이 동시에 실행될 수 있습니다. 이러한 AR 기능은 서로 다른 객체를 tracking할 수 있으며, 동시에 motion tracking 기능을 사용하여 장치 자체의 위치와 방향을 tracking할 수도 있습니다.
scene에서 객체의 이동 동작이 예상과 일치하도록 하기 위해, session은 모든 AR tracking의 중심으로 하나의 reference point를 선택해야 합니다. Unity scene에서 이 reference point를 대표하는 것이 center object(CenterObject)입니다. Center mode(CenterMode)는 session runtime 중 이 center object가 어떤 객체인지를 결정하는 규칙입니다.
session의 중심은 다음 객체 중 하나일 수 있습니다.
- tracking 중인 target
- XR Origin
- Camera
Center mode는 session이 어떤 객체를 center object로 선택하는지, 그리고 이 객체가 자유롭게 이동할 수 있는지를 결정합니다. 이 객체 외의 객체, non-center camera, XR Origin 및 target을 포함한 객체들은 session의 제어를 받으며 center object를 reference point로 하여 이동합니다.
Unity에서 session은 다음 네 가지 center 모드를 지원합니다.
| 이름 | 그림 | 설명 |
|---|---|---|
| FirstTarget SpecificTarget |
![]() |
target을 중심으로 사용하며, 해당 target은 자유롭게 이동할 수 있습니다. 그중
|
| SessionOrigin | ![]() |
XR Origin을 중심으로 사용하며, XR Origin은 자유롭게 이동할 수 있습니다. session의 camera와 target은 session에 의해 제어되며, 중심 XR Origin을 기준점으로 이동합니다. |
| Camera | ![]() |
camera를 중심으로 사용하며, camera는 자유롭게 이동할 수 있습니다. session의 XR Origin과 target은 session에 의해 제어되며, 중심 camera를 기준점으로 이동합니다. |
그림에는 세 개의 객체가 있습니다. 파란색 구체는 XR Origin을, 파란색 원뿔은 camera를, 노란색 이미지는 target을 나타냅니다. 서로 다른 center 모드에서 session은 서로 다른 객체를 중심 객체로 선택합니다. 그림에는 해당 객체의 로컬 좌표계가 표시됩니다.
팁
AR Foundation 사용 경험이 있다면 AR Foundation에는 이와 유사한 개념이 없다는 것을 알 수 있습니다. 실제로 AR Foundation의 동작 방식은 SessionOrigin center 모드와 일치합니다.
session에서 target과 camera의 상대 운동 관계는 현재 session에 의해 제어됩니다. XR Origin과 camera의 상대 운동 관계는 현재 session 또는 AR Foundation 같은 타사 framework에 의해 제어됩니다. center 모드는 서로 다른 실행 환경에서도 session이 scene의 객체 운동 동작을 올바르게 제어할 수 있도록 보장합니다.
예를 들어 AR Foundation 또는 Unity XR 기반 헤드셋 SDK가 XR Origin과 camera의 상대 운동 관계를 제어하는 경우, Unity XR framework의 설계상 XR Origin은 session에 의해 제어되어 이동할 수 있지만 camera는 그렇지 않습니다. 이때 session은 center 모드를 FirstTarget, SpecificTarget 또는 SessionOrigin으로 제한합니다. 이렇게 하면 session 입장에서는 중심이 XR Origin 또는 어떤 target이 되고, Unity XR framework 입장에서는 중심이 여전히 XR Origin이므로 전체 시스템이 완벽하게 동작할 수 있습니다.
경고
Unity AR에서는 Unity 월드 좌표계에 존재하면서 session 컴포넌트에 따라 transform이 조정되지 않은 객체가 올바르게 표시되지 않을 수 있습니다. session은 중심 객체의 위치와 방향에 따라 scene의 다른 객체 위치와 방향을 조정하기 때문에, session에 의해 제어되지 않는 객체가 있으면 그 위치와 방향이 session이 계산한 위치와 방향과 일치하지 않을 수 있으며, 이로 인해 예기치 않은 동작이 발생할 수 있습니다.
예를 들어 월드 좌표계에 판다 모델을 배치하면, 이 판다 모델의 위치와 방향은 현실 세계의 어떤 객체와도 대응 관계가 없을 수 있으며 공중에 떠 있거나 여기저기 움직이는 것처럼 보일 수 있습니다.
올바른 방법은 표시할 콘텐츠를 항상 특정 target 노드 아래에 두거나, 콘텐츠가 XR Origin의 움직임을 따라야 하는 경우 XR Origin 노드 아래에 두는 것입니다. 이렇게 하면 콘텐츠의 위치와 방향이 session의 계산 결과에 따라 조정되어, 콘텐츠가 현실 세계에 올바르게 중첩될 수 있습니다.
콘텐츠와 target 또는 XR Origin의 위치와 방향을 수동으로 정렬할 수는 있지만, 올바른 시점에 수행해야 합니다. 적절한 center 모드 선택을 참고하십시오.
유효한 center 모드
모든 center 모드가 어떤 상황에서나 유효한 것은 아닙니다. session은 현재 실행 환경과 선택된 frame source에 따라 어떤 center 모드가 유효한지 결정하여, scene의 객체 운동 동작을 올바르게 제어할 수 있도록 합니다. ARSession.AvailableCenterMode 속성을 사용하여 현재 session의 유효한 center 모드 목록을 가져올 수 있습니다.
최종적으로 선택된 frame source에 따라 session의 유효한 center 모드는 다음과 같은 경우로 나뉩니다.
| frame source | camera 제어됨 | 운동 데이터 있음 | origin 설계 있음 | 유효한 center 모드 |
|---|---|---|---|---|
|
예 | 아니요 | - |
|
|
예 | 예 | 예 |
camera가XR Origin의 자식 노드가 아닐 때만 유효 |
|
아니요 | 예 | 예 |
|
|
아니요 | 예 | 예 |
|
|
아니요 | 예 | 아니요 |
|
FramePlayer를 사용하는 경우를 제외하고, 유효한 center 모드는 session 조립 시 결정됩니다. FramePlayer를 사용하는 경우, 유효한 center 모드는 session 실행 중 각 frame 데이터가 출력될 때 해당 데이터에 운동 정보가 포함되어 있는지에 따라 동적으로 결정됩니다.
다양한 center modes의 특성
다음으로, 일련의 샘플 비디오를 통해 다양한 center modes에서 객체의 이동 동작을 보여줍니다.
비디오 내용은 다음과 같습니다.
현실 세계에는 서로 다른 두 종류의 trackable objects가 있습니다.
- 하나는 크리스마스 트리이며, 정지해 있습니다. 이는 sparse spatial map 기능을 통해 tracking됩니다.
- 다른 하나는 A4 종이이며, 종이에 미리 이미지가 인쇄되어 있습니다. 이 종이는 이동할 수 있습니다. 이는 image tracking 기능을 통해 tracking됩니다.
비디오를 녹화할 때 observer, 즉 휴대폰은 크리스마스 트리의 오른쪽 뒤에서 시작해 트리 주위를 이동합니다. A4 종이는 observer 앞에서 좌우로 흔들립니다.
관찰을 쉽게 하기 위해 scene의 다양한 객체에 몇 가지 markers를 추가했습니다.
- 크리스마스 트리: tracking 상태일 때 해당 공간에 밝은 파란색 point cloud가 오버레이됩니다. tracking을 잃으면 이러한 markers는 사라집니다.
- A4 종이: tracking 상태일 때 바로 위에 판다가 오버레이됩니다.
Gameview에는 A4 종이의 내용과 크기가 완전히 동일한 이미지도 추가로 표시됩니다. tracking을 잃으면 이러한 markers는 사라집니다.- XR Origin: 해당 위치에 파란색 구체가 배치됩니다
- Camera: 해당 위치에 파란색 원뿔이 배치되며, 원뿔의 주축은 camera의 시선 방향과 일치합니다.
이 비디오들은 simulated runtime data를 사용하여 Unity editor의 Play mode에서 녹화되었습니다. 비디오 왼쪽은 Scene view이고 오른쪽은 Game view입니다. Game view의 내용은 현실 세계에서 사용자가 휴대폰으로 보는 내용과 같습니다.
FirstTarget 및 SpecificTarget center modes
FirstTarget 및 SpecificTarget center 모드는 특정 target을 중심 물체로 사용하는 모드입니다. 이 두 모드에서는 중심 target을 제외하고 session의 camera, XR Origin 및 다른 target이 모두 session의 제어를 받으며 중심 target을 기준점으로 움직입니다.
일부 target은 현실 세계에서 움직일 수 있습니다. 예를 들어 비디오의 A4 종이입니다.
위 비디오에서 중심 물체는 image tracking 기능으로 추적된 A4 종이입니다. 외부 조작이 없기 때문에 A4 종이(팬더)는 정지해 있고, camera(파란 원뿔), XR Origin(파란 구), 크리스마스트리(밝은 파란색 point cloud)는 모두 움직이는 것을 볼 수 있습니다.
일부 target은 현실 세계에서 정지해 있습니다. 예를 들어 비디오의 크리스마스트리입니다.
위 비디오에서 중심 물체는 sparse spatial map 기능으로 추적된 크리스마스트리입니다. 외부 조작이 없기 때문에 크리스마스트리(밝은 파란색 point cloud)는 정지해 있고, camera(파란 원뿔)와 A4 종이(팬더)는 움직이는 것을 볼 수 있습니다. XR Origin(파란 구)도 움직이지 않지만, 이는 크리스마스트리에 대해 정지해 있기 때문입니다.
이 두 모드에서는 기준점인 중심 target이 자유롭게 움직일 수 있습니다. 이때 session의 camera, XR Origin 및 다른 target도 함께 움직이며, 이들의 transform은 외부에서 제어할 수 없습니다.
위 비디오에서 중심 물체는 image tracking 기능으로 추적된 A4 종이입니다. 우리가 A4 종이(팬더)를 수동으로 움직였기 때문에 camera(파란 원뿔), XR Origin(파란 구), 크리스마스트리(밝은 파란색 point cloud)가 모두 함께 움직인 것을 볼 수 있습니다. 이때
Gameview에 표시되는 내용은 변하지 않는데, 이는 camera의 위치와 방향이 A4 종이 및 다른 물체에 대해 변하지 않기 때문입니다.
FirstTarget과 SpecificTarget 모드의 차이는 runtime 중 중심 target이 변경될 수 있지만, 변경 시 중심 선택 방식이 다르다는 점입니다. 이 문제를 설명하려면 tracking 성공과 tracking 손실 과정을 함께 고려해야 합니다.
session의 중심 물체가 변경될 때 ARSession.CenterObject는 항상 현재 중심 물체를 반영하지만, ARSession.CenterMode는 변경되지 않습니다.
FirstTarget center mode의 center 변화
FirstTarget center 모드에서 session은 항상 처음 추적된 target을 중심으로 사용합니다. 이 target의 tracking이 손실되면 session은 중심을 다시 선택합니다. session이 다른 target을 추적 중이거나 새로 추적하게 되면, 그 다른 target이 새로운 중심 객체로 선택됩니다.
중심 재선택은 다음과 같은 경우에 발생합니다.
현재 프레임에서 tracking 상태인
target이 하나도 없음
이때 SessionOrigin 모드가 유효하면 session은 SessionOrigin 모드로 폴백하고XR Origin을 중심 객체로 선택합니다. 그렇지 않으면 session은 Camera 모드로 폴백하고camera를 중심 객체로 선택합니다.현재 프레임에 tracking 상태인
target이 있고, 이전 프레임에는 tracking 상태인target이 하나도 없었음
이때 session은 추적 중인target객체 중 하나를 중심 객체로 선택합니다.현재 프레임에 tracking 상태인
target이 있고, 이전 프레임의 중심target이 현재 프레임에서 tracking을 잃었음
이때 session은 추적 중인target객체 중 하나를 새로운 중심 객체로 선택합니다.
위 영상에서 처음의 중심 객체는 image tracking 기능으로 추적된 A4 용지입니다. A4 용지(판다)의 tracking이 손실되면 session이 중심 객체를 다시 선택하는 것을 볼 수 있습니다. 이때 크리스마스트리(밝은 파란색 point cloud)가 새로운 중심 객체가 됩니다. 영상 끝에서 A4 용지가 다시 추적되지만, 크리스마스트리가 이미 중심 객체이므로 A4 용지는 중심 객체가 되지 않습니다.
SpecificTarget center 모드의 중심 변화
SpecificTarget center 모드에서 session은 항상 지정된 target을 중심으로 사용합니다. 이 target의 tracking이 손실되면 session은 중심을 다시 선택하지만, 다른 target을 새로운 중심 객체로 선택하지 않습니다. session이 이 지정된 target을 다시 추적하면, 이 target은 여전히 중심 객체로 선택됩니다.
중심 재선택은 다음과 같은 경우에 발생합니다.
현재 프레임에서 지정된
target이 추적되지 않음
이때 SessionOrigin 모드가 유효하면 session은 SessionOrigin 모드로 폴백하고XR Origin을 중심 객체로 선택합니다. 그렇지 않으면 session은 Camera 모드로 폴백하고camera를 중심 객체로 선택합니다.현재 프레임에서 지정된
target이 tracking 상태이고, 이전 프레임에서는 지정된target이 추적되지 않았음
이때 session은 지정된target을 중심 객체로 선택합니다.
위 영상에서 중심 객체는 image tracking 기능으로 추적된 A4 용지로 지정되어 있습니다. A4 용지(판다)의 tracking이 손실되어도 session은 다른
target을 새로운 중심 객체로 선택하지 않는 것을 볼 수 있습니다. 이때 크리스마스트리(밝은 파란색 point cloud)는 중심 객체가 되지 않습니다. 영상 끝에서 A4 용지가 다시 추적되고 중심 객체로 복귀합니다.
SessionOrigin center 모드
SessionOrigin center 모드는 XR Origin을 중심 객체로 사용하는 모드입니다. 이 모드에서는 session의 camera와 target이 session에 의해 제어되며, 중심 XR Origin을 기준점으로 이동합니다.
위 영상에서 중심 객체는 XR Origin입니다. 외부 조작이 없기 때문에 XR Origin(파란색 구체)은 정지해 있고, camera(파란색 원뿔)와 A4 용지(판다)는 이동하는 것을 볼 수 있습니다. 크리스마스트리(밝은 파란색 point cloud)도 이동하지 않지만, 이는 XR Origin에 대해 정지해 있기 때문입니다.
이 모드에서는 기준점이 되는 중심 XR Origin이 자유롭게 이동할 수 있습니다. 이때 session의 camera와 target도 함께 이동하며, 이들의 transform은 외부에서 제어할 수 없습니다.
위 영상에서 중심 객체는 XR Origin입니다. 수동으로 XR Origin(파란색 구체)을 이동했기 때문에 camera(파란색 원뿔), 크리스마스트리(밝은 파란색 point cloud), A4 용지(판다)가 모두 함께 이동한 것을 볼 수 있습니다. 이때
Gameview에 표시되는 내용은 변하지 않는다는 점에 유의해야 합니다. camera의 위치와 방향이 XR Origin 및 다른 객체에 대해 변하지 않았기 때문입니다.
SessionOrigin 모드에서는 XR Origin이 반드시 유효해야 하므로, 이 모드에서는 중심 객체가 변하지 않습니다.
Camera center 모드
camera center 모드는 camera를 중심 객체로 사용하는 모드입니다. 이 모드에서는 session의 XR Origin과 target이 session에 의해 제어되며, 중심 camera를 기준점으로 이동합니다.
위 영상에서 중심 객체는 camera입니다. 외부 조작이 없기 때문에 camera(파란색 원뿔)는 정지해 있고, XR Origin(파란색 구체), 크리스마스트리(밝은 파란색 point cloud), A4 용지(판다)는 이동하는 것을 볼 수 있습니다.
이 모드에서는 기준점이 되는 중심 camera가 자유롭게 이동할 수 있습니다. 이때 session의 XR Origin과 target도 함께 이동하며, 이들의 transform은 외부에서 제어할 수 없습니다.
위 영상에서 중심 객체는 camera입니다. 수동으로 camera(파란색 원뿔)를 이동했기 때문에 XR Origin(파란색 구체), 크리스마스트리(밝은 파란색 point cloud), A4 용지(판다)가 모두 함께 이동한 것을 볼 수 있습니다. 이때
Gameview에 표시되는 내용은 변하지 않는다는 점에 유의해야 합니다. camera의 위치와 방향이 XR Origin 및 다른 객체에 대해 변하지 않았기 때문입니다.
Camera 모드에서는 camera가 반드시 유효해야 하므로, 이 모드에서는 중심 객체가 변하지 않습니다.
다음 단계
- 적절한 center mode 선택을 시도하십시오


