Unity AR의 추적 대상 -- target
target은 Unity에서 추적 가능한 다양한 물체를 표현합니다. 아래 내용을 통해 Unity AR에서 추적 객체 target의 기본 개념, 상태, lifecycle을 이해할 수 있습니다.
시작하기 전에
- ARSession 소개를 통해 session의 기본 개념, 구성, 작업 흐름을 이해합니다.
target이란
target은 AR 기능이 인식하고 추적하는 물체를 Unity에서 나타내는 표현입니다. 실제 세계에서 이러한 물체는 이미지, 3D 물체, 공간 맵 등이 될 수 있습니다. 이러한 물체를 인식하고 추적함으로써 AR 애플리케이션은 현실 세계 위에 가상 콘텐츠를 중첩하고 풍부한 상호작용 경험을 구현할 수 있습니다.
일부 target은 실제 세계에서 정지해 있습니다. 예를 들어 벽에 붙은 포스터입니다.
이 영상은 이미지 추적이 실행 중인 간단한 AR 씬을 보여줍니다. 영상 왼쪽은
Hierarchy뷰, 가운데는Scene뷰, 오른쪽은Game뷰입니다. 영상은 시뮬레이션 실행 데이터를 사용하여 Unity Editor의Play모드에서 녹화했습니다.Game뷰의 내용은 사용자가 현실 세계에서 휴대폰으로 보는 내용과 같습니다. 이 영상에서 target(ImageTarget)은 현실 세계의 명함을 나타냅니다. 그 위에 노란색 구를 배치해 움직임을 쉽게 관찰할 수 있게 했습니다.target은 현실 세계와 씬에서 모두 위치가 고정되어 있고, 사용자를 나타내는 카메라, 즉 파란색 원뿔은 사용자가 현실 세계에서 이동하는 것에 따라 이동합니다. 흰색 원뿔은 지난 일정 시간 동안 카메라의 위치와 방향 궤적을 나타냅니다. 노란색 구는 target(ImageTarget) 노드 아래에 있으며, 이는 이러한 종류의 씬에서 일반적인 오브젝트 구성 구조이기도 합니다.
일부 target은 실제 세계에서 움직일 수 있습니다. 예를 들어 버스에 붙은 포스터입니다.
이 영상은 같은 씬을 보여주지만, 이번에는 현실 세계에서 target, 즉 명함을 움직였습니다. target이 움직인 뒤 노란색 구가 명함을 따라 움직이고,
Game뷰에서 해당 구 표식은 여전히 명함 위에 붙어 있음을 볼 수 있습니다.
이해를 돕기 위해 위 두 영상에서는 ImageTarget의 gizmo 표시를 끄고, 모두 SessionOrigin center mode를 사용했습니다. 이 두 영상에서 Scene 뷰의 물체 움직임은 실제 세계와 동일합니다. 실제 AR 씬에서는 이러한 움직임 관계가 더 복잡합니다.
서로 다른 center mode에서 target의 동작
Unity에서 모든 AR tracking의 중심 기준점은 session center라고 하며, session 실행 중 이 중심을 결정하는 규칙은 center mode라고 합니다. center mode가 다르면 target의 동작도 달라집니다.
SessionOrigin center mode에서는 target을 임의로 움직일 수 없습니다.
SessionOrigin 모드는 motion tracking이 있는 씬에서만 존재할 수 있습니다.
이 모드는 앞의 간단한 씬에서 target과 카메라의 실제 움직임을 잘 보여줄 수 있지만, 실제 AR 씬에서는 자주 사용되지 않습니다. 이 모드에서는 session이 target의 움직임을 제어하며, motion tracking 또는 AR 기능 자체의 계산 오차로 인해 target이 완전히 고정되어 있음을 보장하기 어렵습니다. 이때 콘텐츠 루트 노드는 target을 따라 움직여야 하며, Unity 시스템에서 콘텐츠 동작, 예를 들어 물리 시스템에 영향을 줄 수 있습니다.
FirstTarget 또는 SpecificTarget center mode에서 target이 중심으로 선택된 물체라면 자유롭게 움직일 수 있습니다.
일반적으로 FirstTarget 모드가 비교적 많이 사용됩니다. 이 모드는 처음 추적된 물체가 씬에서 session에 의해 제어되지 않도록 보장합니다. target을 이동할 필요가 없다면, 실제 씬에서 해당 물체가 움직이는지 여부와 관계없이 고정되어 있습니다.
FirstTarget 또는 SpecificTarget center mode에서 target이 중심으로 선택된 물체가 아니거나, Camera center mode에서는 target을 임의로 움직일 수 없습니다.
여러 물체를 동시에 추적할 때, 현실 환경에서 이러한 물체들이 상대적으로 고정되어 있더라도 계산 오차로 인해 같은 시점에는 하나의 target만 session 제어를 받지 않을 수 있습니다. 이때 설정에 따라 다른 target의 움직임 여부는 보장되지 않습니다. 현실에서 움직임이 없더라도 씬에서는 미세한 움직임이 있을 수 있습니다. 여러 물체를 동시에 추적할 때의 이러한 동작을 충분히 고려하고 콘텐츠 전략을 합리적으로 조정해야 합니다.
center mode 및 씬 내 물체의 움직임 방식에 대한 자세한 내용은 Center mode를 참고하세요.
target의 상태
target의 상태는 현재 session에서 target의 recognition 및 tracking 상황을 반영합니다. 일반적인 상태는 다음과 같습니다.
- Tracked: target이 성공적으로 인식되고 추적되었습니다. AR 애플리케이션은 그 위에 가상 콘텐츠를 중첩할 수 있으며, 콘텐츠는 실제 세계의 물체에 밀착됩니다.
- Not Tracked: target이 현재 인식되거나 추적되지 않습니다. AR 애플리케이션이 여전히 그 위에 가상 콘텐츠를 중첩하면, 콘텐츠는 실제 세계의 물체에 밀착되지 않습니다.
동시에 상태 변화 시 다음 events로 응답할 수 있습니다.
- TargetFound: target이 성공적으로 인식되고 추적될 때 발생합니다.
- TargetLost: target이 tracking 상태를 잃을 때 발생합니다.
target의 lifecycle
Unity AR 씬에서 target은 일반적으로 해당 frame filter 컴포넌트가 관리합니다. frame filter는 frame source에서 오는 이미지 데이터를 처리하고 그 안의 target을 인식 및 추적합니다. frame filter의 lifecycle은 session에 의존합니다. 서로 다른 AR 기능 구현에 차이가 있을 수 있지만, 대부분의 경우 session이 시작될 때 target이 로드되고, 로드 후에는 session의 제어를 받습니다. session이 중지되면 target은 언로드되고 다음 session에서 사용되거나 수동으로 삭제될 때까지 제자리에 남아 있습니다.
다음 단계
- target 상태 가져오기 시도
- 다양한 AR 기능에서 해당 target 사용 시도