0

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

提前致谢。

4

1 回答 1

1

我会说八面体球体是最好的,但由于它们都是柏拉图固体,它们将是相似的,所以过早的优化可能不值得。(这里有一个Unity教程

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

我认为八面体(和 icospheres)比立方体更快的理由在于它的面已经是一个三角形(而立方体有一个正方形的面)。为八面体、二十面体或立方体添加细节通常意味着将每个三角形变成四个较小的三角形。在这一代中,您创建了三个新顶点,它们的位置需要进行归一化,以便网格仍然正确地内接在单位球体中。

镶嵌立方体

镶嵌立方体会导致标准化因子不一致

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

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

于 2015-10-05T05:44:33.343 回答