Ứng dụng của bạn có thể truy xuất thông tin về độ sâu thông qua ARCore cho Jetpack XR để xác định khoảng cách giữa các đối tượng thực tế với thiết bị.
Tạo một phiên ARCore cho Jetpack XR
Lấy thông tin về tư thế đầu thông qua phiên ARCore cho Jetpack XR.
Hãy xem phần Tìm hiểu vòng đời của một phiên để lấy Session
.
Định cấu hình phiên
Theo mặc định, bạn không thể truy xuất bản đồ độ sâu trên các phiên XR. Để bật tính năng truy xuất bản đồ độ sâu, hãy định cấu hình phiên và đặt DepthEstimationMode
:
val newConfig = session.config.copy( depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
Bạn có thể sử dụng các giá trị sau của DepthEstimationMode
:
DISABLED
: Không có thông tin về độ sâu của cảnh.RAW_ONLY
: Tính năng ước tính độ sâu được bật cùng với các giá trị độ sâu thô và độ tin cậy.SMOOTH_ONLY
: Tính năng ước tính độ sâu được bật với các giá trị độ sâu và độ tin cậy mượt mà.SMOOTH_AND_RAW
: Tính năng ước tính độ sâu được bật với cả giá trị độ sâu thô và độ sâu mượt mà, cũng như giá trị độ tin cậy.
Bản đồ độ sâu thô cung cấp thông tin ước tính độ sâu với độ chính xác cao hơn, nhưng hình ảnh độ sâu thô có thể không bao gồm thông tin ước tính độ sâu cho tất cả các pixel trong hình ảnh camera. Ngược lại, bản đồ độ sâu mượt mà cung cấp độ sâu ước tính cho mọi pixel, nhưng dữ liệu độ sâu trên mỗi pixel có thể kém chính xác hơn do quá trình làm mịn và nội suy các số liệu ước tính về độ sâu.
Truy xuất dữ liệu độ sâu
Để lấy dữ liệu độ sâu cho một camera nhất định, hãy dùng DepthMap
:
val depthMap = DepthMap.left(session) ?: return
Mỗi thiết bị có những khả năng riêng. Các thiết bị có cấu hình camera âm thanh nổi sẽ trả về bản đồ độ sâu không rỗng cho camera left
và right
.
Tương tự, các thiết bị có một camera sẽ trả về một bản đồ độ sâu khác rỗng bằng cách sử dụng mono
.
Tính giá trị độ sâu
Bạn có thể lấy giá trị độ sâu và độ tin cậy từ bản đồ độ sâu thu được:
val depthMap = DepthMap.left(session) ?: return
Tuỳ thuộc vào chế độ cài đặt cấu hình được dùng, hãy truy cập vào bản đồ độ sâu tương ứng bằng cách sử dụng smoothDepthMap
hoặc rawDepthMap
. Các số đo trong những bản đồ này được biểu thị bằng mét. Bạn cũng có thể truy cập các giá trị độ tin cậy bằng cách sử dụng smoothConfidenceMap
và rawConfidenceMap
. Các giá trị này nằm trong khoảng từ 0 đến 255, trong đó 255 thể hiện độ tin cậy cao nhất.
Để kết xuất bản đồ độ sâu cho mục đích gỡ lỗi hoặc trực quan hoá, hãy xem Phần Độ sâu của ứng dụng kiểm thử ARCore.