跳至主要内容
版本: 2.0.0

Haply::Inverse::Unity::Inverse3

继承于 DeviceBehaviour

公共活动

名称
设备代理设备状态改变()
在每个触觉帧上触发的事件。

公共职能

名称
代表 void设备代理(Inverse3device)
表示将处理Inverse3设备的Inverse3.DeviceStateChanged事件的方法。
空白光标设置本地力(in Vector3 force)
设置设备本地空间中沿 x、y 和 z 轴施加到光标上的力,单位为牛顿(N)。
空白游标设置本地力(浮点 x、浮点 y、浮点 z)
空白光标力设置(in Vector3 force)
以牛顿(N)为单位设置游标在世界空间中受到的力。
空白光标力设置(浮点 x、浮点 y、浮点 z)
空白光标设置本地位置(in Vector3 position)
设置光标在设备本地空间中沿 x、y 和 z 轴的位置设置点,单位为米(m)。
空白游标设置本地位置(浮点 x、浮点 y、浮点 z)
空白光标位置设置(in Vector3 position)
设置光标在世界空间中的位置设定点,单位为米(m)。
空白光标设置位置(浮点 x、浮点 y、浮点 z)
空白关节设置扭矩(以 Vector3 扭矩为单位)
Inverse3设备的每个关节设置所需的扭矩,单位为牛顿毫米(Nmm)。
空白关节设置扭矩(浮动 x、浮动 y、浮动 z)
空白关节角度设置(以 Vector3 angles 为单位)
Inverse3设备的每个关节设置所需的关节角度,单位为度(°)。
空白关节设置角度(浮动 x、浮动 y、浮动 z)
boolTryResetForce()
尝试重置光标的所有力度和位置控制。
向量3变换点(Vector3 position)
使用缓存的LocalToWorldMatrix 将位置从设备或光标的本地空间转换到世界空间。
向量3转换矢量(Vector3 vector)
使用缓存的LocalToWorldMatrix 将一个向量从设备或光标的本地空间转换到世界空间。
向量3反变换点(Vector3 position)
使用缓存的WorldToLocalMatrix 将位置从世界空间转换回设备或光标的本地空间。
向量3反变换向量(Vector3 vector)
使用缓存的WorldToLocalMatrix 将矢量从世界空间转换回设备或光标的本地空间。
覆盖字符串ToString()

受保护的功能

名称
覆盖 void设置()
覆盖 void固定更新()
覆盖 void添加客户端监听器(内部客户端连接 clientConnection)
覆盖 void删除客户端监听器(内部客户端连接 clientConnection)

公共财产

名称
覆盖 DeviceType设备类型
覆盖游标行为光标
向量3本地位置
获取Inverse3光标在设备本地空间中的位置,单位为米(m)。
向量3位置
LocalPosition和 LocalToWorldMatrix 获取逆 3光标的世界空间位置
向量3本地速度
获取Inverse3光标在设备本地空间的速度,单位为米/秒(m/s)。
向量3速度
LocalVelocity和 LocalToWorldMatrix 获取反 3游标的世界空间速度
手感类型选定手度
获取或设置Inverse3设备所需的手度类型。
手感类型手度
在运行时获取设备的手度类型。
向量3工作区中心左
HandednessType.Left-handed 设备的工作区中心本地坐标。
向量3工作区中心右
HandednessType.Right-handed 设备的工作区中心本地坐标。
向量3工作区中心
工作区中心的本地坐标,取决于手性值
矩阵4x4本地到世界矩阵
将设备或光标空间转换为世界空间的矩阵。
矩阵4x4世界到本地矩阵
从世界空间转换回设备或光标空间的矩阵。

受保护的财产

名称
变革空间变换参考
用于设置LocalToWorldMatrixWorldToLocalMatrix 的参考变换。

公共活动文件

事件 DeviceStateChanged

DeviceDelegate DeviceStateChanged()

在每个触觉帧上触发的事件。

