首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以高效的方式渲染体素

如何以高效的方式渲染体素
EN

Stack Overflow用户
提问于 2018-01-20 02:06:52
回答 1查看 568关注 0票数 0

现在,我使用3D数组在不同的块中表示我的体素。我想渲染播放器可见的体素,但我这样做的方式完全没有效率:

我迭代了整个10*10*10块,并检查每个体素是否有等于Air的邻居。然后我分别渲染每个可以看到的面。所以我主要检查每个体素6次。我对所有的块都这样做。

有没有更好的方法或者减少迭代的算法?

我基本上不知道是使用3D Array还是使用八叉树更好。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-24 04:45:14

我最近一直在思考这个问题,既然没有人回答你,我想我应该提一下我遇到的一些想法。

首先,它注意到你只需要计算渲染一次哪些面,因为只有当你移除或添加体素时才会发生变化,然后你只需要在做出更改的地方周围立即重新计算体素。只需使用一个标志来标记渲染并缓存它,直到发生变化。如果你还没有这样做,这会给你计算每一帧的性能带来很大的提升。

我还建议研究一下这个极快的光线投射算法:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.42.3443&rep=rep1&type=pdf

您可以使用它来进行快速冲突测试,也可以用于剔除测试。可以在栅格节点上投射,以查看面的任何部分是否可见。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48347082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档