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表示设备当前是否已通电。PowerSupplyStatusChangedUnity 事件,在电源状态发生变化时触发。Orientation获取Inverse3 设备的当前朝向。OrientationChangedAsync事件,在身体朝向发生变化时触发。RequestOrientation(),用于手动请求身体朝向。ControlMode获取当前控制模式(CursorForce、CursorPosition、JointsTorques、JointsAngles)。ControlModeChangedUnity 事件,在控制模式发生变化时触发。ForceOutput、PositionOutput、JointsTorqueOutput和JointsAnglesOutput获取当前输出值。Release()通过发送零力值来重置设备控制(替代TryResetForce())。CoordinateConverter,用于通过预设文件或直接赋值来定义坐标转换设置。ErrorEvent在主线程上触发,即当与已映射设备关联的 ClientConnection 错误事件发生时。
- 设备数据(检查器)显示
- VerseGrip:
CoordinateConverter,用于通过预设文件或直接赋值来定义坐标转换设置。ErrorEvent在主线程上触发,即当与已映射设备关联的 ClientConnection 错误事件发生时。
- 设备映射器:
- 在运行时映射已连接的设备。
- 获取每个Inverse3 设备的Inverse3 电源状态和 机身朝向。
DeviceInfoPollingMode的模式包括Manual、Once(默认)或ContinuousdevicesInfoPollDelay的安全下限:当要求身体朝向时为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)取代