API Hình học cảnh đường phố cung cấp hình học của địa hình, toà nhà hoặc các cấu trúc khác trong một cảnh. Bạn có thể sử dụng hình học để che khuất, kết xuất hoặc đặt nội dung AR thông qua các API kiểm thử lượt nhấn. Dữ liệu Hình học cảnh quan đường phố được lấy thông qua hình ảnh của Chế độ xem đường phố của Google.
Thử mẫu
Ứng dụng GeospatialExample minh hoạ cách lấy và kết xuất Hình học cảnh đường phố.
Thiết lập API không gian địa lý
Để sử dụng Streetscape Geometry, bạn cần thiết lập API không gian địa lý trong dự án. Làm theo hướng dẫn về Bật API không gian địa lý để thiết lập API không gian địa lý.
Bật Hình học cảnh quan đường phố
API Không gian địa lý thu thập dữ liệu Hình học cảnh quan đường phố khi GARGeospatialMode
được đặt thành GARGeospatialModeEnabled
và GARStreetscapeGeometryMode
được đặt thành GARStreetscapeGeometryModeEnabled
.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
Nhận Hình học cảnh đường phố trong phiên ARCore
Sử dụngGARFrame.streetscapeGeometries
để lấy tất cả đối tượng GARStreetscapeGeometry
.
Tìm hiểu về GARStreetscapeGeometry
GARStreetscapeGeometry
chứa thông tin về một toà nhà:
-
GARStreetscapeGeometry.type
Xác định StreetscapeGeometry là địa hình hoặc toà nhà. -
GARStreetscapeGeometry.mesh
Nhận đa giácGARMesh
tương ứng với địa hình hoặc toà nhà này. -
GARStreetscapeGeometry.meshTransform
Mô tả nguồn gốc của hình học. Tất cả các điểm trongGARMesh
phải được biến đổi bằngGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
Cho biết chất lượng của dữ liệu lưới. Các cấp độ chi tiết được mô tả trong tiêu chuẩn CityGML 2.0.
Xây dựng LOD 1
GARStreetscapeGeometryQualityBuildingLOD_1
bao gồm các dấu vết xây dựng được đẩy lên trên đến một đỉnh phẳng. Chiều cao của tòa nhà có thể không chính xác.
Xây dựng LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2
sẽ có hình học có độ trung thực cao hơn. Các bức tường và mái lưới sẽ khớp với hình dạng của tòa nhà hơn. Các đặc điểm nhỏ hơn như ống khói hoặc lỗ thông gió trên mái nhà vẫn có thể nhô ra ngoài lưới.
Tìm hiểu về GARMesh
GARMesh
là một lưới đa giác thể hiện quá trình tái tạo bề mặt của Hình học cảnh quan đường phố.
Mỗi GARMesh
bao gồm một vùng đệm đỉnh và vùng đệm chỉ mục:
GARMesh.vertexCount
Truy xuất số đỉnh trong lưới này.GARMesh.vertices
Lấy các vị trí được nối của các đỉnh lưới, theo toạ độ tương ứng vớiGARStreetscapeGeometry.meshTransform
.GARMesh.triangleCount
Truy xuất số lượng chỉ mục trong lưới này.GARMesh.triangles
Lấy chỉ mục của các đỉnh tạo nên một mặt.
Đính kèm nội dung AR vào GARStreetscapeGeometry
Sử dụng GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
để tạo một neo tại một tư thế nhất định gần GARStreetscapeGeometry.meshTransform
. Mục liên kết này sẽ kế thừa trạng thái theo dõi từ GARStreetscapeGeometry
mẹ.
Thực hiện kiểm thử nhấn đối với GARStreetscapeGeometry
Bạn có thể dùng GARSession.raycastStreetscapeGeometry:direction:error:
để kiểm thử nhấn đối với Hình học cảnh quan đường phố. Nếu phát hiện thấy giao điểm, GARStreetscapeGeometryRaycastResult
sẽ chứa thông tin về tư thế tại vị trí nhấn cũng như tham chiếu đến GARStreetscapeGeometry
đã được nhấn. Bạn có thể truyền Hình học cảnh quan đường phố này đến GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
để tạo một neo được đính kèm vào hình học đó.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];