请参见 ClientConfiguration.HapticFrequencyHz

它能实时更新光标的位置和速度。

该事件适用于需要持续跟踪光标状态或应用实时控制命令的应用程序。在此事件中,您可以使用位置速度本地位置本地速度等属性。

以及控制方法,如

触发该事件的频率由触觉循环频率决定,可通过ClientConfiguration.HapticFrequencyHz 进行配置。

公共函数文档

函数 DeviceDelegate

delegate void DeviceDelegate(
Inverse3 device
)

代表处理Inverse3设备的Inverse3 .DeviceStateChanged事件的方法。

参数

  • 设备触发事件的Inverse3设备实例。

函数 CursorSetLocalForce

void CursorSetLocalForce(
in Vector3 force
)

以牛顿(N)为单位,设置设备本地空间中沿 x、y 和 z 轴施加到光标上的力。

参数

  • 设备本地空间中以牛顿(N)为单位的所需力矢量。

例外情况

  • 当客户端连接未建立时抛出的InvalidOperationException 异常
  • 如果收到来自服务的意外错误,则抛出异常

此方法将未经处理的力矢量直接发送到设备的本地空间,只能与LocalPosition(本地位置)和LocalVelocity(本地速度)结合使用。如果力的计算基于世界空间坐标(位置速度)和/或涉及变换(位置、旋转或缩放)控制器,则应改用CursorSetForce

产生力时,设备的 LED 灯会变绿。Inverse3设备总共可产生高达 10 N 的力,但在整个工作区内可实现的最大力有所不同。如果请求的力超出了设备的能力,它将在同一方向上产生最大可能的力,或者,如果启用了力缩放,则在保持方向相似的情况下,调整以提供可实现的最大力。将所有轴向的力设置为零时,光标上不会产生任何净力,但如果启用了重力补偿功能,光标仍将保持重力补偿状态。

函数 CursorSetLocalForce

void CursorSetLocalForce(
float x,
float y,
float z
)

函数 CursorSetForce

void CursorSetForce(
in Vector3 force
)

以牛顿(N)为单位设置世界空间中施加到光标上的力。

参数

  • 世界空间中以牛顿(N)为单位的期望力矢量。

请参见 游标设置本地力,反变换向量

该方法将所提供的力矢量从世界空间转换为设备的本地空间,然后再将其发送到设备。当力的计算基于世界空间坐标时,应使用该方法。如需直接控制本地空间,请使用CursorSetLocalForce

函数 CursorSetForce

void CursorSetForce(
float x,
float y,
float z
)

函数 CursorSetLocalPosition

void CursorSetLocalPosition(
in Vector3 position
)

设置光标在设备本地空间中沿 x、y 和 z 轴的位置设定点,单位为米(m)。

参数

  • position设备本地空间中以米(m)为单位的预期位置矢量。

例外情况

  • 当客户端连接未建立时抛出的InvalidOperationException 异常
  • 如果收到来自服务的意外错误,则抛出异常

参见工作区中心左侧工作区中心右侧

该方法设置一个位置设定点,将光标移动到指定位置。它将未经处理的位置直接发送到设备的本地空间。如果位置计算基于世界空间坐标位置、速度)和/或涉及变换(位置、旋转或缩放)控制器,则应考虑使用CursorSetPosition

当处于位置控制模式时,设备的 LED 会变成蓝色。设置无法实现的位置会导致Inverse3设备臂缓慢下降或保持在当前位置。要退出位置控制模式,请施加一个力(可以为零)、使用TryResetForce或断开与设备的连接。

函数 CursorSetLocalPosition

void CursorSetLocalPosition(
float x,
float y,
float z
)

函数 CursorSetPosition

void CursorSetPosition(
in Vector3 position
)

以米(m)为单位设置光标在世界空间中的位置设定点。

参数

  • position世界空间中以米(m)为单位的预期位置矢量。

请参见 光标设置本地位置,反变换点

