2015-10-03 26 views
0

我正在研究爲遊戲引擎生成行星我打算編寫代碼,並且我想知道什麼是程序生成一顆行星的最佳方法。 (就性能而言)。到目前爲止,我已經看到IcosphereCubemapped Sphere彈出最多,但我想知道哪兩個產生更快。我的問題特別針對LOD,因爲我希望遊戲玩法類似於No Man's Sky。Icosphere與Cubemapped Sphere

在此先感謝。

回答

0

我會說八面體球體是最好的,但因爲它們都是Platonic Solids,它們將是相似的,所以過早優化可能不值得。 (這裏是Unity中的tutorial

八面體的可能的優點是面是三角形(與立方體不同),並且在三維空間中每個象限有一個三角形(與icosphere和立方體不同)。

我的八面體(和icospheres)比立方體更快的原因在於面部已經是三角形(而立方體有一個方形面)。添加八面體,二十面體或立方體的細節通常意味着將每個三角形變成四個較小的三角形。在這一代中,您將創建三個新的頂點,這些頂點的位置將需要進行歸一化,以便網格仍能正確刻入單位球體中。

鑲嵌一個立方

Tessellating a cube results in inconsistent normalization factors

八面體和正二十面體可以使用取此歸一化因子(相對於立方體),因爲數爲每次迭代相一致的查找表。

假設您可以編寫自定義網格格式,您可以通過四叉樹數組(大小4,8或20)存儲給定行星的網格(因爲每個三角形可以鑲嵌到四個額外的三角形中) 。 (這基本上是一個LOD系統,但是您需要定期根據與攝像機的距離來確定是否要鑲嵌或減少網格的一部分。)此係統可能是瓶頸,因爲網格必須在運行時重新計算。