跳至主要内容

←返回索引页

2.1.1 更新日志

依赖项​

  • 将haply-inverse-c.dll更新至 2.1.1 版本(需要Inverse SDK >= 2.1)
  • 将Haply.Inverse.dll更新至 2.1.1 版本
  • 新增com.unity.xr.core-utils2.3.0 版本
注意

本次更新破坏了与 Unity2022.1.0f1 及更早版本的兼容性。 如遇兼容性问题,请升级到更高版本。

破坏性变更​

  • Inverse3 和 VerseGrip 将 device 作为 ConnectionStateChanged 事件的第一个参数传递
    • ConnectionStateChanged(state, prevState) > ConnectionStateChanged(device, state, prevState)
    • ConnectionStateChangedAsync(state, prevState) > ConnectionStateChangedAsync(device, state, prevState)
  • DeviceMapper 的 State 将属性改为只读

新功能​

  • Inverse3Body组件会将“Inverse3 ”设备中身体的朝向应用到指定的 GameObject 上。
  • Inverse3:
    • 设备数据(检查器)显示 ControlMode,以及最终发送到设备上的 Force、Position 或 Angles。
    • JointsAngles 和 JointsAngularVelocity。
    • Powered 表示设备当前是否已通电。
    • PowerSupplyStatusChanged Unity 事件,在电源状态发生变化时触发。
    • Orientation 获取Inverse3 设备的当前朝向。
    • OrientationChangedAsync 事件,在身体朝向发生变化时触发。
    • RequestOrientation(),用于手动请求身体朝向。
    • ControlMode 获取当前控制模式(CursorForce、CursorPosition、JointsTorques、JointsAngles)。
    • ControlModeChanged Unity 事件,在控制模式发生变化时触发。
    • ForceOutput、PositionOutput、JointsTorqueOutput 和 JointsAnglesOutput 获取当前输出值。
    • Release() 通过发送零力值来重置设备控制(替代 TryResetForce())。
    • CoordinateConverter,用于通过预设文件或直接赋值来定义坐标转换设置。
    • ErrorEvent 在主线程上触发,即当与已映射设备关联的 ClientConnection 错误事件发生时。
  • VerseGrip:
    • CoordinateConverter,用于通过预设文件或直接赋值来定义坐标转换设置。
    • ErrorEvent 在主线程上触发,即当与已映射设备关联的 ClientConnection 错误事件发生时。
  • 设备映射器:
    • 在运行时映射已连接的设备。
    • 获取每个Inverse3 设备的Inverse3 电源状态和 机身朝向。
    • DeviceInfoPollingMode 的模式包括 Manual、Once(默认)或 Continuous
    • devicesInfoPollDelay 的安全下限:当要求身体朝向时为 1sec,否则为 0.5sec。
    • 仅在组件启用时进行初始化。
    • 带过滤条件的设备获取方法:
      • GetInverse3Devices(handedness) 获取按指定的左右手方向(handedness)过滤后的Inverse3 设备。
      • GetVerseGripDevices(handedness) 获取与指定左右手方向(handedness)相匹配的Inverse3 设备 以及与其关联的VerseGrip设备。
      • GetInverse3(handedness) 获取与指定左右手方向(handedness)匹配的第一个Inverse3 设备。
      • GetInverse3(verseGrip) 获取与给定的 VerseGrip 设备关联的Inverse3 设备。
      • GetVerseGrip(inverse3) 获取与指定Inverse3 设备相关联的VerseGrip设备。
  • 在 VerseGripCursor 和 Inverse3Body 组件上新增了OrientationSettings。
  • VerseGrip.Orientation 替代 VerseGrip.LocalRotation。
  • 为Inverse3 缓存提供显式的 逆 3D数据 类型:
    • 缓存状态属性:CursorPosition、JointsAngles、JointsAngularVelocity、Orientation,
    • GravityCompensation、StatusPowerSupply、ConfigTorqueScaling
    • 缓存的控制输出 属性:ControlMode、CursorForceOutput、CursorPositionOutput、JointsTorqueOutput, JointsAnglesOutput。
    • coordinateConverter 用于根据指定的坐标系转换接收和发送的数据。
    • 将订阅客户端加入缓存,以便自动更新。
    • 在缓存更新时触发事件。
  • 显式的 Joint3 结构体,包含三个 float 成员 j0、j1 和 j2(用于 JointsSetTorque 和 JointsSetAngles)。
  • 为 VerseGrip 缓存提供显式的 VerseGripData 类型:
    • 缓存状态属性:Orientation、IsAttached、ButtonCount。
    • 缓存按钮的状态。
    • 将订阅客户端加入缓存,以便自动更新。
    • coordinateConverter 用于根据指定的坐标系转换接收到的数据。
    • 在缓存更新时触发事件。
  • 坐标转换器(替代 UnityConvert),用于分别定义如何将设备坐标系转换为 Unity 坐标系:
    • Inverse3CoordinateConverter,用于转换光标坐标和身体朝向。
    • VerseGripCoordinateConverter,用于转换 VerseGrip 的朝向。
    • Vector3Settings 和 QuaternionSettings 结构体,用于存储坐标系转换设置。
    • 可以通过“组件”或“资源”菜单为Inverse3 和VerseGrip创建默认的坐标转换器预设。
      • Inverse3(手臂向前姿势)转换器,其设置适用于手臂朝向用户、LED 图标位于 侧面的设备。
      • Inverse3(图标向前姿势)转换器,其设置适用于 LED 图标朝向用户、手臂位于 侧面的设备。
      • VerseGrip(默认)转换器,适用于屏幕朝前、用户输入按钮位于顶部的设备。
  • 客户端连接 在设备开启时获取 FirmwareVersion、GravityCompensation 和 TorqueScaling。
  • 连接监控器 显示 GravityCompensation、TorqueScaling 和 PowerSupply。

错误修复​

  • Inverse3.DeviceStateChanged 在调用时也会 JointsSetTorque 和 JointsSetAngles 时触发。
  • 断开连接后,设备将自动重新连接。
  • 在构建退出时清理客户端轮询线程。
  • 修复了若干错误,并提高了稳定性。
  • 修复场景卸载/加载后的设备映射问题

已弃用​

  • ClientConnection.Configuration.HapticFrequencyHz 已被 HapticPollFrequency 取代
  • ClientConnection.Configuration.PollDelayNs 已被 HapticPollDelayNs 取代
  • DeviceBehaviour.ConnectionStateChangedAsync 将在下一个主要版本中移除
  • Inverse3.Position 已被 Inverse3.CursorPosition 取代
  • Inverse3.LocalPosition 已被 Inverse3.CursorLocalPosition 取代
  • Inverse3.TryResetForce() 已被 Release() 取代
  • VerseGrip.LocalRotation 已被 VerseGrip.Orientation 取代
  • JointsSetTorque(Vector3) 已被 JointsSetTorques(Joint3) 取代
  • JointsSetTorque(float, float, float) 已被 JointsSetTorques(float, float, float) 取代
  • JointsSetAngles(Vector3) 已被 JointsSetAngles(Joint3) 取代

←返回索引页