572 字
2 分钟
[Vibe项目-杂谈]Bevy与Rust的约会-0.18
2026-08-03

介绍#

目前是 2026 年 5 月 16 日,Bevy 版本 0.18.1

当前 0.19 的进度达到了 97%。

已实现#

简述一下当前这个项目已经实现的部分:

  1. 核心区块系统 chunk.rs
    三态存储 ChunkData:Empty(全空气,零内存)/ Uniform(单一方块类型,2字节)/ Mixed(异构数据,32³数组),实现高效内存管理
    面剔除网格生成 generate_chunk_mesh():仅渲染与空气/不同方块相邻的面,减少三角形数量
    地形填充 fill_terrain():y=0 石头、y=1 泥土、y=2 随机顶层(草/沙/石)
    区块坐标系统:BlockPos、ChunkCoord、world_to_chunk() 坐标转换
    边界脏标记 mark_block_dirty():方块变更时自动标记相邻区块重建
  2. 脏标记重建系统 chunk_dirty.rs
    DirtyChunk 组件标记需要重建的区块
    rebuild_dirty_chunks() 系统每帧检测脏区块并重建网格
    set_block_dirty() 提供方块修改入口
  3. 摄像机控制 camera.rs
    WASD + Space/Shift 六自由度移动(camera_movement())
    鼠标视角控制(camera_rotation()),pitch/yaw 限制
    仅在光标锁定时响应输入
  4. 输入系统 input.rs
    ESC 键切换光标锁定(cursor_grab_system())
  5. 射线检测 raycast.rs
    DDA 体素射线遍历算法 cast_ray():Amanatides & Woo 论文实现
    高亮方块系统 raycast_highlight_system():准星指向的方块显示半透明黄色高亮
    RayHitState 资源存储当前命中位置
  6. HUD 界面 hud.rs
    十字准星 spawn_crosshair():白色十字线居中显示
    坐标 + 目标方块信息 update_hud():实时显示摄像机位置和射线命中坐标
    三角形计数 update_triangle_count():优先读取 GPU 渲染诊断数据,回退统计 Mesh 数据
  7. FPS 叠加层 fps_overlay.rs
    独立插件 FpsOverlayPlugin,可配置字体/颜色/位置
    实时显示帧率,支持显示/隐藏切换
  8. 线框调试 chunk_wire_frame.rs
    V 键切换线框模式(toggle_wireframe())
    同步 Wireframe 组件 + Gizmos 绘制区块包围盒

已完成的 MVP 步骤

✅ 画一个方块,生成摄像机,指向方块
✅ 画一个 32×32×32 区块,方块添加到区块中
✅ 摄像机自由移动查看世界

额外完成#

鼠标指向对应的方块会高亮出来

[Vibe项目-杂谈]Bevy与Rust的约会-0.18
https://www.twocblog.site/posts/bevy/018new/
作者
Twoc-Prime
发布于
2026-08-03
许可协议
CC BY-NC-SA 4.0