Sử dụng các toà nhà và địa hình xung quanh bạn trên SDK Android (Kotlin/Java)

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. Bạn có thể 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ủ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 mẫu geospatial_java minh hoạ cách lấy và kết xuất Hình học cảnh quan đườ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 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 GeospatialMode được đặt thành GeospatialMode.ENABLEDStreetscapeGeometryMode được đặt thành StreetscapeGeometryMode.ENABLED.

Java

Config config = session.getConfig();
// Streetscape Geometry requires the Geospatial API to be enabled.
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
// Enable Streetscape Geometry.
config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
session.configure(config);

Kotlin

session.configure(
  session.config.apply {
    // Streetscape Geometry requires the Geospatial API to be enabled.
    geospatialMode = Config.GeospatialMode.ENABLED
    // Enable Streetscape Geometry.
    streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
  }
)

Lấy Hình học đường phố trong một phiên ARCore

Sử dụng Session.getAllTrackables() và sử dụng StreetscapeGeometry.class để lọc kết quả.

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

Tìm hiểu về StreetscapeGeometry

StreetscapeGeometry chứa thông tin về một toà nhà:

LOD 1 của toà nhà

StreetscapeGeometry.Quality.BUILDING_LOD_1 bao gồm các dấu vết của toà nhà được đẩy lên trên đến một đỉnh phẳng. Chiều cao của toà nhà có thể không chính xác.

Xây dựng LOD 2

StreetscapeGeometry.Quality.BUILDING_LOD_2 sẽ có hình học có độ trung 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ề Mesh

Mesh 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 Mesh bao gồm một vùng đệm đỉnh và vùng đệm chỉ mục:

Đính kèm nội dung AR vào StreetscapeGeometry

Có hai cách để đính kèm nội dung AR vào Streetscape Geometry:

Thực hiện kiểm thử lượt truy cập đối với StreetscapeGeometry

Bạn có thể dùng Frame.hitTest() để kiểm thử nhấn đối với Hình học cảnh quan đường phố. Nếu tìm thấy các giao lộ, HitResult chứa thông tin tư thế về vị trí va chạm cũng như tham chiếu đến StreetscapeGeometry đã bị nhấn. Bạn có thể truyền Hình học cảnh quan đường phố này đến Trackable.createAnchor() để tạo một neo được đính kèm vào hình học đó.

Java

for (HitResult hit : frame.hitTest(singleTapEvent)) {
  if (hit.getTrackable() instanceof StreetscapeGeometry) {
    Pose hitPose = hit.getHitPose();
    hit.getTrackable().createAnchor(hitPose);
  }
}

Kotlin

for (hit in frame.hitTest(singleTapEvent)) {
  if (hit.trackable is StreetscapeGeometry) {
    val hitPose = hit.hitPose
    hit.trackable.createAnchor(hitPose)
  }
}

Bật độ sâu không gian địa lý

Chiều sâu không gian địa lý kết hợp Hình học cảnh đường phố với dữ liệu đầu vào của cảm biến cục bộ để nâng cao dữ liệu chiều sâu. Khi tính năng Độ sâu không gian địa lý được bật, độ sâu đầu ra và hình ảnh chiều sâu thô được sửa đổi để bao gồm Hình học cảnh quan đường phố được tạo điểm ảnh ngoài độ sâu quan sát cục bộ. Điều này có thể cải thiện độ chính xác của tư thế bằng cách sử dụng tính năng Chiều sâu.