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 设备 API
# dom-xrrigidtransform-position

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。