跳到主要内容

← 返回索引页

2.1.1 更新日志

依赖项​

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

本次更新破坏了与 Unity 2022.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:
    • Device Data(检查器)显示 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() 通过发送 null 力值来重置设备控制(替代 TryResetForce())。
    • CoordinateConverter,用于通过预设文件或直接赋值来定义坐标转换设置。
    • ErrorEvent 在主线程上触发,即当与已映射设备关联的 ClientConnection 错误事件发生时。
  • VerseGrip:
    • CoordinateConverter,用于通过预设文件或直接赋值来定义坐标转换设置。
    • ErrorEvent 在主线程上触发,即当与已映射设备关联的 ClientConnection 错误事件发生时。
  • DeviceMapper:
    • 在运行时映射已连接的设备。
    • 获取每个 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 缓存提供显式的 Inverse3Data 类型:
    • 缓存状态属性: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 用于按指定的坐标系转换接收的数据。
    • 缓存更新时触发事件。
  • CoordinateConverter(替代 UnityConvert),用于分别定义如何将设备坐标空间转换为 Unity 坐标空间:
    • Inverse3CoordinateConverter,用于转换光标坐标和身体朝向。
    • VerseGripCoordinateConverter,用于转换 VerseGrip 的朝向。
    • Vector3Settings 和 QuaternionSettings 结构体,用于存储坐标系转换设置。
    • 可通过组件或 Assets 菜单为 Inverse3 和 VerseGrip 创建默认的坐标转换器预设。
      • Inverse3(Arm Forward Pose) 转换器,其设置适用于手臂朝向用户、LED 图标位于 侧面的设备。
      • Inverse3(Icon Forward Pose) 转换器,其设置适用于 LED 图标朝向用户、手臂位于 侧面的设备。
      • VerseGrip(默认) 转换器,适用于屏幕朝前、用户输入按钮位于顶部的设备。
  • ClientConnection 在设备打开时获取 FirmwareVersion、GravityCompensation 和 TorqueScaling。
  • ConnectionMonitor 显示 GravityCompensation、TorqueScaling 和 PowerSupply。

Bug 修复​

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

已弃用​

  • 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) 取代

← 返回索引页