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

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.

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 ArGeospatialMode được đặt thành ArGeospatialModeEnabledArStreetscapeGeometryMode được đặt thành ArStreetscapeGeometryModeEnabled.

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Enable Streetscape Geometry.
ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

Nhận Hình học cảnh đường phố trong phiên ARCore

Sử dụng ArSession_getAllTrackables()AR_TRACKABLE_STREETSCAPE_GEOMETRY để lọc kết quả.

ArTrackableList* trackable_list = NULL;
ArTrackableList_create(ar_session, &trackable_list);
ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);

Tìm hiểu về ArStreetscapeGeometry

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

LOD 1 của toà nhà

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_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 tòa nhà có thể không chính xác.

Xây dựng LOD 2

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_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ề ArMesh

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

Đính kèm nội dung thực tế tăng cường vào ArStreetscapeGeometry

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

Thực hiện kiểm thử nhấn đối với ArStreetscapeGeometry

Bạn có thể dùng ArFrame_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ộ, ArHitResult chứa thông tin tư thế về vị trí va chạm cũng như tham chiếu đến ArStreetscapeGeometry đã bị nhấn. Bạn có thể truyền hình ảnh cảnh quan đường phố này đến ArTrackable_acquireNewAnchor() để tạo một điểm neo đi kèm.

ArHitResultList *hit_result_list = NULL;
ArHitResult *hit_result = NULL;
ArHitResultList_create(ar_session, &hit_result_list);
ArHitResult_create(ar_session, &hit_result);

ArFrame_hitTestRay(ar_session, ar_frame, origin, direction, hit_result_list);
ArHitResultList_getItem(ar_session, hit_result_list, 0, hit_result);

ArAnchor *out_anchor = NULL;
ArStatus status = ArHitResult_acquireNewAnchor(ar_session, hit_result, &out_anchor);
CHECK(status == AR_SUCCESS);

Bật tính năng Độ sâu không gian địa lý

Độ sâu không gian địa lý kết hợp Hình học của cảnh quan đường phố với đầu vào cảm biến cục bộ để cải thiện dữ liệu độ sâu. Khi bạn bật tính năng Chiều sâu không gian địa lý, chiều sâu đầu ra và hình ảnh chiều sâu thô sẽ được sửa đổi để bao gồm cả Hình học cảnh đường phố được quét cùng với chiều sâu được 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.