XRInputSource: gripSpace 屬性
只讀的 XRInputSource 屬性 gripSpace 返回一個 XRSpace 物件,其本地原點跟蹤用於渲染虛擬物件的姿勢,以便它們看起來被使用者的手握住(或成為手的一部分)。例如,如果使用者正握著一根虛擬的直杆,此 XRSpace 的本地原點將位於使用者拳頭的大約質心處。
值
一個 XRSpace 物件,表示輸入裝置在虛擬空間中的位置和方向,適合在場景中渲染裝置的影像。如果輸入源本身不可跟蹤,則 gripSpace 為 null。例如,只有 targetRayMode 為 tracked-pointer 的輸入才提供 gripSpace。
想象一下控制器形狀像一根直杆,被使用者握在拳頭裡。手握空間的本地原點位於使用者拳頭的質心(重心),跟蹤使用者手的位置。
左手手握空間的座標系。
右手手握空間的座標系。
如上圖所示,座標系的方向如下:
- X 軸垂直於使用者的手掌,如果控制器在使用者右手,則方向從手背向外延伸為 +X;如果控制器在使用者左手,則方向為 -X。
- Z 軸沿杆的長度方向,平行於使用者的手掌並沿握持的長度方向。-Z 指向使用者拇指的方向,+Z 指向相反方向。
- Y 軸由另外兩個軸之間的關係隱含;就像總是那樣,它是另外兩個軸的叉積(與 X 軸和 Z 軸都相距 90°)。
示例
在這個從幀渲染回撥中提取的例子中,gripSpace 用於渲染一個表示控制器在虛擬環境中的位置和方向的網格。
js
for (const source in xrSession.inputSources) {
if (source.gripSpace) {
const gripPose = frame.getPose(source.gripSpace, xrRefSpace);
if (gripPose) {
myDrawMeshUsingTransform(controllerMesh, gripPose.transform.matrix);
}
}
}
對於具有 gripSpace 值的每個輸入源,此迴圈會獲取表示 gripSpace 所描述的位置和方向的 XRPose。如果返回有效的姿勢,則呼叫 myDrawMeshUsingTransform() 方法以使用手握姿勢的變換矩陣來繪製控制器網格。
規範
| 規範 |
|---|
| WebXR Device API # dom-xrinputsource-gripspace |
瀏覽器相容性
載入中…