Billboard 跨引擎功能对比
对比 Unity、Unreal Engine(Niagara)、Godot、Babylon.js、three.js 和 bevy_mod_billboard 在 billboard 渲染维度的功能差异。分析时间:2026-05-22。仅基于公开文档和仓库,无运行时测试。
朝向模式矩阵
| 维度 | Unity | Unreal/Niagara | Godot | Babylon.js | three.js | bevy_mod_billboard |
|---|---|---|---|---|---|---|
| 球形/完全面向 | Billboard + View | Face Camera | Particle Billboard | ALL (7) | Sprite (默认) | 默认模式 |
| 圆柱/Y轴锁定 | Vertical Billboard | — | Y-Billboard | Y (2) | 需自定义 shader | BillboardLockAxis |
| 轴向组合(位掩码) | — | — | — | X|Y|Z 任意组合 | — | — |
| 速度对齐 | Velocity alignment | Velocity facing | — | — | — | — |
| 拉伸 billboard | Stretched Billboard | — | — | — | — | — |
| 自定义朝向向量 | — | Custom Facing Vector | — | — | — | — |
| 球形/圆柱插值 | — | — | Y Align float(提案已批准) | — | — | — |
^[https://docs.unity3d.com/Manual/PartSysRendererModule.html; https://dev.epicgames.com/documentation/unreal-engine/particle-update-group-reference-for-niagara-effects-in-unreal-engine; https://github.com/godotengine/godot-proposals/issues/3968; https://doc.babylonjs.com/features/featuresDeepDive/mesh/billboardMode; https://threejs.org/manual/en/billboards.html]
辅助功能对比
| 维度 | Unity | Unreal/Niagara | Godot | Babylon.js | three.js | bevy_mod_billboard |
|---|---|---|---|---|---|---|
| 尺寸深度衰减 | Min/Max Particle Size | Maintain in Camera Scale | — | — | sizeAttenuation | — |
| LOD/距离切换 | Min/Max Particle Size | — | — | — | Facade 模式(纹理替代) | — |
| 批处理 | 内置 | 内置 | — | — | — | Roadmap TODO |
| 文字渲染 | — | — | — | — | — | styled text(独占) |
| Full rotation lock | — | — | — | — | — | 世界空间文字(独占) |
| HDR | 是 | 是 | — | — | — | 是 |
| Depth culling 开关 | — | — | — | — | — | 是 |
Bevy 缺失功能清单
相对主流引擎,bevy_mod_billboard 缺失以下关键功能:
| 缺失功能 | 参考引擎 | 重要性 | Bevy 现状 |
|---|---|---|---|
| Bevy 0.15/0.16/0.17 适配 | — | critical | open issues #30, #34;bevy_sprite3d 已部分替代 |
| per-axis 位掩码组合 | Babylon.js | important | 仅支持 Y-axis lock 和 full lock |
| velocity-aligned 模式 | Unity, Unreal | important | 无,需自定义 shader |
| stretched billboard | Unity | important | 无 |
| 批处理 | Unity, Unreal | important | Roadmap TODO,未实现 |
| LOD / 距离切换 | Unity, three.js | important | 无 |
| texture atlas / sprite sheet | — | important | open issue #23 |
| 文字描边 | — | contextual | open issue #33 |
| 交互支持 | — | contextual | open issue #14 |
各引擎设计亮点
- 功能最全面: Unity — 6 种 Render Mode + 5 种 Alignment + Stretched Billboard + 尺寸限制。
- 设计最灵活: Babylon.js — 位掩码 X|Y|Z 任意组合,所有 mesh 均可设置,不限于专用组件。
- 自定义能力最强: Unreal Niagara — Custom Facing Vector 允许任意朝向逻辑,结合 Velocity 可创建拖尾效果。
- Bevy 独特优势: styled text 和 full rotation lock(世界空间文字)是其他引擎未内置的功能。
演进趋势
- Godot Proposal #3968 已批准实现:解耦 flipbook、Billboard Y Align 插值(球形↔圆柱)、Projection 枚举(View Plane / Camera Position)。这表明灵活朝向组合是引擎 billboard 系统的演进方向。
- Bevy #3688 标签 S-Ready-For-Implementation 但 PR 被拒,官方鼓励社区先行。
^[https://github.com/godotengine/godot-proposals/issues/3968]
矛盾
- bevy_mod_billboard 维护停滞但需求真实: 35,707 下载量 vs. 近两年无更新。
- bevy_sprite3d 被官方推荐但功能不完整: 无文字渲染、无 Y-axis lock。
- 官方标记 Ready 但 PR 被拒: Bevy #3688 的 S-Ready-For-Implementation 与 PR #2814 被拒的矛盾。
参见
- bevy_mod_billboard — Bevy billboard crate 实体页
- billboard-rendering — billboard 渲染技术概念
- bevy — Bevy 引擎本体
来源
- Unity Manual: https://docs.unity3d.com/Manual/PartSysRendererModule.html
- Unreal Niagara: https://dev.epicgames.com/documentation/unreal-engine/particle-update-group-reference-for-niagara-effects-in-unreal-engine
- Babylon.js: https://doc.babylonjs.com/features/featuresDeepDive/mesh/billboardMode
- three.js: https://threejs.org/manual/en/billboards.html
- Godot Proposal #3968: https://github.com/godotengine/godot-proposals/issues/3968
- bevy_mod_billboard: https://github.com/kulkalkul/bevy_mod_billboard