XRSession: phương thức requestHitTestSourceForTransientInput()

Khả dụng hạn chế

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

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

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

Phương thức requestHitTestSourceForTransientInput() của giao diện XRSession trả về một Promise resolve với một đối tượng XRTransientInputHitTestSource có thể được truyền cho XRFrame.getHitTestResultsForTransientInput().

Cú pháp

js
requestHitTestSourceForTransientInput(options)

Tham số

options

Một đối tượng chứa các tùy chọn cấu hình, cụ thể:

profile

Một chuỗi chỉ định tên hồ sơ đầu vào của nguồn đầu vào tạm thời sẽ được sử dụng để tính toán kết quả kiểm tra va chạm.

entityTypes Optional

Một Array chỉ định các loại thực thể được sử dụng để tạo nguồn kiểm tra va chạm. Nếu không có loại thực thể nào được chỉ định, mảng mặc định là một phần tử duy nhất với loại plane. Các loại có thể:

  • point: Tính toán kết quả kiểm tra va chạm dựa trên các điểm đặc trưng được phát hiện.
  • plane: Tính toán kết quả kiểm tra va chạm dựa trên các mặt phẳng thực tế được phát hiện.
  • mesh: Tính toán kết quả kiểm tra va chạm dựa trên các lưới được phát hiện.
offsetRay Optional

Đối tượng XRRay sẽ được sử dụng để thực hiện kiểm tra va chạm. Nếu không có đối tượng XRRay nào được cung cấp, một đối tượng XRRay mới được xây dựng mà không có tham số nào.

Giá trị trả về

Một Promise resolve với một đối tượng XRTransientInputHitTestSource.

Ngoại lệ

Thay vì ném ngoại lệ thực sự, requestHitTestSourceForTransientInput() từ chối promise được trả về với một DOMException, cụ thể là một trong các ngoại lệ sau:

NotSupportedError DOMException

Được ném nếu hit-test không phải là tính năng đã bật trong XRSystem.requestSession().

InvalidStateError DOMException

Được ném nếu phiên đã kết thúc.

NotAllowedError DOMException

Được ném nếu có số lượng yêu cầu không hợp lý. Một số tác nhân người dùng có thể giới hạn sử dụng vì lý do bảo mật.

Ví dụ

Yêu cầu một nguồn kiểm tra va chạm tạm thời

Để yêu cầu một nguồn kiểm tra va chạm, hãy bắt đầu một XRSession với tính năng phiên hit-test đã bật. Tiếp theo, cấu hình nguồn kiểm tra va chạm và lưu trữ nó để sử dụng sau trong vòng lặp khung hình và gọi XRFrame.getHitTestResultsForTransientInput() để lấy kết quả.

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

let transientHitTestSource = null;

xrSession
  .requestHitTestSourceForTransientInput({
    profile: "generic-touchscreen",
    offsetRay: new XRRay(),
  })
  .then((touchScreenHitTestSource) => {
    transientHitTestSource = touchScreenHitTestSource;
  });

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

  // do things with the transient hit test results
}

Thông số kỹ thuật

Thông số kỹ thuật
WebXR Hit Test Module
# dom-xrsession-requesthittestsourcefortransientinput

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

Xem thêm