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) |
bool | TryResetForce() 尝试重置光标的所有力度和位置控制。 |
向量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 | 世界到本地矩阵 从世界空间转换回设备或光标空间的矩阵。 |
受保护的财产
名称 | |
---|---|
变革 | 空间变换参考 用于设置LocalToWorldMatrix和WorldToLocalMatrix 的参考变换。 |
公共活动文件
事件 DeviceStateChanged
DeviceDelegate DeviceStateChanged()
在每个触觉帧上触发的事件。
请参见 ClientConfiguration.HapticFrequencyHz
它能实时更新光标的位置和速度。
该事件适用于需要持续跟踪光标状态或应用实时控制命令的应用程序。在此事件中,您可以使用位置、速度、本地位置或本地速度等属性。
以及控制方法,如
- CursorSetForce对光标施加力、
- CursorSetPosition用来设置光标的位置、
- JointsSetTorque对设备关节施加扭矩,或
- JointsSetAngles用来设置设备关节的角度。
触发该事件的频率由触觉循环频率决定,可通过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;
用于设置LocalToWorldMatrix和WorldToLocalMatrix 的参考变换。
如果设置了光标,则使用其父设备。否则使用当前设备转换。