gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:51 27 4
gpt4 key购买 nike

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

我对使用 NumPy 或 SciPy 等外部模块持开放态度,尽管它们的一些文档让我有点难以理解。或者,遍历每个 block 并获取邻居列表也是可以接受的,尽管在 Python 而不是 C 中进行这些计算的性能成本会非常高。

郑重声明,我已经尝试查看 NetworkX,但它似乎更多地用于科学分析或寻路,而不是可见性检查。

最佳答案

如果您只需要执行一次,性能应该不是问题。如果您还在世界发生变化时增量更新 block 的 .isBoundary 属性,您将永远不必再做一次。

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

关于python - 获取网格中可见体素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6703523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com