Icosphere与Cubemapped Sphere

时间:2015-10-03 15:00:08

标签: c# unity3d rendering procedural-generation procedural

我正在研究为我计划编码的游戏引擎生成行星,我想知道什么是程序生成行星的最佳方法。 (在性能方面。)到目前为止,我已经看到IcosphereCubemapped Sphere弹出最多,但我想知道两者中哪一个更快生成。我的问题特别针对LOD,因为我希望玩游戏玩法类似于No Man's Sky。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我会说八面体球体是最好的,但由于它们都是Platonic Solids,它们将是相似的,因此过早的优化可能不值得。 (这是Unity中的tutorial

八面体的可能优点是面是三角形(与立方体不同),3d空间中每个象限都有一个三角形(与icosphere和立方体不同)。

八面体(和icospheres)比立方体更快的理由在于面部已经是三角形(而立方体具有正方形面)。添加八面体,二十面体或立方体的细节通常意味着将每个三角形转换为四个较小的三角形。在这一代中,您将创建三个新的顶点,这些顶点的位置需要进行标准化,以便网格仍然可以正确地刻在单位球体中。

细分多维数据集

Tessellating a cube results in inconsistent normalization factors

八面体和二十面体可以使用查找表来获取此归一化因子(而不是立方体),因为每次迭代的数字都是一致的。

假设您可以编写自定义网格格式,您可以通过四叉树的数组(大小为4,8或20)存储给定行星的网格(因为每个三角形可选地细分为四个额外的三角形)。 (这实际上是一个LOD系统,但您需要根据与摄像机的距离来定期确定是否细分或缩小网格的一部分。)此系统可能是瓶颈,因为必须在运行时重新计算网格