跳至主要内容
版本: 2.2.0

Haply::Inverse::Unity::Inverse3

代表 Inverse3 设备控制器,管理设备数据和状态更新。 更多

继承于Haply.Inverse.Unity.DeviceBehaviour, MonoBehaviour

公共活动

名称
设备代理设备状态改变()
在每个触觉帧上触发的事件。
Action< Inverse3 >OrientationChangedAsync()
每当Inverse3设备的机身方向发生变化时触发。

公共职能

名称
代表 void设备代理(Inverse3inverse3)
表示将处理Inverse3设备的Inverse3.DeviceStateChanged事件的方法。
空白请求更新当前电源状态()
请求更新当前电源状态(Powered),完成后触发PowerSupplyStatusChanged事件。
空白请求更新方向()
请求更新Inverse3主体方向,完成后触发OrientationChangedAsync事件。
空白光标设置本地力(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)
空白关节设置扭矩(Joint3 torques)
Inverse3设备的每个关节设置所需的扭矩,单位为牛顿毫米 (Nmm)。
空白关节设置力矩(浮点 t0、浮点 t1、浮点 t2)
空白关节设置扭矩角度
空白关节设置扭矩(浮动 x、浮动 y、浮动 z)
空白关节角度设置(Joint3 angles)
Inverse3设备的每个关节设置所需的关节角度,单位为度(°)。
空白关节设置角度(浮动 alpha0、浮动 alpha1、浮动 alpha2)
空白关节设置角度角度
bool释放()
试图重置光标的所有力和位置控制。
boolTryResetForce()
向量3变换点(Vector3 position)
使用缓存的LocalToWorldMatrix 将位置从设备或光标的本地空间转换到世界空间。
向量3转换矢量(Vector3 vector)
使用缓存的LocalToWorldMatrix 将一个向量从设备或光标的本地空间转换到世界空间。
向量3反变换点(Vector3 position)
使用缓存的WorldToLocalMatrix 将位置从世界空间转换回设备或光标的本地空间。
向量3反变换向量(Vector3 vector)
使用缓存的WorldToLocalMatrix 将矢量从世界空间转换回设备或光标的本地空间。
覆盖字符串字符串()
返回对象的字符串表示,提供人可读的描述,包括对象名称、类类型、设备 ID 和选定的手度。

受保护的功能

名称
覆盖 voidInvokeReadyEvent()
虚拟覆盖 void设置()
一旦设置了 _performSetup 标志,该方法就会被自动调用,以处理因计算量过大而无法在每一帧调用的情况。 此方法可以覆盖,但要注意保持基本调用。使用SetSetupToPerform可触发Setup调用。
虚拟覆盖 void固定更新()

公共财产

名称
覆盖 DeviceType设备类型
获取设备类型,该控制器始终返回 DeviceType.Inverse3。
覆盖游标行为光标
逆3体主体
游戏对象自动以Inverse3身体方向旋转。
向量3光标本地位置
获取Inverse3光标在设备本地空间中的位置(米)。
向量3本地位置
向量3游标位置
CursorLocalPosition和 LocalToWorldMatrix 获取Inverse3光标的世界空间位置
向量3职位
向量3光标本地速度
获取Inverse3光标在设备本地空间的速度,单位为米/秒(m/s)。
向量3本地速度
向量3游标速度
CursorLocalVelocity和 LocalToWorldMatrix 获取反 3游标世界空间速度
向量3速度
联合3关节角度
获取Inverse3设备的当前关节角度(度)。
联合3关节角速度
获取Inverse3设备关节的当前角速度(单位:度/秒)。
手感类型选定手度
获取或设置Inverse3设备所需的手度类型。
手感类型手度
在运行时获取设备的手度类型。
bool有电
表示设备当前是否有电。
四元数方向
根据上次接收到的方向数据,获取Inverse3设备的当前方向。
浮动工作区半径
设备本地空间中工作区的大致半径,单位为米(m)。
浮动工作空间缩放半径
工作空间在世界空间中的近似半径。
向量3工作区中心左
HandednessType.Left-handed 设备的工作区中心本地坐标。
向量3工作区中心右
HandednessType.Right-handed 设备的工作区中心本地坐标。
向量3工作区中心局部位置
工作区中心的本地位置,取决于手感值。
向量3工作区中心位置
工作区中心的世界位置,取决于手感值。
向量3工作空间中心
控制模式控制模式
获取设备当前的控制模式。
向量3力输出
通过 CursorSetForce 或 CursorSetLocalForce 方法发送到设备的最后力值。
向量3位置输出
通过 CursorSetPosition 或 CursorSetLocalPosition 方法发送到设备的最后位置。
联合3关节点扭矩输出
通过 JointsSetTorque 方法发送到设备的最后扭矩。
联合3关节角度输出
通过 JointsSetAngles 方法发送到设备的最后一个角度。
bool空间变换更新已启用
获取或设置空间变换矩阵更新是否启用的值。
矩阵4x4本地到世界矩阵
将设备或光标空间转换为世界空间的矩阵。
矩阵4x4世界到本地矩阵
从世界空间转换回设备或光标空间的矩阵。

