Streetscape Geometry API cung cấp hình dạng địa hình, tòa nhà hoặc các cấu trúc khác trong một cảnh. Hình dạng này có thể được dùng để che khuất, hiển thị hoặc đặt nội dung thực tế tăng cường (AR) thông qua API kiểm thử nhấn. Dữ liệu Hình học cảnh quan đường phố được lấy qua hình ảnh trong Chế độ xem đường phố của Google.
Dùng thử mẫu
Ứng dụng GeospatialExample minh hoạ cách lấy và hiển thị Hình học cảnh đường phố.
Thiết lập API Không gian địa lý
Để sử dụng Hình học cảnh đường phố, bạn cần phải thiết lập API Không gian địa lý trong dự án của mình. Làm theo hướng dẫn về cách Bật API không gian địa lý để thiết lập API không gian địa lý.
Bật Hình học phong cảnh đườ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
DùngGARFrame.streetscapeGeometries
để lấy tất cả đối tượng GARStreetscapeGeometry
.
Tìm hiểu GARStreetscapeGeometry
GARStreetscapeGeometry
chứa thông tin về một toà nhà:
-
GARStreetscapeGeometry.type
Xác định StreetscapeGeometry là địa hình hoặc một toà nhà. -
GARStreetscapeGeometry.mesh
Lấy một đ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. Tất cả các điểm trongGARMesh
sẽ được chuyển đổi bởiGARStreetscapeGeometry.meshTransform
. -
GARStreetscapeGeometry.quality
Cung cấp chất lượng của dữ liệu lưới. Mức độ chi tiết được mô tả trong tiêu chuẩn CityGML 2.0.
Toà nhà LOD 1
GARStreetscapeGeometryQualityBuildingLOD_1
bao gồm phạm vi của toà nhà được nhô lên trên mặt phẳng. Chiều cao của toà nhà có thể không chính xác.
Toà nhà LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2
sẽ có hình học độ trung thực cao hơn. Tường và mái lưới sẽ phù hợp hơn với hình dạng của toà nhà. 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ể bị chọc vào bên ngoài lưới.
Tìm hiểu GARMesh
GARMesh
là một lưới đa giác thể hiện bản dựng lại 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 vị trí nối với nhau 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 khuôn mặt.
Đính kèm nội dung thực tế tăng cường (AR) vào GARStreetscapeGeometry
Sử dụng GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
để tạo điểm neo ở một tư thế cụ thể gần GARStreetscapeGeometry.meshTransform
. Quảng cáo liên kết này sẽ kế thừa trạng thái theo dõi từ GARStreetscapeGeometry
gốc.
Thực hiện thử nghiệm nhấn với GARStreetscapeGeometry
Bạn có thể sử dụng GARSession.raycastStreetscapeGeometry:direction:error:
để kiểm tra nhanh theo Hình học cảnh đường phố. Nếu tìm thấy giao lộ, GARStreetscapeGeometryRaycastResult
chứa thông tin về tư thế về vị trí bị va chạm cũng như thông tin tham chiếu đến GARStreetscapeGeometry
nơi bị va chạm. Bạn có thể truyền Hình học cảnh đường phố này đến GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
để tạo neo đi kèm.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];