← 返回索引页
2.0.0 更新日志
依赖项
- Haply Inverse Runtime SDK 2.0.0 版本
- haply-inverse-service.exe:最低 2.0.0 版本(必须在后台运行)
- haply-inverse-c.dll:2.0.0 版本(已包含)
- Haply.Inverse.dll:2.0.0 版本(已包含)
破坏性变更
- 将 HapticThread 和 HandleThread 替换为 Inverse3 和 VerseGrip。
- 使用
DeviceStateChanged(device)高频订阅事件替代Run(callback)方法。 - 将
hapticThread.onInitialized事件替换为Inverse3.DeviceOpened。 - 将
handleThread.onInitialized事件替换为VerseGrip.DeviceOpened。 - 触觉回调参数不再包含光标的
position和velocity。 - 移除了线程安全的托管
AdditionalData,改为由用户自行定义数据处理方式。
新功能
- 监控窗口(Window > Haply > Connection Monitor),用于可视化已连接设备的状态。
- Haply 创建菜单(GameObject > Haply > Haptic Rig),可一键完成场景设置,并自动添加所有必需的 GameObjects。
- DeviceMapper,用于自动分配 Inverse3 和 VerseGrip 设备。
- Client Configuration 组件,用于特定连接场景,并可控制所需的触觉循环 频率。
- Inverse3 组件 (替代 HapticThread),用于在空间中定位 Inverse3 设备、获取其位置,
并在高频线程中控制力。
Inverse3.DeviceStateChanged事件,在高频运行的独立触觉线程中触发。- 自动将设备局部空间转换为场景世界空间,所用的线程安全缓存变换矩阵为
LocalToWorldMatrix和WorldToLocalMatrix。 Inverse3.LocalPosition和Inverse3.LocalVelocity提供设备局部空间中未经处理的 光标坐标。Inverse3.Position和Inverse3.Velocity提供经世界空间变换后的光标坐标。Inverse3.SetLocalForce和Inverse3.SetLocalPosition方法,用于通过局部 坐标控制设备。Inverse3.SetForce和Inverse3.SetPosition方法,用于通过世界坐标控制设备。Inverse3.JointsSetTorque,用于直接控制电机。Inverse3.JointsSetAngles,用于直接控制设备的臂部位置。Inverse3.WorkspaceCenter根据左右手方向提供工作空间中心坐标。
- VerseGrip 组件 (替代 HandleThread),用于在高频线程中获取 VerseGrip 的姿态,
以及按钮状态和吸附状态。
VerseGrip.DeviceStateChanged事件,在高频运行的独立触觉线程中触发。VerseGrip.GetButton、VerseGrip.GetButtonDown和VerseGrip.GetButtonUp方法,供触觉线程内使用, 其逻辑与UnityEngine.Input保持一致。- Unity 事件在主线程中触发,用于场景和 UI
交互:
VerseGrip.ButtonDown、VerseGrip.ButtonUp、VerseGrip.Attached, 以及VerseGrip.Detached。
- Inverse3Cursor 和 VerseGripCursor 组件,用于在场景中可视化光标的位置和姿态, 并管理模型。
- HapticOrigin GameObject,便于工作空间的缩放与定位。
- 使用 gizmos 可视化设备位置、姿态及左右手方向。
- 使用 gizmos 可视化可达工作空间。
- 日志过滤功能。
- 教程示例。
- 实验性示例。
问题修复与改进
- 检测到设备时即提供 Inverse3 的左右手方向,无需再打开设备进行查询。
- 设备自动检测 (借助 Haply Inverse Service 和 DeviceMapper)
- 将触觉循环频率从约 1000Hz 提升至约 4000kHz。
← 返回索引页