受保护的财产

名称
覆盖基坐标转换器坐标转换器
变革空间变换参考
用于设置LocalToWorldMatrixWorldToLocalMatrix 的参考变换。

公共属性

名称
UnityEvent< Inverse3 >就绪
Inverse3设备连同光标和主体已成功初始化并可供使用时触发的事件。
UnityEvent< Inverse3, bool >电源状态改变
Inverse3设备的电源状态发生变化时触发。
UnityEvent< Inverse3, ControlMode >控制模式改变
当设备的控制模式发生变化时触发的事件。

其他继承成员

继承自Haply.Inverse.Unity.DeviceBehaviour的公共事件

名称
Action< DeviceBehaviour, Ret >错误事件()
连接状态代理连接状态改变()
设备连接状态发生变化时触发的事件。
Action< DeviceBehaviour, DeviceConnectionState, DeviceConnectionState >ConnectionStateChangedAsync()
设备连接状态改变后不久触发的事件。

继承自Haply.Inverse.Unity.DeviceBehaviour的公共函数

名称
代表 void连接状态代理(DeviceBehaviourdevice, DeviceConnectionState state, DeviceConnectionState prevState)
用于处理设备连接状态更改的代理。
空白设置执行()
表示在下一帧执行设置。

继承自Haply.Inverse.Unity.DeviceBehaviour的受保护函数

名称
虚拟 void醒来()
空白开启()
空白禁用时()
空白销毁时()

继承自Haply.Inverse.Unity.DeviceBehaviour的公共属性

名称
int所选设备标识
整数设备 ID
获取设备 ID。
bool已就绪
指示设备是否已准备就绪可以使用。
设备连接状态连接状态
获取或设置设备的当前连接状态。
bool是否已连接
获取设备是否已连接。
bool是否已打开
获取设备是否已打开。

继承自Haply.Inverse.Unity.DeviceBehaviour的受保护属性

名称
bool是否已设置光标
指示是否已设置光标。

继承自Haply.Inverse.Unity.DeviceBehaviour的公共属性

名称
const intANY_ID
UnityEvent< DeviceBehaviour >设备打开
ConnectionState过渡到 DeviceConnectionState.Opened 状态时触发的事件。
UnityEvent< DeviceBehaviour >设备关闭
ConnectionState过渡到 DeviceConnectionState.Connected 状态时触发的事件。

继承自Haply.Inverse.Unity.DeviceBehaviour的受保护属性

名称
字符串对象名称

详细说明

class Haply::Inverse::Unity::Inverse3;

代表 Inverse3 设备控制器,管理设备数据和状态更新。

该组件应附加到一个 GameObject 上,该 GameObject 代表Unity场景中的物理Inverse3设备。

公共活动文件

事件 DeviceStateChanged

DeviceDelegate DeviceStateChanged()

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

