bevy_mod_billboard

Bevy 生态中唯一专注 billboard 渲染的社区 crate(105 stars,35,707 总下载量)。支持 styled text(多字体)、texture 纹理、Y-axis locking、full rotation lock(世界空间文字)、HDR 渲染。

关键事实

属性
最新版本v0.7.0
兼容 Bevy0.14(已停滞近两年
最后更新2024-07-10
维护者@kulkalkul
语言组成Rust 94.7% + WGSL 5.3%
仓库github.com/kulkalkul/bevy_mod_billboard
crates.iocrates.io/crates/bevy_mod_billboard

功能特性

  • styled text 渲染: 支持多字体文字以 billboard 方式渲染到 3D 世界。通过 BillboardTextBundle 提供。
  • texture 渲染: 通过 BillboardTextureBundle 渲染 2D 纹理到 3D 空间。
  • Y-axis locking: BillboardLockAxis 实现圆柱型 billboard(仅 Y 轴约束,物体始终直立)。
  • full rotation lock: 世界空间文字,完全固定朝向,不跟随相机。
  • HDR 支持: 支持高动态范围渲染。
  • depth culling 开关: BillboardDepth 可控制是否参与深度裁剪。
  • 自定义 WGSL shader: 核心渲染逻辑通过 WGSL 编写。

维护状态与问题

核心问题:版本停滞。 当前仅兼容 Bevy 0.14,而 Bevy 已发布到 0.17。9 个 open issue 中有 2 个直接请求版本适配:

  • #34: Bevy 0.16 适配请求
  • #30: Bevy 0.15 适配请求

已知 Bug:

  • #21: Y 轴旋转时相机行为异常(2024-01 至今未关闭,5 comments)
  • #27: 多字体 BillboardTextBundle 不可用

Feature Requests:

  • #33: 文字描边
  • #23: texture atlas / sprite sheet 支持
  • #14: 交互支持(鼠标点击检测)
  • #2: 上游到 Bevy 官方

Roadmap TODO: 批处理(batching)、文档完善。

生态关系

  • bevy — Bevy 游戏引擎本体,bevy_mod_billboard 是其社区插件。
  • bevy_sprite3d — 更活跃的替代方案(兼容 Bevy 0.16),将 2D sprite 以 perspective camera 渲染到 3D 世界,但不支持文字渲染和 Y-axis lock。在 Bevy #3688 中被官方推荐为当前 workaround。
  • bevy_health_bar3d — 基于 billboard shader 的 3D 血条实现,展示 billboard 实际应用场景。
  • billboard-rendering — billboard 渲染技术概念。
  • billboard-cross-engine — 跨引擎 billboard 功能对比。

官方态度

Bevy #3688 是官方 billboard feature request(S-Ready-For-Implementation),但 PR #2814 被拒。长期看 billboard 可能以官方组件形式出现,但时间表未知。官方鼓励社区 crate 先行实现。

矛盾

  1. 维护状态 vs. 下载量: 近两年未更新,但仍有 35,707 下载,说明需求存在但维护者带宽不足。
  2. bevy_sprite3d 被推荐但功能不完全: 官方推荐的替代方案不支持文字渲染和 Y-axis lock,无法完全取代 bevy_mod_billboard。

来源