XRFrame: getDepthInformation() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

XRFrame 接口的 getDepthInformation() 方法返回一个 XRCPUDepthInformation 对象,其中包含当前活动和正在动画的帧的 CPU 深度信息。

语法

js
getDepthInformation(view)

参数

view

从查看器姿势获取的 XRView 对象。

返回值

一个 XRCPUDepthInformation 对象。

异常

NotSupportedError DOMException

如果 "depth-sensing" 不在此 XRSession 的已启用功能列表中,则抛出此异常。

InvalidStateError DOMException

在以下情况下抛出

示例

获取 CPU 深度信息

js
// Make sure to request a session with depth-sensing enabled
const session = navigator.xr.requestSession("immersive-ar", {
  requiredFeatures: ["depth-sensing"],
  depthSensing: {
    usagePreference: ["cpu-optimized", "gpu-optimized"],
    formatPreference: ["luminance-alpha", "float32"],
  },
});

// …

// Obtain depth information in an active and animated frame
function rafCallback(time, frame) {
  session.requestAnimationFrame(rafCallback);
  const pose = frame.getViewerPose(referenceSpace);
  if (pose) {
    for (const view of pose.views) {
      const depthInformation = frame.getDepthInformation(view);
      if (depthInformation) {
        // Do something with the depth information
        renderDepth(depthInformation);
      }
    }
  }
}

规范

规范
WebXR Depth Sensing 模块
# dom-xrframe-getdepthinformation

浏览器兼容性