Skip to content

Latest commit

 

History

History
41 lines (33 loc) · 1.91 KB

desgin.md

File metadata and controls

41 lines (33 loc) · 1.91 KB

设计文档

目标1: 根据镜头快速加载无限地图的方法。

  1. 通过clip_sphere更新要看到全部大小圆的更新系统
  2. 通过新老圆的位置 来获取本次要更新tunck的索引
  3. 根据要新添加的索引 判断是不是要加载Tunck的数据
  4. 根据Tunck内的点来更新生成 Mesh 来进行渲染
  5. 一个方法把视野范围外的地块消失

通过新老的圆的位置知道要更新位置

这里就根据距离查询偏移的量的函数generate_offset_array这函数可以根据chunk的相距个数生成一组chunkKey的偏移量 其中chunkKey是chunk中最小的点[i32;3]就可以表示 d ChunkKey (x,y,z)/16 取整数 即可。

现阶段的问题

  1. 生成的mesh是不正确的!需要在获取到Vec<Voexl>的方法中实现获取带一个pad的方法 原来的Shap是16x16x16 现在 要18x18x18 的数据。并且 min[0:3]max[17:3] 这个算法需要一定的数学 (临时方法 不是特别好了暂时! 没有把邻居chunk的数据成功的复制进去)
  2. delete_mesh_system使用后性能减慢明显。 这里应该是最开始时没有计算出那些是应该消失的模块。但是每次都遍历了全部到账的。应该在old_key 和 new_key之间计算出 要delete的key而不是使用其他的方法。 (更改后明显提高)

目标2:生成和加载地图。

  1. 产生一个数据库文件可以用来保存生产的地图
  2. 一个单独工具来生成这个地图文件
  3. 读取地图的方法
  4. 修改和写入地图的方法

目标3:角色对地图的简单操作

  1. 可以选取方块
  2. 可以放置方块
  3. 这些更新会到chunk缓存和数据库文件中

目标4:更多的方块种类和地图生成策略

  1. 给mesh生成材质时要处理的问题?根据arrayTexture生成mesh的纹理
  2. 怎么除了特殊物品的问题? 有些特殊的模型应该是非方块的。如何处理呢?

doing