XRInputSource
XRInputSource 接口是 WebXR 设备 API 的一部分,它描述了用户 WebXR 兼容的虚拟或增强现实系统中一个独立的控制输入源。该设备特定于所使用的平台,但它提供了一个指向的方向,并且如果用户通过该设备执行操作,它还可以选择性地生成事件。
实例属性
gamepad只读-
如果 XR 输入源是游戏手柄或类似设备,则返回一个描述其按钮和轴状态的
Gamepad对象。如果设备不是类似游戏手柄的设备,则此属性的值为null。 gripSpace只读-
一个
XRSpace对象,其原点追踪用于渲染对象应该出现在用户所指示的(由handedness指定的)手中所持有的姿势。此空间的方位指示了手握持对象的角度。有关如何使用此空间的更多详细信息,请阅读关于gripSpace的主要文章。 hand只读-
一个
XRHand对象,提供对底层手部追踪设备的访问。 handedness只读-
一个字符串,指示此
XRInputSource代表的设备正在用于哪只手(如果有)。该值将是left、right或none。 profiles只读-
一个字符串数组,每个字符串指定一个输入配置文件的名称,该配置文件描述了此输入源的首选视觉表示和行为。
targetRayMode只读-
一个字符串,指示用于生成目标射线的技术:
gaze(注视)、tracked-pointer(追踪指针)或screen(屏幕)。 targetRaySpace只读-
一个
XRSpace对象,定义了目标射线的原点以及其延伸的方向。此空间是使用targetRayMode定义的方法建立的。
实例方法
XRInputSource 接口不定义任何方法。
用法说明
操作和目标射线
如果设备提供了其指向的方向指示,则通过 **目标射线** 来实现。这是一条从设备位置向外延伸,指向设备所指向方向的射线。
从手持控制器发出的目标射线。

如果设备包含触发器或其他可挤压的输入,例如能够识别用户握拳的手部追踪设备,则该操作称为 **主要挤压操作**。主要挤压操作应对应于现实中的抓握行为,例如抓住一个物体或按下工具或武器上的扳机。当挤压操作开始时(例如,用户按下扳机或收紧握持),一个 squeezestart 事件会被发送到 XRSession。一旦操作完成,用户释放了扳机或握持,就会发送一个 squeeze 事件。最后,会发送一个 squeezeend 事件,如果操作被中止而不是完成,也会发送此事件。
如果设备有一个按钮或其他可按下的输入控件,它就是一个 **主要输入源**,该按钮就是一个 **主要操作**。当用户按下按钮、点击触摸板或摇杆顶部按钮,或者使用调用按钮类似操作的手势或语音命令时,可能会发生主要操作。当主要操作开始时,一个 selectstart 事件会被发送到 XRSession。当操作完成时(例如,用户释放按钮时),会发送一个 select 事件。最后,一旦完成——或者用户中止了该操作——一个 selectend 事件会被发送到会话对象。
操作可能由于用户以某种特定于设备的方式进行操作而中止,或者在操作完成之前输入设备断开连接而中止。
本地坐标系
每个输入源都有自己的本地坐标系,由 gripSpace 属性描述,它是一个 XRSpace 对象,用于将输入的坐标系映射到世界坐标系。然后可以使用 grip 空间的坐标系来渲染对象,使其看起来像是被用户的手所握持。
有关输入源坐标系统的更多详细信息,请参阅详细介绍 gripSpace 属性的文章。
规范
| 规范 |
|---|
| WebXR Device API # xrinputsource-interface |
浏览器兼容性
加载中…