XRInputSource

可用性有限

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

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

XRInputSource 接口是 WebXR 设备 API 的一部分,它描述了用户 WebXR 兼容的虚拟或增强现实系统中一个独立的控制输入源。该设备特定于所使用的平台,但它提供了一个指向的方向,并且如果用户通过该设备执行操作,它还可以选择性地生成事件。

实例属性

gamepad 只读

如果 XR 输入源是游戏手柄或类似设备,则返回一个描述其按钮和轴状态的 Gamepad 对象。如果设备不是类似游戏手柄的设备,则此属性的值为 null

gripSpace 只读

一个 XRSpace 对象,其原点追踪用于渲染对象应该出现在用户所指示的(由 handedness 指定的)手中所持有的姿势。此空间的方位指示了手握持对象的角度。有关如何使用此空间的更多详细信息,请阅读关于 gripSpace 的主要文章。

hand 只读

一个 XRHand 对象,提供对底层手部追踪设备的访问。

handedness 只读

一个字符串,指示此 XRInputSource 代表的设备正在用于哪只手(如果有)。该值将是 leftrightnone

profiles 只读

一个字符串数组,每个字符串指定一个输入配置文件的名称,该配置文件描述了此输入源的首选视觉表示和行为。

targetRayMode 只读

一个字符串,指示用于生成目标射线的技术:gaze(注视)、tracked-pointer(追踪指针)或 screen(屏幕)。

targetRaySpace 只读

一个 XRSpace 对象,定义了目标射线的原点以及其延伸的方向。此空间是使用 targetRayMode 定义的方法建立的。

实例方法

XRInputSource 接口不定义任何方法。

用法说明

操作和目标射线

如果设备提供了其指向的方向指示,则通过 **目标射线** 来实现。这是一条从设备位置向外延伸,指向设备所指向方向的射线。

从手持控制器发出的目标射线。

A screenshot showing a target ray being emitted by a hand controller

如果设备包含触发器或其他可挤压的输入,例如能够识别用户握拳的手部追踪设备,则该操作称为 **主要挤压操作**。主要挤压操作应对应于现实中的抓握行为,例如抓住一个物体或按下工具或武器上的扳机。当挤压操作开始时(例如,用户按下扳机或收紧握持),一个 squeezestart 事件会被发送到 XRSession。一旦操作完成,用户释放了扳机或握持,就会发送一个 squeeze 事件。最后,会发送一个 squeezeend 事件,如果操作被中止而不是完成,也会发送此事件。

如果设备有一个按钮或其他可按下的输入控件,它就是一个 **主要输入源**,该按钮就是一个 **主要操作**。当用户按下按钮、点击触摸板或摇杆顶部按钮,或者使用调用按钮类似操作的手势或语音命令时,可能会发生主要操作。当主要操作开始时,一个 selectstart 事件会被发送到 XRSession。当操作完成时(例如,用户释放按钮时),会发送一个 select 事件。最后,一旦完成——或者用户中止了该操作——一个 selectend 事件会被发送到会话对象。

操作可能由于用户以某种特定于设备的方式进行操作而中止,或者在操作完成之前输入设备断开连接而中止。

本地坐标系

每个输入源都有自己的本地坐标系,由 gripSpace 属性描述,它是一个 XRSpace 对象,用于将输入的坐标系映射到世界坐标系。然后可以使用 grip 空间的坐标系来渲染对象,使其看起来像是被用户的手所握持。

A diagram showing the coordinate system defined by the gripSpace property

有关输入源坐标系统的更多详细信息,请参阅详细介绍 gripSpace 属性的文章。

规范

规范
WebXR Device API
# xrinputsource-interface

浏览器兼容性

另见