请参见 客户端配置.HapticPollFrequency(触觉轮询频率

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

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

以及控制方法,如

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

事件 OrientationChangedAsync

Action< Inverse3 > OrientationChangedAsync()

Inverse3设备的机身方向发生变化时触发。

公共函数文档

函数 DeviceDelegate

delegate void DeviceDelegate(
Inverse3 inverse3
)

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

参数

  • inverse3引发事件的Inverse3设备实例。

函数 RequestPowerSupplyStatus

void RequestPowerSupplyStatus()

请求更新当前电源状态(Powered),完成后触发PowerSupplyStatusChanged事件。

注意:频繁调用此方法(例如在更新循环中)可能会导致性能下降和触觉抖动。建议根据特定的用户操作或事件谨慎使用此方法,或使用DeviceMapperDeviceMapper.DeviceInfoPollingMode.Continuous模式。

函数 RequestOrientation

void RequestOrientation()

请求更新Inverse3主体的方向,完成后触发OrientationChangedAsync事件。

使用此方法可手动刷新设备的方向数据。如果设置了主体,其变换将根据新的方向自动更新。注意:频繁调用此方法(例如在更新循环中)可能会导致性能下降和触觉抖动。建议根据特定的用户操作或事件谨慎使用此方法,或使用DeviceMapperDeviceMapper.DeviceInfoPollingMode.Continuous模式。

函数 CursorSetLocalForce

void CursorSetLocalForce(
in Vector3 force
)

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

参数

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

例外情况

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

该方法将未经处理的力矢量直接发送到设备的本地空间,只能与CursorLocalPositionCursorLocalVelocity 结合使用。如果力的计算基于世界空间坐标(CursorPositionCursorVelocity)和/或涉及变换(位置、旋转或缩放)控制器,则应使用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 异常
  • 如果收到来自服务的意外错误,则抛出异常

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

函数 JointsSetTorques

void JointsSetTorques(
Joint3 torques
)

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

参数

  • 扭矩每个设备接头的预期扭矩。

例外情况

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

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

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

函数 JointsSetTorques

void JointsSetTorques(
float t0,
float t1,
float t2
)

函数 JointsSetTorque

void JointsSetTorque(
Vector3 angles
)

函数 JointsSetTorque

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

函数 JointsSetAngles

void JointsSetAngles(
Joint3 angles
)

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

参数

  • 角度每个设备接头的预期角度。

例外情况

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

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

函数 JointsSetAngles

void JointsSetAngles(
float alpha0,
float alpha1,
float alpha2
)

函数 JointsSetAngles

void JointsSetAngles(
Vector3 angles
)

功能 释放

bool Release()

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

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

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

函数 TryResetForce

bool TryResetForce()

函数 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()

返回对象的字符串表示,提供人可读的描述,包括对象名称、类别类型、设备 ID 和所选手势。

返回值表示当前对象的字符串,包括名称、类别类型、设备 ID 和所选手性。

The returned string follows the format: "name <Class>(#id.handedness)", where:

  • "名称 "是对象的 _objectName field.
  • "类 "是对象的类类型名称。
  • "id "是设备 ID,格式为 4 个字符的十六进制字符串,如果设备 ID 是 ANY_ID.如果 DeviceIdANY_ID的值。 SelectedDeviceId 使用。
  • "手性 "是所选的手性,用".左 "或".右 "表示,或省略,如果 SelectedHandednessNil.

这种方法提供了简明翔实的对象描述,有助于调试和日志记录。

受保护函数文档

函数 InvokeReadyEvent

override void InvokeReadyEvent()

功能设置

virtual override void Setup()

一旦设置了 _performSetup 标志,该方法就会被自动调用,以处理因计算量过大而无法在每一帧调用的情况。 该方法可以覆盖,但要注意保持基本调用。使用SetSetupToPerform可触发设置调用。

重实现Haply::Inverse::Unity::DeviceBehaviour::Setup

函数 FixedUpdate

virtual override void FixedUpdate()

重实现Haply::Inverse::Unity::DeviceBehaviour::FixedUpdate

公共财产文件

属性 DeviceType

override DeviceType DeviceType;

获取设备类型,该控制器始终返回 DeviceType.Inverse3。

游标属性

override CursorBehaviour Cursor;

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

财产主体

Inverse3Body Body;

游戏对象自动以Inverse3主体方向旋转。

属性 CursorLocalPosition

Vector3 CursorLocalPosition;

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

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

属性 本地位置

Vector3 LocalPosition;

属性 CursorPosition

Vector3 CursorPosition;

CursorLocalPosition和 LocalToWorldMatrix 获取反 3游标的世界空间位置

参见:Transform.position,TransformPoint

物业位置

Vector3 Position;

属性 CursorLocalVelocity

Vector3 CursorLocalVelocity;

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

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

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

属性 LocalVelocity

Vector3 LocalVelocity;

属性 CursorVelocity

Vector3 CursorVelocity;

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

变换向量

速度属性

Vector3 Velocity;

属性 JointsAngles

Joint3 JointsAngles;

获取Inverse3设备当前的关节角度(单位:度)。

Vector3 的每个分量代表设备一个关节的角度:

  • x:关节 1 的角度,用于控制设备的头部。
  • y:关节 2 的角度,控制手臂的内侧关节。
  • z:关节 3 的角度,控制手臂的外侧关节。

这些角度对于了解和控制设备运动部件的空间方位至关重要。

关节角速度属性

Joint3 JointsAngularVelocity;

获取Inverse3设备关节的当前角速度(单位:度/秒)。

Vector3 的每个分量代表设备一个关节的角速度:

  • x:关节 1 的角速度,用于控制设备的头部。
  • y:关节 2 的角速度,它控制手臂的内侧关节。
  • z:关节 3 的角速度,它控制手臂的外侧关节。

角速度有助于监测关节的运动速度,这对动态控制和反馈应用至关重要。

属性

HandednessType SelectedHandedness;

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

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

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

属性 Handedness

HandednessType Handedness;

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

有动力的财产

bool Powered;

表示设备当前是否有电。

请参见 DeviceMapper.devicesInfoPollingMode

此属性不会实时刷新。可使用RequestPowerSupplyStatus 手动更新,或使用DeviceMapper 自动更新。

物业定位

Quaternion Orientation;

根据上次接收到的方向数据,获取Inverse3设备的当前方向。

请参见 DeviceMapper.devicesInfoPollingMode

此属性不会实时刷新。可通过RequestOrientation 手动更新,或由DeviceMapper 自动更新。

属性 工作区半径

float WorkspaceRadius;

设备本地空间中工作区的大致半径(米)。

属性 WorkspaceScaledRadius

float WorkspaceScaledRadius;

工作空间在世界空间中的大致半径。

属性 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 设备的工作区中心局部坐标。

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

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

属性 工作空间中心局部位置

Vector3 WorkspaceCenterLocalPosition;

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

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

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

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

属性 工作区中心位置

Vector3 WorkspaceCenterPosition;

工作区中心世界的位置取决于手感值。

参见光标设置位置选定手性

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

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

属性 WorkspaceCenter

Vector3 WorkspaceCenter;

属性 ControlMode

ControlMode ControlMode;

获取设备的当前控制模式。

控制模式决定了设备如何响应输入命令和管理输出,如光标位置或关节扭矩。

属性 ForceOutput

Vector3 ForceOutput;

通过 CursorSetForce 或 CursorSetLocalForce 方法发送到设备的最后力。

属性 PositionOutput

Vector3 PositionOutput;

通过 CursorSetPosition 或 CursorSetLocalPosition 方法发送到设备的最后位置。

属性 JointsTorqueOutput

Joint3 JointsTorqueOutput;

通过 JointsSetTorque 方法发送到设备的最后扭矩。

属性 JointsAnglesOutput

Joint3 JointsAnglesOutput;

关节点设置角度方法发送到设备的最后一个角度。

属性 SpaceTransformationUpdateEnabled

bool SpaceTransformationUpdateEnabled = true;

获取或设置空间变换矩阵更新是否启用的值。

当设置为 true 时,UpdateSpaceTransformationCache 方法将被调用,以根据当前空间变换参照更新LocalToWorldMatrixWorldToLocalMatrix。这通常用于确保有关设备在世界上的位置和方向的空间计算是准确和最新的。

属性 LocalToWorldMatrix

Matrix4x4 LocalToWorldMatrix;

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

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

矩阵取决于SpaceTransformationReference

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

属性 WorldToLocalMatrix

Matrix4x4 WorldToLocalMatrix;

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

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

矩阵取决于SpaceTransformationReference

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

受保护财产文件

属性

override BaseCoordinateConverter CoordinateConverter;

属性 SpaceTransformationReference

Transform SpaceTransformationReference;

用于设置LocalToWorldMatrixWorldToLocalMatrix 的参考变换。

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

公共属性文档

变量就绪

UnityEvent< Inverse3 > Ready;

Inverse3设备连同光标和主体已成功初始化并可供使用时触发的事件。

如果启用了SpaceTransformationUpdateEnabled,则会在第一次更新后触发该事件。

变量 PowerSupplyStatusChanged

UnityEvent< Inverse3, bool > PowerSupplyStatusChanged;

Inverse3设备的电源状态发生变化时触发。

参见动力

变量 ControlModeChanged

UnityEvent< Inverse3, ControlMode > ControlModeChanged;

设备控制模式改变时触发的事件。

这样就可以实现反应式编程模式,控制模式的变化可以触发特定的行为或配置。