跳转到内容

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

简介
与 Chaos 并存的物理后端:绑定的物体由一个后端按仿真时钟计算,结果映射回 UE;后端把场景的其余部分看作静态和运动学碰撞体。
需要的插件
uBotCore ^0.1.3
引擎插件
无
提供
Physics.Backends、Physics.BodyBinding、Physics.SceneGeometry
用在这些组合里
还没有组合包含它

用 uBot Manager 安装,依赖会一并装好。uBotPhysics 0.1.0 是 Beta 版本,后端接口是实验性的,小版本之间可能变化。

还要安装并启用至少一个物理后端插件。没有后端时,绑定会失败并报告 BackendMissing,物体仍由 Chaos 模拟。目前还没有已发布的后端插件,uBotMuJoCo 等后端仍在规划中;要自己写后端,见给后端作者。

插件 关系
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