[灵境]项目-第一阶段进度

时间记录：2024-11-30
目前实现了将内部不可见方块剔除的功能。
项目链接与介绍

个人感想
完成这阶段同时，将项目名称改成了：
bevy-Demo-Spirit-Realm (灵境)

这里借用了钱老的关于 VR 的见解以及对 VR 的名字，我也觉得这个名字非常有感觉 (好像就应该叫这个名字一样)，同时也想在游戏中，融入虚拟现实技术。

个人觉得，虚拟现实技术并不只是在虚拟环境中模拟现实的技术，而是应该尝试虚拟与现实相结合，相辅相成的。

阶段代码说明
方块剔除：
创建一个 hashmap (chunk_blocks)，遍历 xyz 轴并将所有方块存进 hashmap 中，再由另一个循环遍历 chunk_blocks，并直接用 if 判断当前立方体六个面是否贴着方块，然后取反，生成方块

Copy
if !(
chunk_blocks.contains_key(&[pos[0], pos[1] + 1, pos[2]]) &&
chunk_blocks.contains_key(&[pos[0], pos[1] - 1, pos[2]]) &&
chunk_blocks.contains_key(&[pos[0] + 1, pos[1], pos[2]]) &&
chunk_blocks.contains_key(&[pos[0] - 1, pos[1], pos[2]]) &&
chunk_blocks.contains_key(&[pos[0], pos[1], pos[2] + 1]) &&
chunk_blocks.contains_key(&[pos[0], pos[1], pos[2] - 1])
){
add_cube_to_mesh(&mut positions, &mut normals, &mut uvs, &mut indices, [pos[0] as f32, pos[1] as f32, pos[2] as f32]);
}

目前这段代码还需要至少两次优化迭代，一个是需要根据方块类型进行判断，比如方块的面贴着水方块，则不需要剔除，目前方块只有两个类型，1：实体方块、0：空气，以后会有更多的方块类型，就像水方块。(目前由于方便优化的原因，只设置了显示一条条的线组成的三角形)

另一个是暴露在空气中的方块没有优化到彻底，一个方块在任意角度只能看见三个面，另外三个面是看不到的，这也需要剔除掉。

图中是 32x *64y *32z 个方块组成的立方体

下一阶段计划
1. 将另外三个不可见的面剔除掉 2. 实现区块化管理，模拟玩家的可视化半径，随着玩家移动，带动区块的加载和卸载 3. 实现一个超平坦世界，类似我的世界中的(超平坦世界)