XRInputSource: handedness 属性
只读 XRInputSource
属性 handedness
指示 WebXR 输入源与用户的手哪个相关联,或者它是否与任何手都不关联。
值
使用说明
如果输入源不是与用户手关联的设备(无论是握持、附着还是佩戴),则 handedness
的值为 none
。这可能指示例如不是手持的输入源,例如内置在耳机中的控件或附着在头部或身体上的输入设备。
示例
handedness
的一个重要使用场景是确定控制器位于哪只手中,以便您可以在虚拟空间中绘制该手(或该手控制的设备)的表示。
js
function updateInputSources(session, frame, refSpace) {
for (const source of session.inputSources) {
if (source.gripSpace) {
const gripPose = frame.getPose(source.gripSpace, refSpace);
if (gripPose) {
myRenderHandObject(gripPose, inputSource.handedness);
}
}
}
}
此函数将在每个动画帧(或可能只是周期性地,具体取决于所需的平滑程度和任何性能约束)调用,扫描输入源列表,查找任何具有 gripSpace
且不为 null
的源。如果存在 gripSpace
,则意味着输入源是某种手持设备,因此应尽可能将其可视化地渲染。
如果 gripSpace
不为 null
,则该函数将继续获取 gripSpace
姿势,将其转换为当前参考空间。假设该姿势有效,则调用名为 myRenderHandObject()
的函数,传入握持姿势和 handedness
的值。然后,它将绘制适当的模型,将其定位并塑造成正确的手。
规范
规范 |
---|
WebXR 设备 API # dom-xrinputsource-handedness |
浏览器兼容性
BCD 表仅在浏览器中加载