앵커를 사용하여 가상 객체가 AR 장면에서 제자리에 그대로 있는 것처럼 보이게 만드세요.
앵커를 사용하는 이유
ARCore의 환경 이해가 AR 환경 전반에 걸쳐 업데이트됨에 따라 가상 객체가 배치된 위치에서 멀어지는 것처럼 보일 수 있습니다. 이렇게 하면 앱의 현실성과 사용자 환경에 영향을 미칠 수 있습니다.
앵커를 사용하면 객체가 공간에서 동일한 위치와 방향에 있는 것처럼 보이게 하여 실제로 배치된 가상 객체의 착시 효과를 유지할 수 있습니다.
앵커의 작동 방식
앵커를 처음 사용하는 경우 세계 공간과 포즈를 검토하면 도움이 됩니다.
월드 스페이스
- 카메라와 객체가 배치되는 좌표 공간
- 카메라 및 객체 위치가 세계 공간에서 프레임마다 업데이트됩니다.
자세
- 세계 공간에서 객체의 위치와 방향을 나타냄
- iOS에서는 변환이라고도 함
앵커를 만들 때는 현재 프레임의 세계 공간 추정치를 기준으로 위치와 방향을 설명하는 포즈를 사용합니다.
이 앵커에 하나 이상의 객체를 연결합니다. 앵커와 앵커에 연결된 객체는 배치된 위치에 그대로 있는 것처럼 보입니다. 앵커 포즈가 각 프레임의 세계 공간 업데이트에 따라 조정되면 앵커는 그에 따라 객체의 포즈를 업데이트합니다.
여러 객체를 동일한 앵커에 연결하여 앵커의 자세가 조정되더라도 객체가 상대적인 위치와 방향을 유지하도록 할 수 있습니다.
장면에 앵커 사용
장면에 앵커를 사용하려면 코드에서 다음 조건을 충족해야 합니다.
- 추적 가능 항목 (예: 비행기) 또는 ARCore 세션의 컨텍스트에서 앵커를 만듭니다.
- 앵커에 하나 이상의 객체를 연결합니다.
앵커는 장면의 객체에서 다양한 종류의 위치 동작을 지원할 수 있습니다.
앵커 컨텍스트와 장면 객체에 필요한 앵커 수는 AR 장면에 필요한 위치 동작에 따라 다릅니다. 자세한 내용은 다음 섹션을 참고하세요.
앵커 컨텍스트 선택
Trackable 또는 ARCore 세션을 사용하여 장면에 앵커를 추가합니다.
객체를 | 앵커를 |
---|---|
Trackable에 '용접'된 것처럼 보이고 Trackable과 동일한 회전 효과를 받을 수 있습니다. 여기에는 다음이 포함됩니다.
|
추적 가능 |
사용자 환경 전반에 걸쳐 우주 공간에서 동일한 자세를 유지하는 것으로 보임 | ARCore 세션 |
하나 이상의 객체를 고정하세요.
앵커에 하나 이상의 객체를 연결할 수 있습니다. 일반적으로 이러한 객체는 다음 중 하나 이상과 공간 관계가 있습니다.
- 서로
- 추적 가능 항목(예: 비행기)
- 세계 공간 내 위치
앵커 가이드라인
앵커를 효과적이고 효율적으로 사용하면 앱의 현실성과 성능에 도움이 됩니다.
근처의 앵커에 연결된 객체는 AR 환경 전반에 걸쳐 실제 위치를 유지하고 서로에 대해 상대적인 위치를 유지하는 것처럼 보입니다.
필요한 앵커만 사용하면 CPU 비용을 줄이는 데 도움이 됩니다.
가능한 경우 앵커 재사용
대부분의 경우 각 객체에 새 앵커를 만드는 대신 여러 주변 객체에 동일한 앵커를 사용해야 합니다.
객체가 Trackable 또는 세계 공간 내 위치와의 고유한 공간 관계를 유지해야 하는 경우 객체에 새 앵커를 사용합니다.
장면의 각 객체에 자체 앵커가 있는 경우 이러한 앵커는 ARCore의 각 프레임 세계 공간 추정에 따라 객체의 포즈를 서로 독립적으로 조정합니다. 별도로 고정된 객체는 서로에 따라 이동하거나 회전할 수 있으므로 가상 객체가 서로 상대적으로 제자리에 유지되어야 하는 AR 장면이라는 착각을 일으킬 수 있습니다.
예
예를 들어 사용자가 방 안에 가상 가구를 배치할 수 있는 앱이 있다고 가정해 보겠습니다. 사용자가 앱을 열면 ARCore가 비행기로 탁자 및 방의 바닥을 추적하기 시작합니다. 사용자가 탁자 위에 가상 램프를 배치합니다.
그런 다음 사용자가 바닥에 가상 의자를 놓습니다.
이 시점에서 장면의 앵커 하나는 탁자 평면에, 다른 앵커는 평면에 연결되어 있어야 합니다.
사용자가 탁자에 다른 가상 램프를 추가하면 탁자 평면에 이미 연결된 앵커를 재사용할 수 있습니다. 이렇게 하면 두 램프가 탁자 평면에 고정된 것처럼 보이며 서로 상대적인 위치를 유지합니다. 의자는 평면을 기준으로 위치를 유지합니다.
객체를 앵커에 가깝게 유지하기
객체를 고정할 때는 사용 중인 앵커에 가까이 있는지 확인하세요. ARCore의 세계 공간 좌표 업데이트로 인해 예기치 않은 회전 이동을 방지하기 위해 앵커로부터 8미터 (8m) 또는 26피트(26피트)보다 멀리 객체를 배치하지 마세요.
기존 앵커에서 8미터가 넘게 객체를 배치해야 하는 경우 이 위치에 더 가까운 새 앵커를 만들어 새 앵커에 연결합니다.
사용하지 않는 앵커 분리
더 이상 필요하지 않은 앵커를 분리하여 앱의 성능을 개선합니다.
앱에서 모든 Trackable마다 CPU 비용이 발생하고 ARCore는 앵커가 연결된 추적 가능 항목을 출시하지 않습니다.
앵커 유형
앵커 유형은 로컬에서 전 세계까지 유효한 범위에 따라 구분됩니다.
로컬 앵커는 앱과 함께 로컬에 저장되며 앱의 해당 인스턴스에만 유효합니다. 사용자는 앵커를 배치하는 위치에 실제로 있어야 합니다.
클라우드 앵커는 Google Cloud에 저장되며 앱 인스턴스 간에 공유될 수 있습니다. 사용자는 앵커를 배치하는 위치에 실제로 있어야 합니다.
지리정보 앵커는 측지 위도, 경도, 고도 및 Google VPS (Visual Positioning System) 데이터를 기반으로 전 세계 거의 모든 위치에서 정확한 위치를 제공합니다. 앱이 인터넷에 연결되어 있고 VPS를 사용할 수 있는 한 사용자는 원격 위치에서 앵커를 배치할 수 있습니다.