Unity 适配

Unity 第一版通过 WebSocket JSON 订阅信息中枢 status 帧,不使用专用二进制协议,也不触碰 IMU UDP 数据。脚本按 frame_id 丢弃旧帧,并使用 frame_time_ns 保留两帧缓冲后插值。

接入

  1. 先启动信息中枢;建议为 Unity 设置 --status-hz 50

  2. adapters/unity/Assets/WirelessImuMocap/MocapWebSocketClient.cs 放入 Unity 项目的 Assets/

  3. 在场景中新建对象并挂载 MocapWebSocketClient

  4. 设置 bodyRoot,并分别绑定 leftRigrightRig 的肩、肘、腕、掌和指尖 Transform。

  5. hubUrl 设置为信息中枢地址,例如 ws://127.0.0.1:8765

坐标变换固定为:

body_rh (X 前, Y 左, Z 上)
-> Unity (X 右, Y 上, Z 前)
Unity = (-body.Y, body.Z, body.X)

这是轴置换加左右方向的必要符号变换,保持人体解算的 body_rh 语义。wear_side=left/right 决定激活哪一套 rig;同一时刻只显示当前佩戴侧。

限制

  • 本版使用 ClientWebSocket,面向 Unity Editor、Windows/Linux/macOS standalone;WebGL 需要 浏览器 WebSocket 实现,暂不在本项目内提供。

  • 仅在收到 frame=body_rh 的状态帧时更新。

  • frame_time_ns 缺失时仍可显示最新帧,但不会进行时间插值;这表示源数据未完成共同时间轴 对齐,应优先排查同步状态。