XRLightProbe

可用性有限

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

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

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

XRLightProbe 接口是 WebXR 设备 API 的一部分,它包含用户环境中给定点的光照信息。你可以使用 XRSession.requestLightProbe() 方法获取一个 XRLighting 对象。

此对象本身不包含光照值,但它用于为每个 XRFrame 收集光照状态。有关 XRLightProbe 的估算光照值,请参阅 XRLightEstimate

EventTarget XRLightProbe

实例属性

XRLightProbe.onreflectionchange

reflectionchange 事件的事件处理程序属性。

XRLightProbe.probeSpace 只读 实验性

一个 XRSpace,用于跟踪光照估算的相对位置和方向。

实例方法

无。

事件

reflectionchange 实验性

当估算的反射立方体贴图发生变化时触发(这发生在用户移动并改变环境光照时)。

示例

获取会话的 XRLightProbe 对象

使用 XRSession.requestLightProbe() 方法获取一个光照探测器。

js
const lightProbe = await xrSession.requestLightProbe();

XRFrame 中获取探测器的姿态

将光照探测器的 probeSpace 传递给 XRFrame.getPose() 以获取探测器的姿态。

js
const probePose = xrFrame.getPose(lightProbe.probeSpace, xrReferenceSpace);

使用 reflectionchange 事件

每当 reflectionchange 事件触发时,将 XRLightProbe 传递以获取反射立方体贴图。另请参阅 XRWebGLBinding.getReflectionCubeMap()

js
const glBinding = new XRWebGLBinding(xrSession, gl);
const lightProbe = await xrSession.requestLightProbe();
let glCubeMap = glBinding.getReflectionCubeMap(lightProbe);

lightProbe.addEventListener("reflectionchange", () => {
  glCubeMap = glBinding.getReflectionCubeMap(lightProbe);
});

规范

规范
WebXR 光照估算 API Level 1
# xrlightprobe-interface

浏览器兼容性

另见