XRInputSource: targetRaySpace property

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.

Thuộc tính chỉ đọc targetRaySpace của XRInputSource trả về một XRSpace (thường là XRReferenceSpace) đại diện cho vị trí và hướng của tia mục tiêu trong không gian ảo. Gốc bản địa của nó theo dõi vị trí của điểm gốc của tia mục tiêu, và hướng của nó chỉ ra hướng của thiết bị điều khiển. Các giá trị này, được diễn giải trong ngữ cảnh của targetRayMode của nguồn đầu vào, có thể được sử dụng để diễn giải đầy đủ thiết bị như một nguồn đầu vào.

Để lấy một XRSpace đại diện cho vị trí và hướng của bộ điều khiển đầu vào trong không gian ảo, hãy sử dụng thuộc tính gripSpace.

Giá trị

Một đối tượng XRSpace, thường là XRReferenceSpace hoặc XRBoundedReferenceSpace, đại diện cho vị trí và hướng của tia mục tiêu của bộ điều khiển đầu vào trong không gian ảo.

Gốc bản địa của XRSpace được trả về nằm ở điểm từ đó tia mục tiêu được phát ra, và hướng của không gian chỉ ra hướng tia mục tiêu đang chỉ.

Ghi chú sử dụng

Tất cả các nguồn đầu vào, bất kể targetRayMode của chúng, đều có targetRaySpace hợp lệ. Tuy nhiên, ý nghĩa chính xác của không gian này thay đổi tùy thuộc vào chế độ:

  • Mọi đầu vào nhìn (targetRayModegaze) đều chia sẻ cùng một đối tượng XRSpace là không gian tia mục tiêu, vì đầu vào nhìn đến từ đầu người xem. Không gian chia sẻ này đại diện cho cùng vị trí như không gian được trả về bởi phương thức XRSession requestReferenceSpace(), nhưng được duy trì như một đối tượng khác để cho phép cải tiến API trong tương lai.
  • Không gian tia mục tiêu được báo cáo bởi các đầu vào con trỏ được theo dõi (targetRayModetracked-pointer) thực sự dựa trên vị trí và hướng không gian thực sự của thiết bị đầu vào.

Để xác định vị trí và hướng của tia mục tiêu trong khi kết xuất một khung hình, hãy truyền nó vào phương thức XRFrame getPose(), sau đó sử dụng transform của đối tượng XRPose được trả về.

Ví dụ

Đoạn code này cho thấy một phần của hàm được gọi mỗi khung hình. Nó tìm kiếm các đầu vào có targetRaySpace khác null. Các đầu vào có giá trị cho thuộc tính này đại diện cho các đầu vào chiếu tia mục tiêu ra ngoài từ người dùng.

Đối với mỗi đầu vào như vậy, ví dụ này tìm kiếm các đầu vào có targetRayModetracked-pointer. Đối với các con trỏ được theo dõi, hàm myRenderTargetRayAsBeam() được gọi để kết xuất một chùm từ vị trí ảo của bộ điều khiển đầu vào ra ngoài theo hướng nó đang chỉ.

js
function updateInputSources(session, frame, refSpace) {
  for (const source of session.getInputSources()) {
    const targetRayPose = frame.getPose(inputSource.targetRaySpace, refSpace);

    if (targetRayPose) {
      if (source.targetRayMode === "tracked-pointer") {
        myRenderTargetRayAsBeam(targetRayPose);
      }
    }

    // …
  }
}

Thông số kỹ thuật

Specification
WebXR Device API
# dom-xrinputsource-targetrayspace

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

Xem thêm