ПРОЦЕДУРНАЯ ГЕНЕРАЦИЯ МАССИВНОЙ 3D-ГЕОМЕТРИИ С ИСПОЛЬЗОВАНИЕМ УЛУЧШЕННОГО АЛГОРИТМА MARCHING CUBES
Authors: Третьяков А.А. 
Published: September 2021

Процедурная генерация, или создание контента во время работы программы, это сложное направление, которое требует не только понимания 3D-графики, но и навыков программирования графики, что часто сводится к изучению работы графических процессоров. Из-за такой сложности разработчики часто используют уже готовые инструменты для создания контента. Такие инструменты обобщают и упрощают работу, предоставляя большой заготовленный набор функции, который можно использовать не зная программирования вовсе. К сожалению, обобщение часто приводит к уменьшению гибкости и вводит новые ограничения. Статистика показывает, что использование процедурной генерации, для создания массивной 3D-геометрии, невозможно при использовании готовых инструментов с уже заготовленными функциями. Такие инструменты не позволяют воплотить огромные масштабы массивной геометрии в жизнь из-за различных ограничений. Кроме того, существующие алгоритмы создания 3D-геометрии часто не учитывают применение этих алгоритмов для создания массивной 3D-геометрии, например, планет. Рассматриваемый в этой работе алгоритм Marching Cubes также не учитывает применение алгоритма для создания массивной геометрии, из-за чего применение этого алгоритма в таких целях будет иметь много ограничений и много недостатков. Но данный алгоритм выбран не случайно, он обладает большой популярностью и мы поговорим почему. Данная работа фокусируется на представлении новой модификации на уже существующий алгоритм Marching Cubes в целях применения его в рамках массивной геометрии. Данный алгоритм найдет применение в компьютерных играх с космической тематикой, наш алгоритм позволяет создавать массивную 3D-геометрию планетарных масштабов даже на слабых компьютерах без особых затрат по ресурсам. Кроме того, наш алгоритм позволяет изменять сгенерированную геометрию в реальном времени, без задержек по времени, что так важно компьютерным играм.

Procedural generation, or the creation of content while a program is running, is a complex area that requires not only an understanding of 3D graphics, but also graphics programming skills, which often boils down to learning how GPUs work. Because of this complexity, developers often use off-the-shelf content creation tools. Such tools generalize and simplify work by providing a large pre-built set of functions that can be used without knowing programming at all. Unfortunately, generalization often reduces flexibility and introduces new constraints. Statistics show that using procedural generation to create massive 3D geometry is impossible when using ready-made tools with already prepared functions. Such tools do not allow the huge scales of massive geometry to be brought to life due to various constraints. In addition, existing 3D geometry creation algorithms often do not account for the application of these algorithms to create massive 3D geometry such as planets. The Marching Cubes algorithm considered in this work also does not take into account the use of the algorithm for creating massive geometry, which is why the use of this algorithm for such purposes will have many limitations and many disadvantages. But this algorithm was not chosen by chance, it is very popular and we will talk why. This work focuses on modifying the existing Marching Cubes algorithm to apply it to massive geometry. This algorithm will find application in computer games with a space theme, our algorithm allows to create massive 3D geometry of planetary scales even on a low-end computers without special resource costs. In addition, our algorithm allows to change the generated geometry in real time, without time delays, which is so important for computer games.