앵커 사용하기

앵커를 사용하여 가상 객체가 AR 장면에 고정된 것처럼 보이도록 합니다.

앵커를 사용하는 이유

AR 경험 전반에서 ARCore의 환경 이해가 업데이트됨에 따라 가상 객체는 배치된 위치에서 멀어지는 것처럼 보일 수 있습니다. 이로 인해 앱의 현실감과 사용자 경험이 영향을 받을 수 있습니다.

앵커를 사용하면 객체가 공간 내에서 동일한 위치와 방향을 유지하도록 유지되어 실제 위치에 있는 가상 객체의 환상을 유지할 수 있습니다.

앵커 작동 방식

앵커를 처음 사용하는 경우 세상과 자세를 검토하는 것이 좋습니다.

  • 세계 공간

    • 카메라와 객체가 배치되는 공간 조정
    • 카메라와 객체 위치가 월드 프레임에서 프레임으로 업데이트됩니다.
  • 자세

    • 월드 공간에서 객체의 위치와 방향을 나타냅니다.
    • iOS에서는 변환이라고도 합니다.

앵커를 만들 때는 현재 프레임의 세계 공간 추정치를 기준으로 위치와 방향을 설명하는 자세를 사용합니다.

이 앵커에 하나 이상의 객체를 연결합니다. 앵커와 앵커에 연결된 객체는 어디에 배치되어 있는지 보여줍니다. 앵커가 각 프레임의 월드 공간 업데이트에 맞게 조정되면 앵커가 그에 따라 객체를 업데이트합니다.

여러 객체를 같은 앵커에 연결하여 앵커의 자세가 조정되더라도 이러한 객체가 상대적인 위치와 방향을 유지하도록 할 수 있습니다.

장면에 앵커 사용

장면에 앵커를 사용하려면 코드에서 다음을 수행해야 합니다.

  • Trackable (예: 평면) 또는 ARCore 세션 컨텍스트에서 앵커를 만듭니다.
  • 앵커에 하나 이상의 객체를 연결합니다.

앵커는 장면의 객체에서 다양한 종류의 위치 동작을 지원할 수 있습니다.

앵커 컨텍스트와 장면 객체에 필요한 앵커 수를 결정하는 것은 AR 장면에 필요한 위치 동작에 따라 다릅니다. 자세한 내용은 다음 섹션을 참조하세요.

앵커 컨텍스트 선택

Trackable 또는 ARCore 세션을 사용하여 앵커에 장면을 추가합니다.

객체에 앵커를
'용인'에 표시될 수 있으며 Trackable과 동일한 회전 효과가 적용됩니다.
여기에는 다음이 포함됩니다.
  • 비행기 표면에 붙어 있는 것처럼 보이기
  • Trackable을 기준으로 위치를 유지관리(예: 위 또는 앞에 떠 있는 경우)
추적 가능
사용자 환경에서 세상과 동일한 포즈를 유지하는 것처럼 보입니다. ARCore 세션

하나 이상의 객체 고정

하나 이상의 객체를 앵커에 연결할 수 있습니다. 일반적으로 이러한 객체는 다음 중 하나 이상에 공간 관계를 갖습니다.

  • 서로
  • 추적 가능한 요소(예: 비행기)
  • 세계 공간 내 위치

앵커 가이드라인

앱의 현실감과 성능은 앵커를 효과적이면서도 효율적으로 사용할 수 있다는 이점이 있습니다.

주변 앵커에 연결된 객체는 AR 경험 전반에 걸쳐 현실적으로 그리고 서로에 대한 상대적인 위치를 유지하는 것으로 나타납니다.

필요한 앵커만 사용하면 CPU 비용을 줄일 수 있습니다.

가능한 경우 앵커 재사용

대부분의 경우 각 객체에 새 앵커를 만드는 대신 여러 개의 근처 객체에 동일한 앵커를 사용해야 합니다.

객체가 Trackable이나 월드 공간의 위치와 고유한 공간 관계를 유지해야 하면 객체에 새 앵커를 사용합니다.

장면에 있는 각 객체에 자체 앵커가 있는 경우 이러한 앵커는 각 프레임의 세계 공간 추정량에 따라 서로 독립적으로 객체 포즈를 조정합니다. 별도로 고정된 객체는 서로를 기준으로 이동하거나 회전할 수 있으므로 가상 객체가 서로를 상대적인 위치에 머물러 있어야 한다는 착시 현상을 방지합니다.


예를 들어 앱에서 사용자가 방 주변에 가상 가구를 배치하도록 한다고 가정해 보겠습니다. 사용자가 앱을 열면 ARCore에서 탁자 및 방의 층을 비행기로 추적하기 시작합니다. 사용자가 탁자 위에 가상 램프를 놓고 있습니다. 그런 다음 사용자가 바닥에 가상 의자를 놓습니다.

이 시점에서 장면에는 탁자면에 앵커 하나를, 다른 한 면은 평면에 부착해야 합니다.

사용자가 탁자에 다른 가상 램프를 추가하면 탁자면에 이미 연결된 앵커를 재사용할 수 있습니다. 이렇게 하면 두 램프가 탁자 위에 딱 붙어 있고 다른 장소에 상대적인 위치를 유지할 수 있습니다. 또한 의자는 평면을 기준으로 위치를 유지합니다.

객체를 앵커에 가깝게 유지합니다.

객체를 앵커링할 때는 사용 중인 앵커에 가까이 있어야 합니다. 앵커에서 8미터 이상 떨어진 곳에 객체를 배치하여 ARCore 좌표로 인한 예기치 않은 회전 이동을 방지합니다.

기존 앵커에서 8미터 이상 떨어진 곳에 객체를 배치해야 한다면 이 위치에 더 가까운 새 앵커를 만들고 객체를 새 앵커에 연결합니다.

사용하지 않는 앵커 분리

앱의 성능이 향상되도록 더 이상 필요하지 않은 앵커를 분리합니다.

앱에서 모든 Trackable의 CPU 비용이 발생하고 ARCore는 앵커가 연결된 Trackable을 해제하지 않습니다.

앵커 유형

앵커 유형은 유효한 범위(로컬에서 전 세계)로 구분됩니다.

  • 로컬 앵커는 앱과 함께 로컬에 저장되며 앱의 해당 인스턴스에만 유효합니다. 사용자는 물리적으로 앵커를 배치한 위치에 있어야 합니다.

  • 클라우드 앵커는 Google Cloud에 저장되며 앱 인스턴스 간에 공유될 수 있습니다. 사용자는 실제로 앵커를 배치하는 위치에 있어야 합니다.

  • 지리정보 앵커는 측지 위도, 경도, 고도 및 Google의 시각적 포지셔닝 시스템 (VPS) 데이터를 기반으로 하여 전 세계 거의 모든 곳에서 정확한 위치를 제공합니다. 이 앵커는 앱 인스턴스 간에 공유될 수 있습니다. 앱이 인터넷에 연결되어 있고 VPS를 사용할 수 있는 한 사용자는 원격 위치에서 앵커를 배치할 수 있습니다.