Streetscape Geometry API는 장면에 있는 지형, 건물 또는 기타 구조물의 도형을 제공합니다. 이 도형은 Hit Test API를 통해 AR 콘텐츠를 오클루전, 렌더링 또는 배치하는 데 사용할 수 있습니다. 거리 풍경 형태 데이터는 Google 스트리트 뷰 이미지를 통해 가져옵니다.
샘플 사용해 보기
GeospatialExample 앱은 스트리트 풍경 도형을 가져오고 렌더링하는 방법을 보여줍니다.
Geospatial API 설정
Streetscape Geometry를 사용하려면 프로젝트에서 Geospatial API를 설정해야 합니다. Geospatial API 사용 설정의 안내에 따라 Geospatial API를 설정하세요.
거리 풍경 형태 사용 설정
Geospatial API는 GARGeospatialMode
이 GARGeospatialModeEnabled
로, GARStreetscapeGeometryMode
가 GARStreetscapeGeometryModeEnabled
로 설정된 경우 Streetscape Geometry 데이터를 가져옵니다.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
ARCore 세션에서 거리 풍경 형태 가져오기
GARFrame.streetscapeGeometries
를 사용하여 모든 GARStreetscapeGeometry
객체를 가져옵니다.
GARStreetscapeGeometry
이해하기
GARStreetscapeGeometry
에는 건물에 대한 정보가 포함됩니다.
-
GARStreetscapeGeometry.type
StreetscapeGeometry를 지형 또는 건물로 식별합니다. -
GARStreetscapeGeometry.mesh
이 지형이나 건물에 해당하는 다각형GARMesh
을 가져옵니다. -
GARStreetscapeGeometry.meshTransform
도형의 원점을 설명합니다.GARMesh
의 모든 점은GARStreetscapeGeometry.meshTransform
에 의해 변환되어야 합니다. -
GARStreetscapeGeometry.quality
메시 데이터의 품질을 제공합니다. 세부정보 수준은 CityGML 2.0 표준에 설명되어 있습니다.
LOD 1 빌드
GARStreetscapeGeometryQualityBuildingLOD_1
은 평평한 상단으로 위로 돌출된 접지면을 구축하는 것으로 구성됩니다. 건물 높이가 정확하지 않을 수 있습니다.
LOD 2 빌드
GARStreetscapeGeometryQualityBuildingLOD_2
에 높은 충실도의 도형이 적용됩니다. 메시 벽과 지붕은 건물의 모양과 더 밀접하게 일치합니다. 굴뚝이나 지붕 환기구와 같은 소형 기능은 여전히 메시 외부에 뚫려 있을 수 있습니다.
GARMesh
이해하기
GARMesh
는 스트리트 풍경 도형의 표면 재구성을 나타내는 다각형 메시입니다.
각 GARMesh
에는 꼭짓점 버퍼와 색인 버퍼가 포함되어 있습니다.
GARMesh.vertexCount
이 메시의 꼭짓점 수를 가져옵니다.GARMesh.vertices
GARStreetscapeGeometry.meshTransform
를 기준으로 한 좌표에서 메시 꼭짓점의 연결된 위치를 가져옵니다.GARMesh.triangleCount
이 메시의 색인 수를 가져옵니다.GARMesh.triangles
면을 구성하는 꼭짓점 색인을 가져옵니다.
GARStreetscapeGeometry
에 AR 콘텐츠 첨부하기
GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
를 사용하여 GARStreetscapeGeometry.meshTransform
근처의 지정된 포즈에 앵커를 만듭니다. 이 앵커는 상위 GARStreetscapeGeometry
에서 추적 상태를 상속합니다.
GARStreetscapeGeometry
에 Hit 테스트 실행
GARSession.raycastStreetscapeGeometry:direction:error:
를 사용하여 Streetscape Geometry에 대한 Hit Test를 수행할 수 있습니다. 교차점이 발견되면 GARStreetscapeGeometryRaycastResult
에 적중 위치에 대한 포즈 정보와 적중된 GARStreetscapeGeometry
에 대한 참조가 포함됩니다. 거리 풍경 형태를 GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
에 전달하여 연결된 앵커를 만들 수 있습니다.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];