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

瀏覽器相容性

另見