УДК 004.94
Моделирование
процедурных
ландшафтов
А. Ю. Воронкина, В.С. Шляга
Московский государственный университет печати имени Ивана Федорова 127550, Москва, ул. Прянишникова, 2А e-mail: [email protected], [email protected]
1. Процедурные ландшафты
Процедурные текстуры - это текстуры, созданные таким образом, что цвет каждого пикселя задается алгоритмически. Это ключевое отличие процедурных текстур от классических. Классические текстуры создаются двумя способами: модификация существующих фотографий или создание ландшафтов художником вручную с нуля в графическом редакторе [1].
Оба эти метода обладают существенными недостатками. Во-первых, получившиеся в результате текстуры лишены даже минимальной параметризации и, как следствие, их крайне сложно модифицировать. Во-вторых, работа над подобными ландшафтами крайне рутинна и неэффективна с точки зрения трудозатрат: большую часть времени художник вынужден заниматься не работой над дизайном и «сюжетом» ландшафта, а перебирать существующие фотоматериалы, рисовать кистью и заниматься ретушью.
Процедурные ландшафты лишены перечисленных недостатков [2]. С одной стороны, в силу своей алгоритмичности, они позволяют с легкостью модифицировать композицию внесением корректирующих параметров в алгоритм генерации (рис. 1). С другой стороны, процедурные ландшафты генерируются автоматически, благодаря чему художник освобожден от однообразной работы и может больше времени тратить непосредственно на работу над художественными качествами разрабатываемых сцен.
Среди достоинств процедурной генерации текстур можно выделить следующие:
34
Рис. 1. Пример сгенерированного процедурного ландшафта
• возможность вносить изменения на любом этапе работы над ландшафтом. Причем, эти изменения зачастую заключаются в применении суперпозиции различных математических функций. Например, таких как шум Перлина, мозаика Вороного и др.;
• изменение размеров текстуры без потери четкости и детализации изображения;
• возможность создавать наборы подобных ландшафтов, используя лишь некоторое случайное начальное значение для работы генератора;
• формирование контента по технологии HDRI с его дальнейшей модификацией и приведением к узкому динамическому диапазону;
• малый объем данных, достигаемый за счет хранения только алгоритма генерации и набора начальных значений.
2. Генерация процедурных ландшафтов
Моделирование ландшафтов включает моделирование нескольких основных составляющих пейзажа: линия горизонта, рельеф местности, горы или холмы, а также водные и небесные объекты. Для создания каждой из этих составляющих существуют различные подходы, которые будут рассмотрены в последующих разделах. Смоделированные таким образом части ландшафта соединяются на сцене и подвергают дальнейшей обработке различными уточняющими алгоритмами и преобразованиями.
Рассмотрим некоторые методики генерации частей ландшафтов.
35
2.1. Алгоритм смещения центральной точки
В двумерном варианте алгоритм смещения центральной точки позволяет рисовать ломаную линию горизонта - например, гор. Он является итерационным, что позволяет варьировать количество повторений (а, значит, и время его работы) в зависимости от желаемого качества результата (рис. 2) [3].
Алгоритм 1 Алгоритм смещения центральной точки для создания линии горизонта
Требуется: Интервал для выбора случайных значений.
1: Нарисовать горизонтальный отрезок.
2: повторить
3: для всех сегментов горизонта выполнить
4: Найти середину отрезка (х, у).
5: Изменить координату у середины отрезка на случайное значение
из диапазона.
6: Сузить ширину интервала для выбора случайных значений.
7; конец повторения
8: пока не достигнута достаточная детализация линии горизонта
Рис. 2. Алгоритм смещения центральной точки
Достаточно простая методика позволяет, однако, добиться впечатляющих результатов. Пример работы данного алгоритма представлен на рис. 3.
Рис. 3. Создание линии горизонта с помощью алгоритма смещения центральной точки
Алгоритм смещения центральной точки в пространстве работает аналогично двумерному случаю. Данные представляются в виде квадратной матрицы размерностью 2п + 1. Элементам матрицы, которые соответствуют углам полигонов (квадратов) генерируемой поверхности, присваиваются некоторые случайные значения, которые будут являться значением высоты соответствующей точки.
36
Пространственная версия алгоритма, называемая также алгоритмом «ромб-квадрат» [4], является двухшаговой. На шаге «квадрат» определяется центральная точка квадрата, как пересечение диагоналей, и ей присваивается значение высоты, равное усреднению высот углов квадрата, увеличенному на некоторую случайную величину (отклонение). Следующий шаг, - «ромб» - позволяет рассчитать значения высот в точках, соответствующих серединам сторон квадрата. Их высоты рассчитываются аналогично методу расчета из шага «квадрат», но анализируемая точка в данном случае является не центром квадрата, а центром ромба.
Иногда может получиться так, что необходимые для расчета точки расположены за пределами рассматриваемой плоскости. В таком случае можно считать, что их высота является известной величиной, например, равна 0 или 1.
2.2. Моделирование облаков
Алгоритм смещения центральной точки можно применять не только для создания земных поверхностей, но и для генерации облачного неба - разница лишь в семантике вычисляемых значений. В данном случае рассчитываемая величина будет обозначать прозрачность точки на небе. Таким образом, наименьшие значения будет соответствовать ясному небу, а наибольшие - облачному.
В трехмерных сценах можно использовать двумерные принципы создания облаков, однако в таком случае будет невозможно изменение угла обзора сцены. Чтобы решить эту проблему, облака в объемных фотореалистичных ландшафтах создаются с помощью систем частиц.
Системы частиц позволяют управлять большим числом небольших объектов-точек с помощью «гравитации» и характеристик частиц. Поведение излучателя системы частиц, независимо от моделируемого объекта, определяется алгоритмом и набором параметров. Он определяет число частиц и их поведение в моделируемой среде.
Излучатель характеризуется следующими основными параметрами:
• положение и ориентация в виртуальном пространстве;
• возможность изменения своих характеристик со временем;
• размеры окна излучателя;
• является ли излучатель, одномерным (точка), двумерным (плоскость) или трехмерным объектом (пространство).
Математически любую частицу в рамках системы частиц можно определить как материальную точку, которая характеризуется таким дополнительными параметрами, как направление, положение, масса, размер, твердость, скорость, цвет, вязкость, притяжение и др. Список параметров определяется разработчиком и является вариативным. Ос-
37
новная характеристика частицы - цикл ее жизни - определяется как время между возникновением в излучателе и уничтожением частицы.
Алгоритмы, работающие с системами частиц, имеют следующие общие этапы.
1. Изменение в каждый момент времени текущего положения.
2. Перерасчет вектора направления движения частиц.
3. Изменение характеристик частиц.
4. Удаление частицы из списка частиц при наступлении конца цикла ее жизни.
2.3. Моделирование горного рельефа
Рассмотрим технику моделирования горного рельефа с использованием Холмового алгоритма [5]. Указанный алгоритм является достаточно простым итерационным алгоритмом с несколькими параметрами, позволяющими изменять характеристики создаваемого ландшафта. Алгоритм может быть представлен 5 основными шагами.
1. Создается базовый, плоский ландшафт, высота каждой точки которого равна 0.
2. Случайным образом выбирается точка на сцене или за ее границами и радиус, значение которого попадает в заданный интервал. Выбор минимального и максимального значений интервала является важным шагом, поскольку данные параметры оказывают влияние на внешний вид ландшафта: от них зависит, будут ли на поверхности острые скалы или пологие холмы.
3. Холм «воздвигается» в выбранной точке с заданным радиусом.
Рис. 4. Создание основы будущего рельефа — первого холма
38
Математически холм является вращением вокруг центральной точки параболы, которая принимает значение 0 в радиусе. Пример холма изображен на рис. 4. Высота холма h радиуса г с центром (х0, у) в точке (х, у) рассчитывается по формуле:
h = Г- - (х- х0)2 + (у- у0)2.
4. Шаги 2 и 3 повторяются необходимое количество раз. Число итераций зависит от требований, предъявляемых к внешнему виду ландшафта.
При построении реалистичного ландшафта необходимо соблюдать 2 принципа. Во-первых, при расчете отрицательные «высоты» игнорируются. Функция принимает отрицательные значения, когда текущая точка располагается на расстоянии большем, чем радиус. Во-вторых, если в процессе генерации холмы перекрывают друг друга, значения высоты второго холма добавляются к уже полученным значениям первого. Это позволяет получать более естественные участки ландшафта.
5. В течение предыдущих шагов никаким образом не ограничивался интервал значений, которые может принимать функция. На практике это может привести к ситуации, когда самая низкая точка примет значение выше 0, а самая высокая - будет бесконечно велика. С такими значениями сложно работать. Нормализация представляет собой процесс перевода полученных значений из одного предела в другой. Для расчетов наиболее оптимальным считается интервал значений от 0 до 1. На рис. 5 представлен процесс нормализации в срезе для части сгенерированного рельефа.
Рис. 5. Нормализация высот
39
Для того чтобы нормализовать в предел от 0 до 1, необходимо определить минимальное и максимальное значения массива полученных высот и затем выполнить перерасчет всех высот в новом масштабе по формуле:
h — h-hmin
n h -h '
'max 'min
где h - текущая высота точки; hn - нормализованная высота точки; h и h - минимальное и максимальное значение высот сцены.
2.4. Генерация островов
С помощью дополненного Холмового алгоритма можно генерировать острова в рамках сцены. Характерной особенностью таких ландшафтов является необходимость разместить остров ближе к центру и оставить часть точек на краях с высотой, равной 0. Для этого вводятся 2 новых параметра.
Один из них показывает, на сколько далеко от центра будет расположен холм. Наиболее оптимальным интервалом значений для этого параметра является интервал от 0 до величины, равной половине размера поверхности без радиуса холма. Такой интервал позволяет избежать пересечений холмов с краями поверхности. Первый параметр рассчитывается по формуле
d—%х(1-4
где % - случайная величина, принимающая значение от 0 до 1; / - размер сцены.
Второй параметр определяет, в каком направлении от центра будет выбрана центральная точка холма. Данный параметр принимает значения от 0 до 2% и рассчитывается по формуле
a — % х 2%.
Благодаря этим параметрам становится возможным расчет координат (х, у) центральной точки холма:
x—- + dx cosa,
2
у — - + dx sina 2
Дальнейшие построения проводятся по остальным этапам Холмового алгоритма.
2.5. Сглаживание ландшафта и создание долин
Данный шаг не является обязательным, но позволяет сделать полученный ландшафт фотореалистичным. Неестественность полученного ландшафта связана с тем, что после совершения определен-
40
ного числа итерации, на сцене практически не остается плоских участков. Однако необходимо учитывать, что сглаживание поверхности должно происходить без выравнивания высоких участков - гор. Так как известно, что значения высот были нормализованы в интервал от 0 до 1, можно заменить значения на их квадраты, что эффективно скажется на средних значениях и не затронет минимальные и максимальные значения. При необходимости можно использовать и более высокие степени.
На рис. 6 представлено графическое обоснование сглаживания холмов с разными степенями сглаживания.
Рис. 6. Сглаживание высот: h(x) = x h(x) = X, h(x) = X0
Заключение
Процедурные способы моделирования ландшафтов лишены многих недостатков классических способов создания пеИзажеИ. Они позволяют избежать рутинной работы художников, создавать неограниченные динамические ландшафты, которые могут быть быстро и легко модифицированы. Как следствие, процедурные методы создания пеИзажеИ удобны в работе и будут находить все больше сфер для своего применения.
В статье дано определение процедурным ландшафтам и описаны подходы их генерации. Описаны методы моделирования двухмерных и трехмерных ландшафтов и облаков с помощью алгоритма смещения центральной точки. Также представлен способ генерации горного ландшафта с помощью Холмового алгоритма и описаны его расширения для получения островов и долин на сцене.
Библиографический список
1. World of Warcraft: Looking for Group Documentary. 2014. URL: http: //www.youtube.com/watch?v=xyPzTywUBsQ.
41
2. Gavin S P Miller. «The Definition and Rendering of Terrain Maps». В: ?Proceedings of the 13th Annual Conference on Computer Graphics and Interactive Techniques. SIGGRAPH '86. New York, NY, USA: ACM, 1986, с. 39-48. ISBN: 0-89791-196-2. DOI: 10.1145/15922.15890. URL: http:// doi.acm.org/10.m5/15922.15890.
3. Paul Martz. Generating Random Fractal Terrain. Октябрь, 1999. URL: http: //c?14
4. Alain Fournier, Don Fussell и Loren Carpenter. «Computer Rendering of Stochastic Models». В: Commun. ACM 25.6 (июнь 1982), с. 371-384. ISSN: 0001-0782. DOI: 10.1145/358523.358553. URL: http:// doi.acm.org/10.1145/358523.358553.
5. Bob Nystrom. Terrain Generation Tutorial. Ноябрь, 2010. URL: http: //www.stuffwithstuff.com/robot-frog/3d/hills/index.html.
42