XRHitTestResult

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Giao diện XRHitTestResult của WebXR Device API chứa một kết quả duy nhất của một kiểm tra va chạm. Bạn có thể lấy một mảng các đối tượng XRHitTestResult cho một khung bằng cách gọi XRFrame.getHitTestResults().

Thuộc tính phiên bản

Không có.

Phương thức phiên bản

XRHitTestResult.createAnchor() Experimental

Trả về một Promise phân giải thành một XRAnchor được tạo từ kết quả kiểm tra va chạm.

XRHitTestResult.getPose() Experimental

Trả về XRPose của kết quả kiểm tra va chạm tương đối với không gian cơ sở cho trước.

Ví dụ

Lấy các đối tượng XRHitTestResult trong vòng lặp khung

Ngoài việc hiển thị XRHitTestResult trong vòng lặp khung, ví dụ này minh họa một số điều bạn phải làm trước khi yêu cầu đối tượng này. Trong khi thiết lập phiên, hãy chỉ định "hit-test" là một trong các requiredFeatures. Tiếp theo, gọi XRSession.requestHitTestSource() với các tham chiếu mong muốn. (Lấy điều này bằng cách gọi XRSession.requestReferenceSpace().) Hàm này trả về một XRHitTestSource, cái bạn sẽ sử dụng trong vòng lặp khung để lấy các đối tượng XRHitTestResult.

js
const xrSession = navigator.xr.requestSession("immersive-ar", {
  requiredFeatures: ["local", "hit-test"],
});

let hitTestSource = null;

xrSession
  .requestHitTestSource({
    space: viewerSpace, // obtained from xrSession.requestReferenceSpace("viewer");
    offsetRay: new XRRay({ y: 0.5 }),
  })
  .then((viewerHitTestSource) => {
    hitTestSource = viewerHitTestSource;
  });

// frame loop
function onXRFrame(time, xrFrame) {
  let hitTestResults = xrFrame.getHitTestResults(hitTestSource);

  // do things with the hit test results
}

Lấy tư thế của kết quả kiểm tra va chạm

Sử dụng getPose() để truy vấn tư thế của kết quả.

js
let hitTestResults = xrFrame.getHitTestResults(hitTestSource);

if (hitTestResults.length > 0) {
  let pose = hitTestResults[0].getPose(referenceSpace);
}

Tạo một anchor từ kết quả kiểm tra va chạm

Khi bạn tìm thấy các giao điểm trên bề mặt thực tế bằng kiểm tra va chạm, bạn có thể tạo một XRAnchor để đính kèm một đối tượng ảo vào vị trí đó.

js
hitTestResult.createAnchor().then(
  (anchor) => {
    // add anchored objects to the scene
  },
  (error) => {
    console.error(`Could not create anchor: ${error}`);
  },
);

Thông số kỹ thuật

Specification
WebXR Hit Test Module
# xr-hit-test-result-interface

Tương thích trình duyệt

Xem thêm