АВТОМАТТАНДЫРУ, ТЕЛЕМЕХАНИКА, БАЙЛАНЫС, АҚПАРАТТЫҚ ЖҮЙЕЛЕР
AUTOMATION, TELEMECHANICS, COMMUNICATIONS, POWER ENGINEERING, INFORMATION SYSTEM
АВТОМАТИЗАЦИЯ, ТЕЛЕМЕХАНИКА, СВЯЗЬ, ИНФОРМАЦИОННЫЕ СИСТЕМЫ
УДК 004.9 DOI 10.52167/1609-1817-2023-124-1-182-194 А. Ж. Кинтонова1, Г.Е. Габдрешов2, А.А. Кисманова3, К.М.Сансызбай4
1Евразийский национальный университет им.Л.Н. Гумилева, Астана, Казахстан
2ООИ «Sezual», Астана, Казахстан
3Казахский агротехнический университет им.С.Сейфуллина, Астана, Казахстан
4Академия логистики и транспорта, Алматы, Казахстан E-mail:[email protected]
ПРОЕКТИРОВАНИЕ ЛАНДШАФТА С ПОМОЩЬЮ АЛГОРИТМОВ ГЕНЕРАЦИИ Аннотация: В статье отражены результаты анализа технологий процедурной генерации в трехмерной графике. Также продемонстрированы результаты анализа алгоритмов процедурной генерации в трехмерной графике. В статье показаны возможности среды разработки Unity. Показана генерация ландшафта с помощью алгоритмов карты высот и шума Перлина и макета с помощью пакета Gaia в среде разработки Unity. Для реализации генерации процедурных алгоритмов для проектирования ландшафтного дизайна, были использованы Unity, Microsoft Visual Studio и изучен язык программирования C#. Алгоритмы процедурной генерации можно также использовать даже для создания музыки, для генерации виртуального мира, симулирующего реальный мир (например, остров с деревьями, травой, ветром, шумом, впадинами, реками, озерами, домами и даже животными).
Ключевые слова. Среда разработки Unity, процедурные алгоритмы, карта высот, шум Перлина, трехмерная графика, трехмерные примитивы, алгоритмическая композиция.
Введение.
В настоящее время, в век информационных технологий, технологии трехмерной графики быстро развиваются и использование технологий трёхмерной графики достаточно актуально. Технологии трехмерной графики включают в себя программные и аппаратные средства трехмерного моделирования: приложения трехмерной визуализации объектов или систем и, аппаратные средства, например, 3D-мониторы и 3D-принтеры.
Технологии трехмерной графики широко используются в различных сферах: начиная от развлекательной индустрии, связанной со спецэффектами в киноиндустрии, видео - играми, VR-технологиями и художественным творчеством, и заканчивая сферой научной деятельности, связанной с программным обеспечением для обучения, с моделированием процессов, с симуляциями, с проведением экспериментов, с визуализацией органов и систем в организме человека, с архитектурным моделированием, с ландшафтным дизайном и т.д. Трехмерное моделирование может быть автоматизировано с помощью различных алгоритмов, что может позволить значительно сэкономить время и ресурсы, на создание различных трудоемких макетов, моделей и различных массовых объектов (например, второстепенные детали ландшафта, такие как деревья, трава, текстуры
поверхности земли, объекты заднего плана), такие алгоритмы относят к алгоритмам процедурной генерации. Использование трёхмерной графики достаточно актуально. Она широко применяется для создания изображений на плоскости экрана или листа печатной продукции, в науке и промышленности, например, в системах автоматизации проектных работ (САПР; для создания твердотельных элементов: зданий, деталей машин, механизмов), архитектурной визуализации (сюда относится и так называемая
«виртуальная археология»), в современных системах медицинской визуализации.
Известныработытакихученыхкакученных,
связанныестехнологиямииалгоритмамипроцедурнойгенерациивтрехмернойграфике,
такиекак: Benjamin Mark, Tudor Berechet, Tobias Mahlmann, Julian Togelius «Procedural Generation of 3D Caves for Games on the GPU»; Julian Togelius, Alex J. Champandar, Pier Luca Lanzi, Michael Mateas, Ana Paiva, Mike Preuss, and Kenneth O. Stanley «Procedural Content Generation: Goals, Challenges and Actionable Steps»; Gabriella A. B. Barros, AntoniosLiapis, Julian Togelius «Playing with Data: Procedural Generation of Adventures from Open Data»; David S. Ebert, Ken Perlin, Steven Woorley, Darwyn Peachey, F.Kenton Musgrave
«Texturing & Modeling: A Procedural Approach».
Процедурная генерация контента является одним из наиболее актуальных и активно развивающихся направлений исследований в сфере мультимедиа, в частности в индустрии видеоигр. Под процедурной генерацией контента (ПГК) понимают автоматическое и полуавтоматическое создание и динамическое изменение различных составляющих частей игр, в том числе игровых объектов и уровней, двумерной и трехмерной графики, эффектов, звуков, музыки, персонажей, сюжетов и др.
Использование ПГК позволяет не только значительно понизить стоимость создания контента, но и решает проблему персонализации, приобретающую большую значимость в связи с увеличением количества потенциальных игроков[1].
Синтез геометрии используется во многих областях, включая цифровое кино, электронные развлечения и компьютерное моделирование. К сожалению, процесс моделирования все еще выполняется вручную, предлагая уникальный результат за счет кропотливой работы. Необходимо заменить работу дизайнеров интеллектуальными автоматизированными алгоритмами. Методы, основанные на автоматизации процессов моделирования, предлагают разнообразные трехмерные структуры в течение ограниченного времени и ограниченного денежного бюджета [2].
Генерацию процедурных алгоритмов можно использовать при генерации карт подземелий. Эволюционный алгоритм развивает древовидную структуру, которая кодирует подземелья, стремясь генерировать уровни, близкие к входной конфигурации, предоставленной разработчиком игры. Древовидная структура содержит информацию о количестве комнат, связях между ними и их положении на двухмерной карте[3].
Материалы и методы.
Автоматическая генерация графического контента может быть использована при проектировании интерьеров и объектов, разработке новых дизайнов, технических устройств и других продуктов, при создании всевозможных спецэффектов в киноиндустрии, при создании компьютерных игр. Процедурная генерация является одним из таких методов.
При проектировании ландшафта можно руководствоваться тем, что такие объекты, как горные хребты или береговые линии в природе обладают фрактальными свойствами, то есть та или иная часть объекта может в какой-то мере походить на другую. Природные объекты не похожи на идеальные фракталы, однако, факт наличия фрактальных свойств избавляет нас от попыток создания уникальной на 100% структуру, которая отличалась бы от любого другого места сгенерированного ландшафта.
В таком случае можно использовать следующие способы генерации ландшафта:
1) Схемы разделения (subdivision schemes).
2) Faulting.
3) Шум.
Алгоритмы разделения подразумевают под собой наличие базовой сетки. По данной сетке итеративно строится мозаичная модель, которая с каждой итерацией меняет свою форму. Количество итераций и плавность результата при использовании данных алгоритмов будет зависеть от размера базовой сетки. Эти алгоритмы зачастую используются для сглаживания 3D-моделей, но их также можно применить для процедурной генерации.
Алгоритмами разделения являются triangle, square и diamond-square алгоритмы, наиболее популярным из которых является последний.
Fault алгоритм заключаются в том, что плоскость разделяется на две части случайной прямой. В общем случае, значения высот для точек, оказавшихся с одной стороны от прямой, понижаются, а значения с другой стороны повышаются. Результат алгоритма зависит от количества итераций, которое возможно задать вручную.
Модификация алгоритма возможна путем выбора функции, определяющей понижение или повышение значения высоты точки или построением зависимости высоты в точке от ее удаленности от построенной прямой. Другая возможная модификация — использование кривых или окружностей вместо прямых.
Функции шума генерируют случайные числа и располагают их нужным образом.
Их использование не ограничивается процедурной генерацией, но они популярны в сфере компьютерной графики в связи с тем, что с помощью шума можно получить те или иные текстуры.
Самый простой пример шума - белый шум, являющийся набором случайных чисел и переведенный в черно-белое изображение. Очевидно, для генерации ландшафта белый шум не подходит. Для этой цели чаще всего используют градиентный или клеточный шумы.
При генерации градиентного шума создается решетка случайных градиентов, к которым для получения значения функции шума в данной точке применяется функция интерполяции. Наиболее популярными алгоритмами градиентного шума являются шум Перлина и симплекс шум.
Клеточный шум основывается на составлении поля расстояний до ближайших из множества опорных точек. Примером такого шума является шум Вороного, основанный на диаграммах Вороного.
В качестве алгоритмов для реализации были выбраны следующие методы:
1) Алгоритм Diamond-Square.
2) Fault алгоритм.
3) Шум Перлина.
Процедурная генерация - это метод создания любого графического контента с использованием специальных алгоритмов, которые генерируют контент автоматически, без вмешательства пользователя, но также довольно сложны в разработке. Этот метод имеет довольно большой потенциал, поскольку он позволяет значительно сэкономить время и деньги на создании контента, а 10 контент означает любой тип объекта, от музыки и рисунков до трехмерного ландшафта и сложных трехмерных виртуальных объектов.
Более того, каждая генерация создает свой собственный уникальный экземпляр, то есть каждый раз, когда этот алгоритм запускается, получается уникальный контент, который не похож на предыдущий (шанс получить похожий контент крайне мал, поскольку существует множество вариантов и их количество зависит от выбранного алгоритма и количества модулей, из которых создается контент). Этот алгоритм также экономит место
на жестком диске, поскольку генерация происходит на лету, и обычно такие программные инструменты занимают значительно меньше места, чем их аналоги с готовым контентом (предварительно созданным). Примером такого алгоритма может послужить пакет MASSIVE – это пакет, который содержит набор различных высококачественных анимации и инструментов для работы с алгоритмом, который обеспечивает создание
«эффекта толпы» в фоновом режиме (например, для массовых сражений, он использовался для создания этого эффекта в серии фильмов «Властелин колец»). Этот пакет был разработан специально для индустрии визуальных эффектов, и его основной функцией является возможность быстро и легко создавать тысячи и, при желании, миллионы (в зависимости от предоставленной вычислительной мощности) агентов (анимированных персонажей, различных объектов и т. д.), они могут работать автоматически или могут быть запрограммировано индивидуально.
Благодаря программному обеспечению, позволяющему каждому агенту индивидуально реагировать на окружающую среду и других агентов, каждый агент не только использует предварительно записанные клипы, но и смешивает их между собой.
Эти анимации могут быть сделаны вручную в специальных программах для 3D-анимации.
В дополнение к возможностям искусственного интеллекта, MASSIVE имеет множество других функций, включая моделирование тканей, динамику твердого тела и т. д. [3].
Метод процедурной генерации текстур позволяет автоматически создавать текстуры с помощью различных математических функций, таких как шум Перлина или мозаика Вороного. В соответствии с рисунком 3 приведен пример процедурной системы текстур - дерево фильтров в программе «FilterForge».
В настоящее время одними из самых распространенных алгоритмов процедурной генерации являются:
- метод генерации карт высот («HeightMaps»);
- метод с использованием процедурного шума («NoiseFunctions»);
- метод генерации плиточной структуры («TileMaps»).
Метод генерации карт высот. Генерацией карт высот называется способ генерации графических объектов, который основывается на двухмерном массиве, при этом его элементами являются значения высоты для определенных участков местности. В соответствии с рисунком 1, изображен пример карты высот и участок местности, созданный на основе данной карты.
Рисунок 1 – Пример карты высот и участок местности, созданный на основе данной карт
Данная технология достаточно продуктивна, и может быть использована для создания трехмерных объектов. Алгоритм Смещения Центра («midpointdisplacement»), Фрактальная Генерация («Fractals»), Алгоритм Ромб-Квадрат («Diamond-Square») используют данную технику в своей основе. Метод с использованием процедурного шума. Термин «шум» представляет набор случайно сгенерированных чисел из определенного диапазона значений, без зависимостей и закономерностей между соседними числами. Наиболее простой пример использования шума – построение изображения путем генерации каждого пикселя случайно, с помощью присвоения ему значения 0 (черный цвет) или 1 (белый цвет). Процедурный шум – это особый шум, который генерируется с помощью программного кода. Например, при создании двухмерной текстуры методом процедурного шума, цвет каждого пикселя картинки генерируется при помощи специальных алгоритмов и функций. Самым известным шумовым алгоритмом является шум Перлина (Perlin’sNoise). Пример работы шума Перлина приведен на рисунке 2.
Рисунок 2 – Пример работы шума Перлина
Алгоритмы, основанные на шуме, широко применяются в областях, связанных с компьютерной графикой, и часто используются для генерации текстур и при создании сложных трехмерных графических объектов (огонь, облака, туман и т.д.). Шум Перлина также применяется для генерации карт местности.
Итак, для реализации было выбрано 3 алгоритма: алгоритм Diamond-Square, Fault алгоритм и шум Перлина. Каждый алгоритм был реализован таким образом, чтобы его можно было использовать как для генерации двумерной текстуры для последующего импорта в движок, так и для последующего построения ландшафта на основе ProceduralMeshComponent. Для сохранения текстуры в изображение формата .png использовалась размещенная в свободном доступе библиотека stb_write_image
Алгоритм Diamond-Square – алгоритм разделения, строящийся на сетке размера 2n + 1 . Он является двумерной реализацией алгоритма midpointdisplacement, в каждой итерации которого высчитывается значение высоты средней между данными точками.
Выбор этого алгоритма обоснован интересными результатами при простой реализации.
Кроме того, если задать достаточно большие значения высот угловым точком, возможно получить возвышения на краях полученной карты, тем самым визуально создавая ее границы.
В качестве входных параметров используются следующие:
- intsize;
- floatheight.
В случае генерации изображения в качестве size передается его размер. В случае использования ProceduralMeshComponent число полигонов по вертикали или по горизонтали. В случае, если size ≠ 2n + 1, размер пересчитывается таким образом, чтобы удовлетворять этому условию.
height определяет максимальное значение, которое могут принять угловые точки базовой сетки. Это значение также используется для генерации случайного числа, которое прибавляется к среднему значению угловых точек на каждом шаге.
Результаты.
Методы реализации алгоритмов процедурной генерации в трехмерной графике.
Карты высот - это, по сути, просто большие двумерные массивы чисел в данном диапазоне, которые представляют высоту земли в данной точке. Например, карта высот с маленькой «горой» в середине может выглядеть так, как показано в формуле 1.
, ,
, (1)
,
Одним из распространенных способов визуализации карт высот является превращение их в полутоновые изображения с одним пикселем на число, с черными пикселями для наименьшего значения в диапазоне карты и белым для самого высокого.
Это удобно, потому что можно также написать некоторый код для чтения изображений, а затем использовать любой графический редактор для рисования собственных карт высот вручную.
Следует начать с написания нескольких функций, которые будут скрывать внутренние детали того, как реализованы карты высот:
(defn make-heightmap [exponent]
(let [resolution (+ 1 (Math.pow 2 exponent))]
(l (+ "Creating " resolution " by " resolution " heightmap...")) (defheightmap
(new Array (* resolution resolution))) (set! heightmap.resolution resolution) (set! heightmap.exponent exponent) (set! heightmap.last (- resolution 1)) (zero-heightmapheightmap)))
«make-heightmap» берет экспоненту и создает карту высот. По определенным причинам, которые станут понятны позже, карты высот должны быть квадратными, и у них должно быть 2n + 1 строк и столбцов. Это означает, что можно создавать карты высот таких размеров, как 3×3, 5×5, 9×9, 17×17, 33×33 и т.д. Таким образом, функция просто использует n и создает массив правильного размера.Далее создается новый массив (1- мерный) и также сохраняется несколько фрагментов дополнительных данных для дальнейшего использования. «last» - это индекс последней строки / столбца, поэтому для массива 3×3 это будет 2.Также необходима небольшая функция регистрации:
(defn l [v]
(console.log v))
Нужно обнулить карту высот, с помощью функции:
(defn zero-heightmap [heightmap]
(do-times iheightmap.length (set! (agetheightmapi) 0.0)) heightmap)
«zero-heightmap» перебирает числа от 0 до «heightmap.length» иустанавливает каждый элемент в 0.0.
Теперь, когда есть возможность создать карту высот, необходимо прочитать ееэлементы:
(defmacroheightmap-get [hm x y]
`(aget ~hm (+ (* ~y (.-resolution ~hm)) ~x))) (defnheightmap-get-safe [hm x y]
(when (and (<= 0 x hm.last) (<= 0 y hm.last))
32
(heightmap-gethm x y)))
«heightmap-get» выполняет задачу по переводу мыслимых человеческих координат x и y в индекс в одномерный массив. Это не особо быстро.«heightmap-get-safe» - это версия «heightmap-get», которая выполняет проверку границ и возвращает «nil», если запрашивается что-то вне диапазона. Javascript вернет «undefined», если запросить несуществующий индекс, но поскольку массив хранится как одна большая строка данных, использование слишком большого значения y фактически «обернется» к следующей строке, поэтому безопаснее просто проверить это явно.
Конечно, также необходимо иметь возможность устанавливать значения в картевысот:
(defmacroheightmap-set! [hm x y val]
`(set! (heightmap-get ~hm ~x ~y) ~val))
Также необходимо иметь возможность «нормализовать» массив. В ходе работы алгоритма возможно, что значения станут меньше 0,0 или больше 1,0.
Нужно, чтобы карты высот содержали только значения от нуля до единицы, поэтому вместо изменения алгоритма можно просто перебрать массив в конце и «сжать»
диапазон до 0 и 1 (или «растянуть» его, если он заканчивается раньше):
(defn normalize [hm]
(let [max (- Infinity) min Infinity]
(do-times ihm.length (let [el (agethmi)]
(when (< max el) (set! max el)) (when (> min el) (set! min el)))) (let [span (- max min)]
(do-times ihm.length (set! (agethmi) (/ (- (agethmi) min)
span)))))) чтобы закончить генерацию, необходимо выполнить итерацию, чтобы можно было заполнить оставшиеся значения постепенно уменьшающимися квадратами.
Квадрат 3×3 является базовым случаем, потому что его углы будут заполнены в самом начале, а края и средняя точка будут заполняться постепенно. Достаточно просто вызывать функцию смещения с верхними / нижними / левыми / правыми значениями, определяющими квадрат.
Для реализации процедурной генерации карт местности необходимо рассмотреть алгоритм рисования разнообразных изображений, используя небольшое количество заранее определенных параметров.
Заранее предопределено, что в сгенерированных изображениях будут использоваться такие элементы земной поверхности, как:
- объекты суши и воды;
- объекты береговой линии;
- объекты рек;
- объекты водоемов;
- объекты возвышенностей и низин;
- объекты гор.
Важно учитывать также, что созданные таким образом карты могут быть использованы в трехмерных приложениях (например, приложения для симуляции или игры). Это упрощает задачу создания местности для таких проектов, но требует точной настройки, так как местность должна выглядеть наиболее реалистично и правдоподобно.
Данный алгоритм должен основываться на гибкой структуре данных, с помощью которой можно будет обеспечить оптимальный процесс генерации карт местности.
Эта структура должна удовлетворять основным требованиям:
- структура должна предоставлять возможность быстрого и легкого считывания информации, которая требуется для построения изображения;
- предоставлять возможность быстрой навигации по области генерации изображения;
- предоставлять возможность генерации сложных геометрических и картографических объектов, например, реки, водоемы, дороги, острова;
- предоставлять возможность дополнительных модификаций сгенерированного изображения.
В настоящее время одними из самых распространенных алгоритмов процедурной генерации являются:
1) Метод генерации карт высот («HeightMaps»).
2) Метод с использованием процедурного шума («NoiseFunctions»).
3) Метод генерации плиточной структуры («TileMaps»).
Инструментарий и алгоритмы для реализации макета «Генерация ландшафта с помощью алгоритмов карты высот и шума Перлина». В первую очередь для работы с кодом и скриптами на языке C#, который используется в среде разработки Unity, будет использоваться редактора кода MicrosoftVisualStudio, который официально поддерживается и распространяется бесплатно. Для того, чтобы создать C# скрипт, необходимо кликнуть правой кнопкой мыши в нижней части интерфейса (где отображаются ресурсы проекта, во вкладке «Project») и выбрать опцию «Create -
>C#Script».
Unity - это кроссплатформенный игровой движок, разработанный UnityTechnologies, впервые анонсированный и выпущенный в июне 2005 года на Всемирной конференции разработчиков AppleInc. как эксклюзивный игровой движок для Mac OS X. С 2018 года движок был расширен для поддержки более 25 платформ. Этот движок можно использовать для создания трехмерных, двумерных, виртуальных приложений и приложений с дополненной реальностью, а также для моделирования и других видов проектов. Этот движок используется также в отраслях, не связанных с видеоиграми, таких как кино, автомобилестроение, архитектура, инженерия и строительство.
Unity - кроссплатформенный движок. Редактор Unity поддерживается в Windows и macOS, при этом тестовая версия редактора доступна для платформы Linux, в то время как сам движок в настоящее время поддерживает создание приложений для более чем 25 различных платформ, включая мобильные, настольные, консоли и платформы для виртуальной реальности. Списокподдерживаемыхплатформ: iOS, Android, Tizen, Windows, Mac, Linux, WebGL, PlayStation 4,PlayStation Vita, Xbox One, 3DS;Oculus Rift, Google Cardboard, Steam VR, PlayStation VR, Gear VR, Windows Mixed Reality, Daydream,
Android TV, Samsung Smart TV, TVOS, Nintendo Switch, Fire OS, Facebook Gameroom, ARKitотApple, ARCoreот Google, Vuforia, Magic Leap.
По состоянию на 2018 год Unity использовалась для создания примерно половины мобильных игр на рынке и 60 процентов контента дополненной реальности и виртуальной реальности, включая примерно 90 процентов на 19развивающихся платформах дополненной реальности, таких как «MicrosoftHoloLens», и 90 процентов контента
«SamsungGear VR». Технология Unity является основной для большинства приложений виртуальной реальности и дополненной реальности, Unity по-своему «доминирует в бизнесе виртуальной реальности».
«UnityMachineLearningAgents» - это программное обеспечение с открытым исходным кодом, благодаря которому платформа Unity подключается к программам машинного обучения, включая «GoogleTensorFlow». Используя етод проб и ошибок в агентах машинного обучения Unity, виртуальные персонажи используют подкрепляющее обучение для создания креативных стратегий в реалистичных виртуальных ландшафтах.
Программное обеспечение используется для разработки роботов и автомобилей с автоматическим управлением.
Реализация макета «Генерация ландшафта с помощью пакета Gaia». Для начала работы необходимо установить среду разработки Unity последней версии, после чего создать проект и импортировать в него пакет инструментов под названием «Gaia» (далее Gaia), который будет использоваться для реализации данного макета, в соответствии с рисунком 55. Установка Gaia создаст следующую структуру папок: 1. «3rd PartySamplers»
- пакеты сторонних производителей, используемые в работе данного пакета; 2. «Data» - файлы данных по умолчанию и ресурсы; 3. «Documentation» - документация Gaia, такая как руководства по настройке и работе пакета; 4. «Dependencies» - зависимости Gaia - могут быть удалены после установки; 5. «Localization» - настройки локализации Gaia; 6.
«Masks» - образцы масок, используемые объектами «spawners» (объекты, используемые для создания и генерации); 7. «Materials» - материалы, используемые для предварительного просмотра сетки и освещения; 8. «Post FX» - некоторые предварительно настроенные параметры «Post FX»; 9. «Prefabs» - заготовки, используемые объектами
«spawners»; 10. «Scripts» - исходный код Gaia; 11. «Stamps» - штампы Gaia, классифицированные по типу штампа [5].
Запуск процесса генерации поверхности земли, нажав на кнопку «PlaySession» в окне настройки «SessionManager».
В разделе «TerrainUtilities», добавляем объекты на сгенерированный каркас ландшафта. После в иерархии проекта используем «Spawner» объекты. Данные объекты позволяют генерировать соответствующие объекты на поверхности ландшафта, например,
«CoverageTextureSpawner» создает текстуры для ландшафта, как показано на рисунке 3.
Рисунок 3 – Поверхность после генерации текстур
«CoverageTreeSpawner» позволяет генерировать деревья на всей поверхности ландшафта. Для создания макета-прототипа, демонстрирующего принцип работы процедурной генерации поверхности ландшафта с помощью шума Перлина, необходимо создать проект Unity, после чего открыть его и создать в нем объект типа «Terrain». Для генерации объединенной поверхности и всех сгенерированных высот в единый объект используется функция «GenerateTerrain».
Для демонстрации достаточно запустить проект и установить значение переменной
«Scale» в значение 5, эта переменная определяет плотность высот, в соответствии с рисунком 4 [7].
Рисунок 4 – Вид сгенерированного участка при «Scale» = 5
Алгоритмы генерации карты высот, шум Перлина, метод с использованием плиточной структуры и мозаики Вороного, профессиональный пакет для генерации
«GAIA» - эти средства позволяют создавать ландшафтный дизайн, использовать эту возможность при проектировании и реализации мультфильмов, компьютерных игр.
Обсуждение.
Алгоритмы процедурной генерации можно использовать даже для создания музыки. Алгоритмическая композиция - это метод написания с помощью алгоритмов.
Такие алгоритмы обычно классифицируются по различным методам программирования, которые в них используются. [6]. Примером такого инструмента служит пакет для платформы разработки Unity под названием Gaia, для создания макета [7].
Для установки данного движка необходимо скачать дополнительное программное обеспечение под названием «UnityHub», в соответствии с рисунком 5.
Рисунок 5 – Окно управления проектами
После запуска движка перед пользователем появится окно редактирования проекта, и базовый интерфейс, который состоит из множества частей, в соответствии с рисунком 6.
Рисунок 6 – Окно редактирования проекта и базовый интерфейс
По центру интерфейса расположено окно сцены, на нем можно размещать объекты сцены и управлять их положением, двигать их, уничтожать, в соответствии с рисунком 7.
Рисунок 7 – Окно сцены
Инструментарий Gaia.Gaia– это система, которая позволяет быстро и точно создавать великолепные ландшафты и сцены. Gaia позволяет: 1. определять и управлять ресурсами сцены; 2. создавать и терраформировать местность, отмечая горы, холмы, озера и другие объекты; 3. использовать свои произвольные ресурсы для текстурирования и процедурной генерации местности; 4. использовать сторонние инструменты и расширения для улучшения среды с помощью системы «GaiaeXtension» 5. осуществлять резервное
копирование, восстановление и совместное использование с помощью диспетчера сеансов, в соответствии с рисунком 8.
Рисунок 8 – Структура пакета Gaia Заключение.
Алгоритмы генерации карты высот, шум Перлина, метод с использованием плиточной структуры и мозаики Вороного, профессиональный пакет для генерации
«GAIA» - эти средства позволяют создавать ландшафтный дизайн, использовать эту возможность при проектировании и реализации мультфильмов, компьютерных игр. Итак, для реализации было выбрано 3 алгоритма: алгоритм Diamond-Square, Fault алгоритм и шум Перлина. Алгоритмы процедурной генерации можно использовать даже для создания музыки. Алгоритмическая композиция - это метод написания с помощью алгоритмов.
Такие алгоритмы обычно классифицируются по различным методам программирования, которые в них используются. Использованы методы реализации алгоритмов процедурной генерации в трехмерной графике. Примером такого инструмента служит пакет для платформы разработки Unity под названием Gaia, для создания макета.
ЛИТЕРАТУРА
[1] Browne C. Evolutionary Game Design. - Berlin: Springer, 2011. 122 P.
[2] Togelius J. Procedural Content Generation in Games: A Textbook and an Overview of Current Research / J. Togelius N. Shaker M. Nelson. - Berlin: Springer, 2014. 142 P.
[3] Pereira L.T., Prado P.V.D.S., Lopes R.M., Toledo C.F.M.Procedural generation of dungeons’ maps and locked-door missions through an evolutionary algorithm validated with players. Vol. 18015 October 2021. № 115009
[4] Adams, C., Parekh, H., Louis, S.J.Procedural level design using an interactive cellular automata genetic algorithm (2017) Proceedings of the Genetic and Evolutionary Computation Conference Companion, pp. 85-86.
[5] Jonathan Roberts, «Learning-based procedural content generation», 2014, 15 P.
[6] https://en.wikipedia.org/wiki/MASSIVE_(software) [7] https://habr.com/company/unigine/blog/167075/
Алия Кинтонова, т.ғ.к., доцент, Л.Н. Гумилев атындағы Еуразия ұлттық университеті, Астана, Қазақстан, [email protected]
Галимжан Габдрешов, п.ғ.к., директор SEZUAL МҚБ, Астана, Қазақстан, [email protected]
Айгерим Кисманова, т.ғ.к., аға оқытушы, С. Сейфуллин атындағы Қазақ агротехникалық университеті, Астана, Қазақстан, [email protected]
Қанибек Сансызбай, PhD, қауымдастырылған профессоы, Логистика және көлік академиясы, Алматы, Қазақстан, [email protected]
ГЕНЕРАЦИЯ АЛГОРИТМДЕРІ АРҚЫЛЫ ЛАНДШАФТТЫ ЖОБАЛАУ Аңдатпа. Мақалада үш өлшемді графикадағы процедуралық генерациялау технологияларын талдау нәтижелері көрсетілген. 3D графикасында процедуралық генерациялау алгоритмдерін талдау нәтижелері де көрсетілген. Мақалада Unity әзірлеу ортасының ерекшеліктері көрсетілген. Перлиннің биіктік картасын және шу алгоритмдерін және Unity әзірлеу ортасында Gaia бумасын пайдаланып орналасу арқылы жер бедерін құру көрсетілген. Ландшафттық дизайнды жобалаудың процедуралық алгоритмдерін генерациялау үшін Unity, Microsoft Visual Studio пайдаланылды және C#
бағдарламалау тілі зерттелді. Процедуралық генерациялау алгоритмдерін тіпті музыканы жасау, шынайы әлемді имитациялайтын виртуалды әлемді генерациялау үшін де қолдануға болады (мысалы, ағаштары, шөптері, желдері, шулары, ойыстары, өзендері, көлдері, үйлері және тіпті жануарлары бар арал).
Түйінді сөздер. Unity әзірлеу ортасы, процедуралық алгоритмдер, биіктік картасы, Perlin шуы, 3D графикасы, 3D примитивтері, алгоритмдік композиция.
Aliya Kintonova, candidate of technical sciences, associate professor, L.N. Gumilyov Eurasian National University, Astana, Kazakhstan, [email protected]
Galymzhan Gabdreshov, сandidate of pedagogical sciences, director SEZUAL public Association of disabled people, Astana, Kazakhstan, [email protected]
Aigerim Kismanova, candidate of technical sciences, senior lecturer, Kazakh Agrotechnical University named after. S. Seifullin, Astana, Kazakhstan,
Kanibek Sansyzbay, PhD, associate professor, Academy of logistics and transport, Almaty, Kazakhstan, [email protected]
LANDSCAPE DESIGN WITH GENERATION ALGORITHMS
Abstract. The paper reflects the results of the analysis of procedural generation techniques in three-dimensional graphics. The results of analysis of procedural generation algorithms in three-dimensional graphics are also demonstrated. The article shows the capabilities of Unity development environment. The generation of landscape with the help of Perlin's elevation map and noise map algorithms and with the help of Gaia package in Unity development environment is shown. To implement the generation of procedural algorithms for landscape design, Unity, Microsoft Visual Studio were used and the C# programming language was studied. Procedural generation algorithms can also be used even to create music, to generate a virtual world that simulates the real world (e.g. an island with trees, grass, wind, noise, hollows, rivers, lakes, houses and even animals).
Keywords. Unity development environment, procedural algorithms, elevation map, Perlin noise, 3D graphics, 3D primitives, algorithmic composition.
*****************************************************************************