XRRigidTransform:position 屬性

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

只讀的 XRRigidTransform 屬性 position 是一個 DOMPointReadOnly 物件,它提供了以米為單位的 3D 點,描述了變換的平移分量。

一個只讀的 DOMPointReadOnly,指示變換矩陣的 3D 位置分量。單位為米。

注意: 點的 w 分量始終為 1.0。

示例

建立一個可以用於將物體放置在視線水平(假設視線水平為 1.5 米)的參考空間

js
function onSessionStarted(xrSession) {
  xrSession.addEventListener("end", onSessionEnded);

  gl = initGraphics(xrSession);

  const glLayer = new XRWebGLLayer(xrSession, gl);
  xrSession.updateRenderState({ baseLayer: glLayer });

  if (immersiveSession) {
    xrSession
      .requestReferenceSpace("bounded-floor")
      .then((refSpace) => {
        refSpaceCreated(refSpace);
      })
      .catch(() => {
        session.requestReferenceSpace("local-floor").then(refSpaceCreated);
      });
  } else {
    session.requestReferenceSpace("viewer").then(refSpaceCreated);
  }
}

function refSpaceCreated(refSpace) {
  xrReferenceSpace = immersiveSession
    ? refSpace
    : refSpace.getOffsetReferenceSpace(new XRRigidTransform({ y: -1.5 }));
  xrSession.requestAnimationFrame(onFrame);
}

在為 WebXR 使用設定好圖形上下文後,首先會檢查變數 immersiveSession 是否為 true;如果是,我們首先請求一個 bounded-floor 參考空間。如果失敗(可能是因為 bounded-floor 不受支援),我們嘗試請求一個 local-floor 參考空間。

如果不在沉浸式會話中,我們則請求一個 viewer 參考空間。

在所有情況下,一旦獲得空間,它就會被傳遞給 refSpaceCreated() 函式。對於沉浸式空間,指定的空間將被儲存以備將來使用。但是,對於內聯會話,我們知道我們處於一個未自動調整到地面水平的空間,因此我們請求一個偏移參考空間,將檢視器的高度調整為比假定的地面水平(0 米)高 1.5 米。然後將使用這個新的參考空間,而不是最初接收到的那個。

最後,提交一個動畫幀請求。

規範

規範
WebXR Device API
# dom-xrrigidtransform-position

瀏覽器相容性