在设置位置设定点之前,该方法会将所提供的位置从世界空间转换为设备的本地空间。该方法适用于基于世界空间坐标计算位置的情况。若要直接进行本地空间控制,请使用CursorSetLocalPosition 方法

函数 CursorSetPosition

void CursorSetPosition(
float x,
float y,
float z
)

函数 JointsSetTorque

void JointsSetTorque(
in Vector3 torque
)

以牛顿毫米 (Nmm) 为单位为Inverse3设备的每个关节设置所需的扭矩。

参数

  • 扭矩以牛顿毫米(Nmm)为单位的所需扭矩矢量。

例外情况

  • 当 throwException 为真且客户端连接未建立时抛出的InvalidOperationException
  • 如果收到来自服务的意外错误,则抛出异常

产生扭矩时,设备的 LED 灯会变绿。

Inverse3设备可在每个关节处产生高达 1000 Nmm 的扭矩。如果所需的扭矩超过这一限制,设备将产生最大扭矩。

  • 关节 1 控制设备的头部。
  • 关节 2 控制手臂的内侧关节。
  • 关节 3 控制手臂的外侧关节。

函数 JointsSetTorque

void JointsSetTorque(
float x,
float y,
float z
)

函数 JointsSetAngles

void JointsSetAngles(
in Vector3 angles
)

Inverse3设备的每个关节设置所需的关节角度,单位为度 (°)。

参数

  • angles理想的关节角度矢量,单位为度(°)。

例外情况

  • 当 throwException 为真且客户端连接未建立时抛出的InvalidOperationException
  • 如果收到来自服务的意外错误,则抛出异常

为设备设置所需的关节角度。设置一个无法获得的角度将使设备移动到最接近物理上可获得的配置。例如,设置 (-90, 180, 0) 将设备移动到头部与身体平行、手臂与身体垂直的位置。

  • 关节 1 控制设备的头部。
  • 关节 2 控制手臂的内侧关节。
  • 关节 3 控制手臂的外侧关节。

函数 JointsSetAngles

void JointsSetAngles(
float x,
float y,
float z
)

函数 TryResetForce

bool TryResetForce()

尝试重置光标的所有力和位置控制。

返回值如果强制重置成功,则返回 true;如果客户端连接未建立或发生意外错误,则返回 false。

如果 ClientConnection 已关闭,该方法不会抛出异常,因此适合在程序终止或 OnDisable 事件中使用。如果客户端连接未建立,或在重置力和位置控制时收到来自服务的意外错误,该方法将返回 false。

函数 TransformPoint

Vector3 TransformPoint(
Vector3 position
)

使用缓存的LocalToWorldMatrix 将位置从设备或光标的本地空间转换到世界空间。

参数

  • 当地职位

参见本地到世界矩阵

返回:世界位置。

您可以使用InverseTransformPoint 执行从世界空间到本地空间的相反转换。

函数 TransformVector

Vector3 TransformVector(
Vector3 vector
)

使用缓存的LocalToWorldMatrix 将矢量从设备或光标的本地空间转换到世界空间。

参数

  • 矢量本地矢量

参见本地到世界矩阵

返回:世界矢量。

您可以使用反变换矢量(InverseTransformVector)进行相反的转换,即从世界空间转换到本地空间。

函数 InverseTransformPoint

Vector3 InverseTransformPoint(
Vector3 position
)

使用缓存的WorldToLocalMatrix 将位置从世界空间转换回设备或光标的本地空间。

参数

  • 位置世界位置。

参见世界到本地矩阵

返回:本地位置。

TransformPoint 相反。

函数 InverseTransformVector

Vector3 InverseTransformVector(
Vector3 vector
)

使用缓存的WorldToLocalMatrix 将矢量从世界空间转换回设备或光标的本地空间。

参数

  • 矢量世界矢量。

参见世界到本地矩阵

返回:本地向量

TransformVector 相反。

函数 ToString

override string ToString()

受保护函数文档

功能设置

override void Setup()

函数 FixedUpdate

