Икосфера против кубической сферы

Я занимаюсь исследованием генерации планет для игрового движка, который планирую написать, и мне было интересно, какой будет лучший подход к процессуальной генерации планеты. (С точки зрения производительности.) До сих пор я видел, как больше всего всплывают Icosphere и Cubemapped Sphere, но мне было интересно, какой из них быстрее генерировать. Мой вопрос особенно направлен на LOD, так как я надеюсь, что геймплей будет похож на No Man's Sky.

Заранее спасибо.

1 ответ

Я бы сказал, что сфера октаэдра была бы лучшей, но поскольку все они являются Платоновыми телами, они будут похожи, поэтому преждевременная оптимизация может не стоить этого. (Вот учебник в Unity)

Возможные преимущества октаэдра заключаются в том, что грани являются треугольниками (в отличие от куба), и для каждого квадранта в трехмерном пространстве существует один треугольник (в отличие от икосферы и куба).

Мое обоснование того, что октаэдры (и икосферы) быстрее кубов, заключается в том, что грань уже является треугольником (тогда как куб имеет квадратную грань). Добавление деталей для октаэдра, икосаэдра или куба обычно означает превращение каждого треугольника в четыре меньших треугольника. В течение этого поколения вы создаете три новые вершины, положение которых необходимо нормализовать, чтобы сетка все еще правильно вписывалась в единичную сферу.

Тесселяция куба

Тесселяция куба приводит к противоречивым коэффициентам нормализации

Октаэдр и икосаэдр могут использовать таблицу поиска, которая выбирает этот коэффициент нормализации (в отличие от куба), поскольку число является постоянным для каждой итерации.

Предполагая, что вы можете написать собственный формат сетки, вы можете сохранить сетку для данной планеты через массив (4, 8 или 20) четырех деревьев (потому что каждый треугольник опционально разбивается на четыре дополнительных треугольника). (По сути, это система LOD, но вам необходимо периодически определять, следует ли тесселяции или уменьшению части сетки на основе расстояния от камеры.) Эта система, скорее всего, станет узким местом, поскольку сетки должны быть пересчитаны во время выполнения.,

Другие вопросы по тегам