Streetscape Geometry API는 장면의 지형지물, 건물 또는 기타 구조물의 도형을 제공합니다. 이 도형은 히트 테스트 API를 통한 가림, 렌더링 또는 AR 콘텐츠 배치에 사용할 수 있습니다. 거리 풍경 형태 데이터는 Google 스트리트 뷰 이미지를 통해 얻을 수 있습니다.
Geospatial API 설정
Streetscape Geometry를 사용하려면 프로젝트에서 Geospatial API를 설정해야 합니다. Geospatial API 사용 설정의 안내에 따라 Geospatial API를 설정합니다.
거리 풍경 도형 사용 설정
Geospatial API는 ArGeospatialMode가 ArGeospatialModeEnabled로 설정되고 ArStreetscapeGeometryMode가 ArStreetscapeGeometryModeEnabled로 설정된 경우 Streetscape Geometry 데이터를 가져옵니다.
// Create a session config. ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); // Enable the Geospatial API. ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Enable Streetscape Geometry. ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Release config resources. ArConfig_destroy(ar_config);
ARCore 세션에서 거리 풍경 도형 가져오기
ArSession_getAllTrackables()를 사용하고 AR_TRACKABLE_STREETSCAPE_GEOMETRY를 사용하여 결과를 필터링합니다.
ArTrackableList* trackable_list = NULL; ArTrackableList_create(ar_session, &trackable_list); ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);
ArStreetscapeGeometry 이해하기
ArStreetscapeGeometry에는 건물에 관한 정보가 포함됩니다.
-
ArStreetscapeGeometry_getType()
StreetscapeGeometry를 지형지물 또는 건물로 식별합니다. -
ArStreetscapeGeometry_acquireMesh()
이 지형지물 또는 건물에 해당하는 다각형ArMesh을 가져옵니다. -
ArStreetscapeGeometry_getMeshPose()
도형의 원점을 설명합니다.ArMesh의 모든 점은ArStreetscapeGeometry_getMeshPose()로 변환되어야 합니다. -
ArStreetscapeGeometry_getQuality()
메시 데이터의 품질을 제공합니다. 세부 수준은 CityGML 2.0 표준에 설명되어 있습니다.
건물 LOD 1
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1는 평평한 상단으로 위쪽으로 돌출된 건물 풋프린트로 구성됩니다. 건물 높이가 부정확할 수 있습니다.

건물 LOD 2
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2는 더 높은 충실도의 도형을 갖습니다. 메시 벽과 지붕은 건물의 모양에 더 근접합니다. 굴뚝이나 지붕 통풍구와 같은 작은 지형지물은 메시지 외부에 표시될 수 있습니다.

ArMesh 이해하기
ArMesh는 거리 풍경 도형의 표면 재구성에 해당하는 다각형 메시입니다.
각 ArMesh에는 정점 버퍼와 색인 버퍼가 포함됩니다.
ArMesh_getVertexListSize()
이 메시의 꼭짓점 수를 검색합니다.ArMesh_getVertexList()
ArStreetscapeGeometry_getMeshPose()를 기준으로 한 좌표에서 메시 꼭짓점의 연결된 위치를 가져옵니다.ArMesh_getIndexListSize()
이 메시의 색인 수를 검색합니다.ArMesh_getIndexList()
얼굴을 구성하는 정점의 색인을 가져옵니다.
ArStreetscapeGeometry에 AR 콘텐츠 첨부
AR 콘텐츠를 거리 풍경 도형에 연결하는 방법에는 두 가지가 있습니다.
- Geospatial Depth를 사용 설정하고 Depth 히트 테스트를 사용합니다. 이 방법이 권장되며 더 쉽습니다.
ArTrackable_acquireNewAnchor()를 사용하여ArStreetscapeGeometry에 연결된 지정된 포즈에 앵커를 만듭니다. 이 앵커는 상위ArStreetscapeGeometry에서 추적 상태를 상속합니다.
ArStreetscapeGeometry에 대해 히트 테스트를 실행합니다.
ArFrame_hitTest를 사용하여 Streetscape Geometry에 대해 히트 테스트를 실행할 수 있습니다. 교차점이 발견되면 ArHitResult에는 충돌 위치에 관한 포즈 정보와 충돌한 ArStreetscapeGeometry에 대한 참조가 포함됩니다. 이 Streetscape Geometry는 ArTrackable_acquireNewAnchor()에 전달하여 여기에 연결된 앵커를 만들 수 있습니다.
ArHitResultList *hit_result_list = NULL; ArHitResult *hit_result = NULL; ArHitResultList_create(ar_session, &hit_result_list); ArHitResult_create(ar_session, &hit_result); ArFrame_hitTestRay(ar_session, ar_frame, origin, direction, hit_result_list); ArHitResultList_getItem(ar_session, hit_result_list, 0, hit_result); ArAnchor *out_anchor = NULL; ArStatus status = ArHitResult_acquireNewAnchor(ar_session, hit_result, &out_anchor); CHECK(status == AR_SUCCESS);
Geospatial Depth 사용 설정
Geospatial Depth는 Streetscape Geometry와 로컬 센서 입력을 결합하여 깊이 데이터를 개선합니다. Geospatial Depth가 사용 설정되면 로컬에서 관찰된 깊이 외에 래스터화된 거리 풍경 도형을 포함하도록 출력 깊이 및 원시 깊이 이미지가 수정됩니다. 이렇게 하면 깊이를 사용하는 포즈의 정확성이 향상될 수 있습니다.