编程语言
首页 > 编程语言> > python – 获取网格中可见体素的列表

python – 获取网格中可见体素的列表

作者:互联网

我正在开发一款Minecraft风格的游戏,我需要一种减少渲染世界数量的方法.目前,我正在使用一种天真的渲染一切方法,它具有明显的缩放问题.我需要一种方法来获取一系列块,并以某种方式找出哪些块正在接触空气,水或任何其他半透明块.

我愿意使用像NumPy或SciPy这样的外部模块,尽管他们的一些文档有点过头了.或者,迭代每个块并获得邻居列表也是可以接受的,尽管用Python而不是C进行这些计算的性能成本非常高.

为了记录,我已经尝试过看看NetworkX,但它似乎更多的是用于科学分析或寻路而不是可见性检查.

解决方法:

如果您只需要执行一次,性能应该不是问题.如果您在世界更改时也逐步更新块的.isBoundary属性,则永远不必再次执行此操作.

但是,如果你的世界太大或者没有洞穴和洞穴以及透明交错与不透明,你仍会遇到问题.如果你需要动态确定可见的东西,你可以保留一个八叉树(http://en.wikipedia.org/wiki/Octree),你可以在那里拥有巨大的空气/水等.作为单个节点(巨型块),标记为“透明”.然后使用“paintbucket”算法(修改为执行Dijkstra算法,因此通过检查当前块和原点之间是否存在块,很容易检测到你“走到拐角处”)以快速找出街区即将来临.如果玩家移动缓慢,远距离事物的更新可能会显着延迟.

标签:voxels,python
来源: https://codeday.me/bug/20190826/1734720.html