vrdVRDevice

vrdVRDevice

(继承 vrdObject

表示虚拟现实设备,例如控制器或跟踪器。可以在实际设备与系统连接之前创建此项。设备连接后,VRED 会将物理设备映射到已创建的对象。这样可以提前定义映射。

请注意:在连接实际的硬件设备之前,当您同时调用 vrDeviceService.getVRDevice(name)vrDeviceService.getVRDeviceBySerialNumber(serialNumber) 时,会获得两个不同的 vrdVRDevice 对象。在硬件可用之前,无法验证它们是否属于同一物理设备。

连接硬件后,这些设备节点将在内部解析为正确的物理设备,但它们仍是两个单独的对象实例,因此您不应使用“==”运算符比较这些节点。

使用 vrdVRDevice.getName()vrdVRDevice.getSerialNumber() 比较它们更安全(具体取决于您是使用名称还是序列号来获取节点)。

摘要

函数:

函数

vrdVRDevice.addVirtualButton(button, physicalButton)

向控制器添加虚拟按钮,用于将按钮的位置映射到新信号。

参数:
  • button (vrdVirtualTouchpadButton) - 虚拟按钮。
  • physicalButton (string) - 与虚拟按钮相关的物理按钮的名称。

vrdVRDevice.disableRay()

禁用当前激活的定位光线。

vrdVRDevice.enableRay(axis)

在控制器之外启用定位光线。

参数:axis (string) - 定位光线的轴。可能的值如下:“x”、“y”、“z”表示控制器坐标系的各个轴,“custom”表示“指针”交互的轴,“teleportaxis”表示“传送”交互的轴,“controllerHandle”表示通过控制器手柄的轴,“leftfinger”和“rightfinger”分别表示通过手可视化的左手和右手食指的轴。

vrdVRDevice.getButtonState(button)

获取当前按钮的状态。

参数:button (string) - 按钮的名称。
返回值:当前按钮的状态。如果虚拟现实设备不知道按钮名称,则此项可能无效。
返回值类型:vrdButtonState

vrdVRDevice.getName()

获取设备名称

返回值:设备的名称。如果设备无效,则为空。
返回值类型:string

vrdVRDevice.getNode()

获取虚拟现实设备原点下的节点。此节点不是场景图形的一部分。如果应将某个几何体附加到设备,则应使用约束(请参见 vrConstraintService::createParentConstraint(const QList<vrdNode> &,const vrdNode &,const bool))。示例:vr/attachToController.py。

返回值:虚拟现实设备原点处的节点。
返回值类型:vrdNode

vrdVRDevice.getSerialNumber()

获取设备的序列号。

注意:在 OpenXR 模式下,由于 API 限制,这仅适用于 Vive 跟踪器。
返回值:序列号。如果已按名称创建设备,但尚未连接物理设备,则此项可能为空。
返回值类型:string

vrdVRDevice.getTrackingMatrix()
返回值:当前跟踪矩阵
返回值类型:QMatrix4x4

vrdVRDevice.getVisualizationMode()

获取当前可视化模式。

返回值:模式的 ID,0 = 控制器,1 = 手,2 = 控制器和手,3 = 未初始化
返回值类型:integer

vrdVRDevice.getVisualizationNode()

获取控制器可视化的根节点。如果控制器当前不可见或跟踪系统未检测到控制器,则此函数将返回空节点。

返回值:虚拟现实设备的根节点。
返回值类型:vrdNode

vrdVRDevice.getWristOrientationAngle()

返回手腕方向的角度。如果手腕处于静止位置,则该值为 0。此角度也用于确定 VRED 内置传送的方向。

返回值:手腕角度(以度为单位)。
返回值类型:float

vrdVRDevice.isVisible()

获取设备的可见性。

返回值:True = 可见,False = 不可见
返回值类型:bool

vrdVRDevice.pick()

尝试拾取场景中定位光线与场景交点处的对象。

返回值:交点数据。
返回值类型:vrdRayIntersection

vrdVRDevice.removeVirtualButton(button, physicalButton)

移除与物理按钮相关的虚拟按钮。

参数:
  • button (vrdVirtualTouchpadButton) - 虚拟按钮。
  • physicalButton (string) - 与虚拟按钮相关的物理按钮的名称。

vrdVRDevice.removeVirtualButton(virtualButton, physicalButton)

移除与物理按钮相关的虚拟按钮。

参数:
  • virtualButton (string) - 虚拟按钮的名称。
  • physicalButton (string) - 与虚拟按钮相关的物理按钮的名称。

vrdVRDevice.setButtonPressed(state, button)

模拟按钮按下。

参数:
  • state (bool) - True = 已按下,False = 已释放
  • button (string) -“menu”、“grip”、“touchpad”或“trigger”

vrdVRDevice.setButtonTouched(state, button)

模拟按钮按下。

参数:
  • state (bool) - True = 已触摸,False = 未触摸
  • button (string) -“menu”、“grip”、“touchpad”或“trigger”

vrdVRDevice.setTrackingMatrix(matrix)

模拟跟踪位置更改。

参数:matrix (QMatrix4x4) - 跟踪矩阵

vrdVRDevice.setVisible(visible)

将虚拟现实设备设置为可见或不可见。

参数:visible (bool) - True 表示可见,False 表示不可见。

vrdVRDevice.setVisualizationMode(mode)

设置可视化模式。

参数:mode (integer) - 模式的 ID,0 = 控制器,1 = 手,2 = 控制器和手

vrdVRDevice.signal()

获取可以触发的信号。

返回值:信号对象。
返回值类型:Q_SLOTvrdVRDeviceSignal

vrdVRDevice.vibrate(milliseconds, axisId)

触发设备的振动功能(如果可用)。

参数:
  • milliseconds (integer) - 振动的持续时间(以毫秒为单位)。
  • axisId (integer) - 将振动的控制器的轴。注意:在 OpenXR 中将忽略此参数。在 OpenVR 中,Oculus Touch、HTC Vive 和 Windows MR 控制器将忽略此参数或假定其为 0。