내 앱에서 클라우드 앵커를 사용하는 방법을 알아보세요.
기본 요건
기본 AR 개념을 이해합니다. ARCore 세션을 구성하는 방법을 알아보세요.
클라우드 앵커를 처음 사용하는 경우 앵커 및 클라우드 앵커의 작동 방식을 이해해야 합니다.
ARCore API 사용 설정
앱에서 클라우드 앵커를 사용하려면 먼저 애플리케이션에서 ARCore API를 사용 설정해야 합니다.
세션 구성에서 클라우드 앵커 기능 사용 설정
앱에서 클라우드 앵커 기능이 사용 설정되면 ARCore API와 통신할 수 있도록 앱의 AR 세션 구성에서 클라우드 앵커 기능을 사용 설정합니다.
// Create a new ARCore session. ArSession* session = NULL; CHECK(ArSession_create(env, context, &session) == AR_SUCCESS); // Create a session config. ArConfig* config = NULL; ArConfig_create(session, &config); ArSession_getConfig(session, config); // Enable Cloud Anchor mode. ArConfig_setCloudAnchorMode(session, config, AR_CLOUD_ANCHOR_MODE_ENABLED); // Configure the session. ArSession_configure(session, config); ArConfig_destroy(config);
클라우드 앵커 호스팅
호스팅은 ArSession_hostCloudAnchorAsync()
호출로 시작됩니다. ARCore는 시각적 데이터, 기기 자세, 앵커 자세를 ARCore API에 업로드합니다. 그런 다음 API는 이 정보를 처리하여 3D 기능 지도를 생성하고 궁극적으로 기기에 앵커의 고유한 클라우드 앵커 ID를 반환합니다.
ARCore Cloud Anchor Management API를 사용하여 호스팅된 앵커의 전체 기간을 연장할 수도 있습니다.
클라우드 앵커 호스팅을 완료하려면 앱에서 다음 단계를 따라야 합니다.
ArSession_hostCloudAnchorAsync()
을 호출합니다.- 콜백을 기다리거나 완료될 때까지 Future 상태를 계속 확인합니다.
- 결과 상태 확인 를 사용하여 작업 성공 여부를 확인하거나 실패 시 오류 코드를 해석할 수 있습니다.
- 결과 클라우드 앵커 ID를 다른 클라이언트와 공유하고 이를 사용하여
ArSession_resolveCloudAnchorAsync()
특성 지점의 매핑 품질 확인
ArFeatureMapQuality
는 특정 카메라 포즈에서 지난 몇 초 동안 ARCore가 확인한 특징 지점의 품질을 나타냅니다. 더 높은 품질의 기능을 사용하여 호스팅되는 클라우드 앵커는 일반적으로 더 정확하게 확인됩니다. ArSession_estimateFeatureMapQualityForHosting()
를 사용하여 특정 카메라 포즈의 특성 맵 품질을 추정합니다.
값 | 설명 |
---|---|
INSUFFICIENT |
앞의 몇 초 동안 포즈에서 식별된 특징 포인트의 품질이 낮습니다. 이 상태는 ARCore가 클라우드 앵커를 확인하는 데 더 어려울 수 있음을 나타냅니다. 호스팅하려는 클라우드 앵커의 원하는 위치를 다양한 각도에서 볼 수 있도록 사용자가 기기를 이동하도록 권장합니다. |
SUFFICIENT |
이전 몇 초 동안 포즈에서 식별된 특징 포인트의 품질은 ARCore가 클라우드 앵커를 성공적으로 확인하는 데 충분할 수 있지만 결정된 포즈의 정확성은 낮아질 수 있습니다. 호스팅하려는 클라우드 앵커의 원하는 위치를 다양한 각도에서 볼 수 있도록 사용자가 기기를 이동하도록 권장합니다. |
GOOD |
이전 몇 초 동안 포즈에서 식별된 특징 포인트의 품질은 ARCore가 높은 정확도로 클라우드 앵커를 성공적으로 확인하는 데 충분할 수 있습니다. |
이전에 호스팅된 앵커 확인
ArSession_resolveCloudAnchorAsync()
를 호출하여 호스팅된 클라우드 앵커를 확인합니다. ARCore API는 앵커의 3D 기능 지도를 기준으로 장면의 시각적 특징을 주기적으로 비교하여 앵커를 기준으로 한 사용자의 위치와 방향을 정확하게 파악합니다. 일치하는 항목을 찾으면 API는 호스팅된 클라우드 앵커의 포즈를 반환합니다.
여러 클라우드 앵커의 확인을 순서대로 시작할 수 있습니다. 한 번에 최대 40개의 클라우드 앵커 작업이 동시에 존재할 수 있습니다.
작업 취소 또는 클라우드 앵커 삭제
ArFuture_cancel()
를 호출하여 대기 중인 클라우드 앵커 작업을 취소합니다.
추적을 중지하고 이미 확인된 클라우드 앵커를 삭제하려면 ArAnchor_detach()
를 호출합니다. 앵커에 대한 참조는 ArAnchor_release()
를 호출하여 별도로 해제해야 합니다.
클라우드 앵커 작업의 결과 상태 확인
ArCloudAnchorState를 사용하여 호스팅 또는 해결 작업의 결과 상태(오류 포함)를 확인합니다.
값 | 설명 |
---|---|
AR_CLOUD_ANCHOR_STATE_ERROR_CLOUD_ID_NOT_FOUND |
ARCore API에서 제공된 클라우드 앵커 ID를 찾을 수 없어 문제를 해결하지 못했습니다. |
AR_CLOUD_ANCHOR_STATE_ERROR_HOSTING_DATASET_PROCESSING_FAILED |
서버에서 지정된 앵커의 데이터 세트를 처리할 수 없어 호스팅이 실패했습니다. 기기가 환경에서 더 많은 데이터를 수집한 후 다시 시도하세요. |
AR_CLOUD_ANCHOR_STATE_ERROR_HOSTING_SERVICE_UNAVAILABLE |
ARCore API에 연결할 수 없습니다. 액세스할 수 없는 원인으로는 여러 가지가 있습니다. 기기가 비행기 모드이거나 인터넷에 연결되어 있지 않을 수 있습니다. 서버로 전송된 요청이 응답 없이 시간 초과되었을 수 있습니다. 네트워크 연결 불량, DNS 사용 불가, 방화벽 문제 또는 ARCore API에 연결하는 기기의 기능에 영향을 줄 수 있는 다른 문제가 있을 수 있습니다. |
AR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL |
이 앵커의 호스팅 또는 확인 작업이 내부 오류와 함께 완료되었습니다. 앱은 이 오류 복구를 시도해서는 안 됩니다. |
AR_CLOUD_ANCHOR_STATE_ERROR_NOT_AUTHORIZED |
ARCore API 승인 문제 해결을 참고하세요. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOLVING_SDK_VERSION_TOO_NEW |
앵커 확인에 사용된 SDK 버전이 앵커를 호스팅하는 데 사용된 버전보다 최신이며 이 버전과 호환되지 않으므로 클라우드 앵커를 해결할 수 없습니다. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOLVING_SDK_VERSION_TOO_OLD |
앵커 확인에 사용된 SDK 버전이 앵커를 호스팅하는 데 사용된 버전보다 오래되어 호환되지 않으므로 클라우드 앵커를 해결할 수 없습니다. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOURCE_EXHAUSTED |
애플리케이션에서 지정된 Google Cloud 프로젝트에 할당된 요청 할당량을 소진했습니다. Google Developers Console에서 프로젝트의 ARCore API에 대한 추가 할당량을 요청해야 합니다. |
AR_CLOUD_ANCHOR_STATE_SUCCESS |
앵커에 대한 호스팅 또는 확인 작업이 완료되었습니다. |
호스트 및 확인 요청을 위한 API 할당량
ARCore API의 요청 대역폭 할당량은 다음과 같습니다.
할당량 유형 | 최대 | 기간 | 적용 대상 |
---|---|---|---|
앵커 수 | 무제한 | 해당 사항 없음 | 프로젝트 |
앵커 호스트 요청 | 30 | 분 | IP 주소 및 프로젝트 |
앵커 요청 해결 | 300 | 분 | IP 주소 및 프로젝트 |
우수한 사용자 환경을 위한 권장사항
사용자에게 앱에서 우수한 사용자 환경을 제공할 수 있도록 다음 단계를 따르도록 안내하세요.
- 세션이 시작된 후 몇 초 정도 기다린 후에 앵커를 호스팅하려고 시도합니다. (객체 등을 배치하여) 이렇게 하면 모니터링이 안정화될 때까지 어느 정도 시간이 생깁니다.
- 앵커를 호스팅할 위치를 선택할 때 서로 쉽게 구별할 수 있는 시각적 요소가 있는 영역을 찾아보세요. 최상의 결과를 얻으려면 반사되는 표면이나 빈 흰색 벽과 같이 시각적 기능이 부족한 표면을 피하세요.
관심 장소에 대해 카메라를 훈련시키고 기기를 이리저리 움직여야 합니다. 할 때와 대략 동일한 물리적 거리를 유지하면서 다양한 각도에서 환경을 매핑하기 위해 관심의 중심을 설정합니다. 이렇게 하면 더 많은 시각적 데이터를 캡처하고 더 효과적으로 해결할 수 있습니다.
클라우드 앵커를 호스팅하고 확인하는 동안 실제 환경에 충분한 조명이 있는지 확인하세요.
지원 중단 정책
- ARCore SDK 1.12.0 이상으로 빌드된 앱에는 Cloud Anchor API 지원 중단 정책이 적용됩니다.
- ARCore SDK 1.11.0 이하로 빌드된 앱은 SDK에서 지원 중단된 이전 ARCore API를 사용하기 때문에 클라우드 앵커를 호스팅하거나 확인할 수 없습니다.
다음 단계
- 앱에서 ARCore를 사용하는 더 많은 방법은 Android NDK 참조 문서를 확인하세요.