uBotPhysics 概述
需要:uBotPhysics 0.1.x(含依赖 uBotCore)
用 uBotPhysics 让同一个关卡里的不同物体由不同的物理后端计算,UE 自带的 Chaos 仍是默认。
没有绑定的物体都归 Chaos;绑定的物体交给指定的后端,后端按 uBot 仿真时间以自己的固定步长推进,每帧把结果写回对应的 UE 组件。被绑定的组件仍是原来的网格或碰撞体,传感器、射线检测和动画照常使用它。
uBotPhysics 自己不带物理引擎,只提供后端接口、绑定组件、所有权规则、按仿真时钟步进、位姿回写和场景几何。后端是依赖它的独立插件,例如规划中的 uBotMuJoCo。
| 能力 | 含义 | 页面 |
|---|---|---|
绑定与所有权(Physics.BodyBinding) |
加 uBot Physics Binding 组件,选后端,播放时自动绑定;全部成功,或全部回滚 |
绑定与所有权 |
| 步进与位姿回写 | 每个后端按仿真时钟以自己的固定步长推进,每帧把位姿写回组件;暂停时不步进,恢复后不补跑 | 每帧时序与步进 |
场景几何(Physics.SceneGeometry) |
关卡里其余的碰撞体按静态和运动学两类交给后端,后端的物体可以和它们接触 | 场景几何 |
| 刚体状态 | 对已绑定的组件,给出后端最近一步结束时的状态,传感器不必再对位姿做差分;只能在 C++ 里使用 | 绑定物体的刚体状态 |
物理后端(Physics.Backends) |
后端在扩展点 UBotPhysics.Backend 注册工厂,名字就是绑定组件里 Backend 填的名字 |
给后端作者 |
已发布 最新版本 0.1.0
用 uBot Manager 安装,依赖会一并装好。uBotPhysics 0.1.0 是 Beta 版本,后端接口是实验性的,小版本之间可能变化。
还要安装并启用至少一个物理后端插件。没有后端时,绑定会失败并报告 BackendMissing,物体仍由 Chaos 模拟。目前还没有已发布的后端插件,uBotMuJoCo 等后端仍在规划中;要自己写后端,见给后端作者。
与其他插件的关系
Section titled “与其他插件的关系”| 插件 | 关系 |
|---|---|
| uBotCore | 依赖 0.1.3 或更新的 0.1.x,用它的仿真时钟、固定步长调度器、扩展点注册表和刚体状态源接口 |
| uBotSensor | 无依赖。传感器读到的是被写回的组件位姿;0.1.2 起位姿、里程计和 IMU 直接读后端给出的速度,见读取刚体状态 |
| uBotROS | 无依赖。ROS 只读组件位姿和 uBotCore 接口,物体由哪个后端计算对它没有影响 |
| uBotAerial | 无依赖。无人机的 Movement 组件已经驱动机体,根组件不能绑定给后端,见无人机的刚体状态 |
| 物理后端插件 | 各自依赖 uBotPhysics,在 UBotPhysics.Backend 注册工厂,例如规划中的 uBotMuJoCo |
| 组件 | 作用 | 参考 |
|---|---|---|
uBot Physics Binding(组件) |
加在 Actor 上,选后端,绑定与解绑,查询绑定状态 | uBot Physics Binding |
uBot Physics Library(函数库,类别 uBot|Physics) |
查询已注册的后端和它们的能力、哪个后端在模拟某个组件、丢弃的步数和后端看到的场景 | uBot Physics Library |
UBot Physics Body Binding(结构体) |
Bodies 里的一项:要交出的组件和它在后端模型里的名字 |
UBot Physics Body Binding |
UBot Physics Capabilities(结构体) |
后端声明自己真的支持的能力 | UBot Physics Capabilities |
UBot Physics Scene Stats(结构体) |
一个后端现在看到的场景:物体数、形状数和没能导出的组件数 | UBot Physics Scene Stats |
EUBot Physics Binding Status(枚举) |
绑定状态:Unbound、Bound、BackendMissing、Rejected |
EUBot Physics Binding Status |