Введение
1. Основная структура данных
1.1 Постановка задачи………………………………………………..……5
1.2 Мозаика Вороного……………………………………………..…..…10
1.3 Алгоритм Фортуна……………………………………………….…..12
1.4 Алгоритм Ллоида…………………………………………….………22
1.5 Смежные графы вершин и граней
2. Заполнение карты
2.1 Генерация участка суши ………….……………………..…………..27
2.2 Карта высоты…………………….………………...……...………….29
2.3 Генерация рек………………….……………………………….…….30
2.4 Карта влажности…………………………………….…………….…31
2.5 Типы местности
3. Описание реализации
3.1 Краткое описание
3.2 Классы и Методы
3.3 Результаты выполнения программы
Заключение
Список литературы
Целью данной бакалаврской работы является исследование методов процедурной генерации контента и создание программы, осуществляющей реализацию этих методов. Результатом проделанной работы будет программа-генератор, позволяющая строить изображения двумерных карт местности. Создаваемая система предполагает дальнейшее развитие и расширение в будущем, с последующей интеграцией в компьютерную игру, в которой она будет выполнять функцию генератора карт-уровней.
Процедурная генерация (ПГК) — это группа методов, в которых при помощи особых вычислительных алгоритмов создаются модели, которые изображают различные объекты — дома, растения, ландшафт, текстуры [1. 1].
Построение моделей различных объектов методом ПГК—распространенная задача, которая находит применение во многих сферах, связанных с компьютерной графикой, например, в создании компьютерных игр или мультфильмов. Этот метод используется тогда, когда нужно получить большое множество моделей с уникальными характеристиками, которое нельзя получить в разумные сроки и при разумных трудозатратах обычным способом построения вручную.
Например, при создании текстур вручную, художники используют два метода или их комбинацию. Первый метод основан на использовании реальных фотоизображений с последующим редактированием. Второй — это создание текстуры полностью при помощи графического планшета. Эти методы обладают серьезным недостатком — невозможностью быстрого итерирования вариантов текстуры. В обоих случаях такие текстуры лишены даже минимальной параметризации картинки и как следствие — возможности быстрого изменения путём редактирования этих параметров.
Кроме того, создание текстур этими методами сводится к рутинной работе: множество движений кисточкой, бесконечное перебирание фототекстур в поисках подходящей и ретуширование с целью правки нежелательных элементов. При процедурной генерации текстуры, цвет каждого пикселя изображения формируется алгоритмически, что позволяет избежать всю рутинную работу и значительно снизить трудозатраты [2. 1].
По сравнению с традиционными методами создания графического контента, процедурная генерация обладает следующими значительными преимуществами:
Возможность вносить изменения в любой этап формирования изображения (недеструктивное редактирование).
Возможность увеличения или уменьшения размера изображения без потерь детализации.
Высокая скорость создания нового контента на основе существующих наработок путём их модифицирования и комбинирования.
Быстрое создание подобных изображений. После того, как реализован процедурный генератор, формирующий необходимое изображение, для получения подобного нужно всего лишь изменить входное значение у генератора случайных чисел.
Малый размер хранимых данных, который не зависит от разрешения картинки. В файл сохраняется только описание алгоритма, занимающее несколько килобайт.
После анализа научной литературы по этой теме, были сформулированы две основные задачи, решению которых посвящена данная работа:
1. Исследование существующих алгоритмов ПГК для создания карт и их возможностей.
2. Реализация метода процедурной генерации контента посредством объектно-ориентированного программирования, а именно языка Java.
В бакалаврской работе была исследована техника Процедурной Генерации Контента. Проанализированы варианты основной структуры данных для генератора карт местности, приведены различия рассмотренных вариантов, их плюсы и минусы. Превосходство выбранной, окончательной структуры данных, как более гибкой, универсальной и расширяемой, доказано. Подробно описаны алгоритмы ПГК, используемые для построения изображений. Приведен список классов и методов, описывающий реализацию данных алгоритмов. Приведены примеры изображений, получаемых в результате выполнения программы.
В результате выполнения бакалаврской работы разработана программа-генератор двухмерных карт местности, в основе которой лежит гибкая структура данных, обеспечивающая возможность ее дальнейшего расширения с последующим интегрированием в компьютерную игру для мобильных устройств.
В дальнейшем планируется добавить несколько вариантов типа местности, изображенной на карте, помимо островной (таких как материк или архипелаг), и возможность построения островных форм другими методами, помимо генерации синусоиды (например, с использованием функции Шума Перлина).
1. 1 David S. Ebert, Ken Perlin, Steven Woorley, Darwyn Peachey, F.Kenton Musgrave “Texturing & Modeling: A Procedural Approach”
1. 2 Брюс Эккель “Философия Java”
1. 3 Steve Oudot “Delaunay Triangulation”
1. 4 В.В. Галицкий, Е.В. Мироненко “Мозаика Вороного на плоскости”
1. 5 M. de Berg, M. van Kreveld, M. Overmas, O. Schwarzkopf “Computational Geometry”
1. 6 William L. Raffe, Fabio Zambetta, and Xiaodong Li “A Survey of Procedural Terrain Generation Techniques using Evolutionary Algorithms”
1. 7 Du, Qiang, Faber, Vance; Gunzburger, Max (1999), "Centroidal Voronoi tessellations: applications and algorithms"