Создание трехмерной модели местности в Unity 3D

Статья подготовлена специально для конференции Innotech - http://conference.msa.pstu.ru/

Авторы: Галкин Никита и Ромин Евгений.

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

Помимо симуляторов и тренажеров, 3D модели различных ландшафтов играют немаловажную роль в ГИС (геоинформационных системах) и различного рода игровых приложения, где моделируется окружающая 3D обстановка, которая придает всем этим приложениям не только увлекательность при использовании, но и наглядность. Таким образом существует необходимость в максимально доступном и простом способе моделировать ландшафты и местности с различными рельефными особенностями. В этой статье детально рассмотрен пример по созданию высоко детализированного ландшафта в Unity3D – мульти-платформенном инструменте для разработки трехмерных приложений.

Рис 1. Интерфейс проектирования ландшафтов в Unity3D

Стандартный процесс моделирования ландшафта в Unity выглядит следующим образом: [1]
  • создание и задание основных параметров (высота, длинна, ширина) для пустого объекта Terrain (выглядит в виде прямоугольной плоскости)
  • создание карты высот, рельефа и его обработка при помощи инструментов скульптурного моделирования (обрабатывается исключительно из видения вашей конечной цели)
  • нанесение текстур (могут быть использованы как базовые текстуры, так и созданные в различных графических редакторах; наносить текстуры рекомендуется после создания конечного рельефа, т.к. в противном случае можно получить деформированные текстуры)
  • добавление различных источников света (глобальных и локальных) и создание неба (в контексте Unity именуется, как SkyBox)
  • проработка деталей, особенностей местности и объектов (деревья, трава, вода, камни и т.д.)
  • расстановка камер (позволяет создавать визуальные эффекты или принуждает пользователя смотреть так, как хочет создатель приложения)

Методы оптимизации при работе с ландшафтами в Unity3D

Unity является довольно простым движком в освоении, а главное – бесплатным. Однако для работы с большими сценами и большим количеством объектов необходимо иметь достаточное количество вычислительных ресурсов. Поэтому с точки зрения работы с 3D моделями ландшафтов, необходимо уделять вниманию вопросам производительности и оптимизации этих моделей.

Для уменьшения количества полигонов применяется алгоритм редукции полигонов. Редукция - процесс упрощения 3D модели путем уменьшения количества полигонов. Принцип работы метода заключается в замещении группы полигонов одним, наиболее близким к исходной группе по расположению вершин. Большинство 3D редакторов имеют возможность задавать интенсивность редукции, что позволяет выбрать нужное соотношение между уровнем проработки модели и экономией вычислительной мощности.[2]

02 reduction

Рис. 2 Использование инструмента редукции полигонов для 3D модели ландшафта

К достоинствам данного метода относят легкость использования и высокая скорость обработки. Однако недостатками является искажение модели при сильном или неправильном применении метода и необходимость перерисовки текстур, если на первичную модель уже была наложена текстура. На изображениях видно, что количество полигонов уменьшилось в разы, но при этом детальности картинки осталась практически нетронутой, поэтому этот метод можно смело применять на практике, решая задачи по экономии вычислительных ресурсов.

Также при моделировании ландшафта важно учитывать, что на нем могут присутствовать различные элементы (камни, деревья, здания и т.п.), которые будут придавать уникальность моделируемой местности. Процесс отрисовки каждого элемента это трудоемкая задача для компьютера. Occlusion Culling – функция Unity, которая отключает отрисовку объектов, невидимых камерой или заслоняемых другими объектами в данный момент времени. [3]

03 Occlusion-Culling

Рис.3 Использование инструмента Occlusion Culling для отключения объектов, которые в данный момент не видны основной камере

При создании ландшафта местности одним из ключевых вопросов является освещение, потому что при помощи света и тени можно скрыть недостатки сцены после оптимизации. Свет используется для освещения объектов и создания нужного визуального настроения. Unity позволяет моделировать разные типы источников света: солнце, фонари, горящие костры и прочее.

К примеру, для создания «Солнца» обычно используется инструмент Direction Light, так как он влияет на все поверхности в сцене. Особенностью Direction Light является то, что для своей работы этот инструмент потребляет мало ресурсов графического процессора. Для создания других источников света, к примеру, уличных, автомобильных фонарей применяют инструмент Point Light, так как он идеально повторяет их естественный свет. Но данный тип освещения потребляет наибольшее количество ресурсов графического процессора.

 

04 Light

Рис. 4 Принцип работы Point и Direction Light

Не менее важным вопросом при моделировании сцены является создание неба, которое было бы не только реалистичным, но и потребляло наименьшее количество ресурсов. Для создания неба в Unity существует специальный инструмент SkyBox, который представляет из себя обертку всей сцены и является ничем иным, как панорамной фотографией неба в определенном состоянии. 

05 SkyBox

Рис. 5 Пример работы инструмента SkyBox для моделирования неба

Используя вышеописанные методы создания и оптимизации 3D ландшафтов, была создана тестовая сцена для интерактивного приложения WitchCraft в программном пакете Unity.

Рис. 6 Конечный результат моделирования

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

  • операционная система: OS X Maverics
  • процессор: 1,3 GHz Intel Core i5 Haswell
  • оперативная память: 4 Gb 1600 Ghz DDR3
  • видеокарта: Intel HD 5000 1024 Mb

07 results

Рис. 7 Ресурсоемкость тестовой сцены при заданной конфигурации

На этапе тестирования, приложение показало хорошие показатели FPS, что говорит о том, что местность смоделирована «экономно», несмотря на большую площадь с разнообразным рельефом и достаточно большое количество объектов.

Описанный подход к созданию и оптимизации трехмерной модели местности может быть применен для разработки интерактивных приложений на базе Unity3D для различного типа приложений (симуляторы, ГИС-системы и интерактивные игровые приложения), что делает его универсальным и полезным.

Список Литературы

  1. «Unity 3D Basic Info and Tutorials» http://www.csit.carleton.ca/~arya/ds4/etc/Unity_Toturial.pdf
  2. «Grome Terrain Modeling with Ogre3D, UDK, and Unity3D» http://it-ebooks.info/book/2036/
  3. «Occlusion Culling» http://unity3dscripts.16mb.com/translate/occlusion/01/
Яндекс.Метрика