XRFrame:fillPoses() 方法

可用性有限

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

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

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

XRFrame 接口的 fillPoses() 方法会使用相对于给定基空间 (base space) 的姿势矩阵填充一个 Float32Array,并在成功填充所有空间后返回 true

语法

js
fillPoses(spaces, baseSpace, transforms)

参数

空格

要获取姿势的 XRSpace 对象数组。

baseSpace

一个 XRSpace 对象,用作相对位置和方向的基(或原点)。

transforms

一个 Float32Array,其中填充了相对于给定 baseSpace 的姿势矩阵。

返回值

一个布尔值,指示所有空间是否都具有有效姿势。

异常

TypeError

如果 spaces 的长度乘以 16 大于 transforms 中的元素数量,则会抛出此异常。

示例

获取手中所有关节的姿势

要高效地获取每个 XRHand 的所有 25 个关节的所有姿势,可以使用 fillPoses() 方法。

js
let poses1 = new Float32Array(16 * 25);
let poses2 = new Float32Array(16 * 25);

function onXRFrame(xrFrame, renderer) {
  let hand1 = xrFrame.session.inputSources[0].hand;
  xrFrame.fillPoses(hand1.values(), renderer.referenceSpace, poses1);
  let hand2 = xrFrame.session.inputSources[1].hand;
  xrFrame.fillPoses(hand2.values(), renderer.referenceSpace, poses2);
}

规范

规范
WebXR Hand Input 模块 - Level 1
# dom-xrframe-fillposes

浏览器兼容性

另见