ARCore cho Jetpack XR có thể phát hiện các bề mặt phẳng trong môi trường của người dùng và cung cấp thông tin về các bề mặt đó, chẳng hạn như tư thế, kích thước và hướng. Điều này có thể giúp ứng dụng của bạn tìm thấy các bề mặt như bàn để đặt các đối tượng lên.
Tạo một phiên ARCore cho Jetpack XR
Truy cập vào thông tin về mặt phẳng 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, tính năng phát hiện mặt phẳng không được bật trên các phiên XR. Để bật tính năng theo dõi mặt phẳng, hãy định cấu hình phiên và đặt chế độ PlaneTrackingMode.HORIZONTAL_AND_VERTICAL
:
val newConfig = session.config.copy( planeTracking = Config.PlaneTrackingMode.HORIZONTAL_AND_VERTICAL, ) when (val result = session.configure(newConfig)) { is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* A different unhandled exception was thrown. */) }
Truy xuất trạng thái của các mặt phẳng được nhận biết
ARCore cho Jetpack XR cung cấp trạng thái của các mặt phẳng thông qua một StateFlow
phát ra trạng thái của các mặt phẳng. Việc đăng ký các mặt phẳng trong một phiên sẽ thông báo cho ứng dụng của bạn khi các mặt phẳng được thêm, cập nhật hoặc xoá.
Plane.subscribe(session).collect { planes -> // Planes have changed; update plane rendering }
Mặt phẳng có các thuộc tính sau:
label
: nội dung mô tả ngữ nghĩa về mộtPlane
nhất định. Có thể làWALL
,FLOOR
,CEILING
hoặcTABLE
.centerPose
: Tư thế của tâm mặt phẳng được phát hiện.extents
: Kích thước của mặt phẳng được phát hiện, tính bằng mét.vertices
: Danh sách các đỉnh của một đa giác lồi xấp xỉ mặt phẳng.
Thực hiện kiểm tra lượt nhấn vào các mặt phẳng
Kiểm thử lượt truy cập là một phương thức tính toán giao điểm của một tia với các đối tượng do phiên theo dõi. Một ứng dụng phổ biến của kiểm tra lượt truy cập là trỏ vào một bảng và đặt một đối tượng tại vị trí đó. Việc tiến hành kiểm tra lượt nhấn sẽ dẫn đến một danh sách các đối tượng lượt nhấn. Nói cách khác, một lượt kiểm tra lượt nhấn không dừng lại ở lượt nhấn vào đối tượng đầu tiên. Tuy nhiên, thường thì bạn chỉ quan tâm đến lượt truy cập đối tượng đầu tiên của một loại nhất định.
Để thực hiện kiểm tra lượt nhấn, hãy dùng Interaction.hitTest()
với Ray
:
val results = androidx.xr.arcore.hitTest(session, ray) // When interested in the first Table hit: val tableHit = results.firstOrNull { val trackable = it.trackable trackable is Plane && trackable.state.value.label == Plane.Label.TABLE }