XRMediaBinding: createEquirectLayer() 方法

实验性: 这是一种 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

createEquirectLayer() 方法是 XRMediaBinding 接口的方法,它返回一个 XREquirectLayer 对象,该对象是一个将等距编码数据映射到球体内部的层。

语法

js
createEquirectLayer(video, options)

参数

video

要显示的 HTMLVideoElement

options

用于配置 XREquirectLayer 的对象。该对象可以具有以下属性,并且 space 是必需的

centralHorizontalAngle 可选

一个表示球体中心水平角度(以弧度表示)的数字。默认值:6.28318 (2π)。

invertStereo 可选

一个布尔值,指定是否应该反转视频中每个视图的自然位置。默认值为 false

layout 可选

表示视频布局的字符串。可能的值

default

该层适应会话的所有视图。

mono

分配一个 XRSubImage 并将其呈现给两只眼睛。

stereo

用户代理决定如何分配 XRSubImage(一个或两个)以及布局(顶部/底部或左侧/右侧)。建议对 stereo 布局使用 texture-array 纹理类型。

stereo-left-right

分配一个 XRSubImage。左眼获取纹理的左侧区域,右眼获取右侧区域。此布局旨在最大程度地减少已处于立体声状态的内容(例如立体声视频或图像)的绘制调用次数。

stereo-top-bottom

分配一个 XRSubImage。左眼获取纹理的顶部区域,右眼获取底部区域。此布局旨在最大程度地减少已处于立体声状态的内容(例如立体声视频或图像)的绘制调用次数。默认值为 mono

lowerVerticalAngle 可选

一个表示球体下部垂直角度(以弧度表示)的数字。默认值:-1.570795 (-π/2)。

radius 可选

一个表示球体半径的数字。默认值为 0.0

space 必需

一个 XRSpace 对象,定义该层与用户物理环境的空间关系。

transform 可选

一个 XRRigidTransform 对象,定义相对于 space 的偏移量和方向。

upperVerticalAngle 可选

一个表示球体上部垂直角度(以弧度表示)的数字。默认值:1.570795 (π/2)。

返回值

一个 XREquirectLayer 对象。

示例

创建 XREquirectLayer 以显示视频

创建一个 XRMediaBinding 并使用一个传递到 createEquirectLayer() 中的 HTMLVideoElement。使用上面列出的选项配置四边形层,并通过将其添加到 XRSession.updateRenderState() 中的 layers 渲染状态来将该层呈现到 XR 设备。

js
function onXRSessionStarted(xrSession) {
  const xrMediaBinding = new XRMediaBinding(xrSession);
  const video = document.createElement("video");
  video.src = "just-fascination.mp4";

  const videoLayer = xrMediaBinding.createEquirectLayer(video, {
    space: xrReferenceSpace,
  });

  xrSession.updateRenderState({
    layers: [videoLayer],
  });
}

规范

规范
WebXR 层 API 级别 1
# dom-xrmediabinding-createequirectlayer

浏览器兼容性

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

另请参阅