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
Promisephân giải thành mộtXRAnchorđược tạo từ kết quả kiểm tra va chạm. XRHitTestResult.getPose()Experimental-
Trả về
XRPosecủ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.
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ả.
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í đó.
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> |