API Hình học của cảnh quan đường phố cung cấp hình dạng của địa hình, toà nhà hoặc các cấu trúc khác trong một cảnh. Hình dạng có thể được dùng để che khuất, hiển thị hoặc đặt nội dung AR thông qua API kiểm tra lượt truy cập. Dữ liệu Hình học của cảnh quan đường phố được thu thập thông 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à kết xuất Streetscape Geometries.
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 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 tính năng 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];
Thu thập Hình học đườ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 tòa nhà. -
GARStreetscapeGeometry.mesh
Nhận 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
phải được chuyển đổi trướcGARStreetscapeGeometry.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.
LOD 1 của toà nhà
GARStreetscapeGeometryQualityBuildingLOD_1
bao gồm đất xây dựng được đẩy lên trên đến một đỉnh bằng phẳng. Chiều cao của toà nhà có thể không chính xác.
Xây dựng LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2
sẽ có độ chân thực cao hơn. Tường và mái bằng 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 hơi trên mái vẫn có thể chọc ra ngoài lưới.
Tìm hiểu về GARMesh
GARMesh
là một lưới đa giác thể hiện sự 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 vị trí nối của các đỉnh trong lưới, theo toạ độ so 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 thực tế tăng cường vào GARStreetscapeGeometry
Sử dụng GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
để tạo một điểm neo tại một tư thế cho trước gần GARStreetscapeGeometry.meshTransform
. Quảng cáo cố định cuối màn hình này sẽ kế thừa trạng thái theo dõi từ thư mục mẹ GARStreetscapeGeometry
.
Thực hiện kiểm thử lượt truy cập đối với GARStreetscapeGeometry
Bạn có thể sử dụng GARSession.raycastStreetscapeGeometry:direction:error:
để kiểm tra nhấn theo Streetscape Geometry. Nếu tìm thấy các giao lộ, GARStreetscapeGeometryRaycastResult
chứa thông tin tư thế về vị trí va chạm cũng như tham chiếu đến GARStreetscapeGeometry
đã bị nhấn. Bạn có thể truyền hình ảnh cảnh quan đường phố này đến GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
để tạo một điểm 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];