override void FixedUpdate()

函数 AddClientListeners

override void AddClientListeners(
Internal.ClientConnection clientConnection
)

函数 RemoveClientListeners

override void RemoveClientListeners(
Internal.ClientConnection clientConnection
)

公共财产文件

属性 DeviceType

override DeviceType DeviceType;

游标属性

override CursorBehaviour Cursor;

该属性覆盖基本的 DeviceBehaviour.Cursor 属性,并可安全地转换为Inverse3Cursor。设置此属性也会更新 DeviceBehaviour._performSetup 标志。

属性 本地位置

Vector3 LocalPosition;

获取Inverse3光标在设备本地空间中的位置,单位为米(m)。

设备 DeviceBehaviour.ConnectionState 必须先为 DeviceConnectionState.Opened,才能获得一致的值。

物业位置

Vector3 Position;

本地位置(LocalPosition)和本地到世界矩阵(LocalToWorldMatrix)获取逆 3光标的世界空间位置

参见:Transform.position,TransformPoint

属性 LocalVelocity

Vector3 LocalVelocity;

获取Inverse3光标在设备本地空间的速度,单位为米/秒(m/s)。

所提供的速度是通过速度估算算法计算得出的,无需进一步过滤或处理。

设备 DeviceBehaviour.ConnectionState 必须先为 DeviceConnectionState.Opened,才能获得一致的值。

速度属性

Vector3 Velocity;

LocalVelocity和 LocalToWorldMatrix 获取反 3游标的世界空间速度

变换向量

属性

HandednessType SelectedHandedness;

获取或设置所需的Inverse3设备手度类型。

如果设置为 HandednessType.Nil,DeviceMapper 将在运行时选择找到的第一个设备。

使用 "手持度"可在运行时了解设备的真实手持度。

属性 Handedness

HandednessType Handedness;

在运行时获取设备的手度类型。

属性 WorkspaceCenterLeft

static Vector3 WorkspaceCenterLeft = new(-0.05f, 0.15f, -0.12f);

HandednessType.Left-handed 设备的工作区中心本地坐标。

请参见 光标设置本地位置选定手性

将光标设置在该位置将移动设备,使其头部与身体平行,手臂与身体垂直。

属性 WorkspaceCenterRight

static Vector3 WorkspaceCenterRight = new(0.05f, 0.15f, -0.12f);

HandednessType.Right-handed 设备的工作区中心局部坐标。

请参见 光标设置本地位置选定手性

将光标设置在该位置将移动设备,使其头部与身体平行,手臂与身体垂直。

属性 WorkspaceCenter

Vector3 WorkspaceCenter;

工作区中心的本地坐标,取决于手感值。

请参见 光标设置本地位置选定手性

如果 Handedness 为 HandednessType.Nil,则返回WorkspaceCenterRight

将光标设置在该位置将移动设备,使其头部与身体平行,手臂与身体垂直。

属性 LocalToWorldMatrix

Matrix4x4 LocalToWorldMatrix;

将设备或光标空间转换为世界空间的矩阵。

参见空间变换引用,变换点,变换向量

矩阵取决于SpaceTransformationReference

该矩阵可用于将位置和速度从设备或光标的本地空间转换到世界空间。在无法直接获取变换组件数据的环境中,它可以准确地进行触觉相关计算。

属性 WorldToLocalMatrix

Matrix4x4 WorldToLocalMatrix;

从世界空间转换回设备或光标空间的矩阵。

参见空间变换基准,反变换点,反变换向量

矩阵取决于SpaceTransformationReference

该矩阵可用于将计算出的力从世界空间转换到设备或光标的本地空间。在无法直接获取变换组件数据的环境中,它可以准确地进行触觉相关计算。

受保护财产文件

属性 SpaceTransformationReference

Transform SpaceTransformationReference;

用于设置LocalToWorldMatrixWorldToLocalMatrix 的参考变换。

如果设置了光标,则使用其父设备。否则使用当前设备转换。