Сообщество Империал: [Tutorial] Создание LOD'ов для 3D моделей - Моддинг Total War: Rome II (Rome 2 Total War) - Total War: Rome II (Rome 2: Total War) - Библиотека - Сообщество Империал

  • Поиск
  • Законы
  • Сообщество
  • Репутация
  • Экономика
  • Больше

Информация об авторе

  • Автор: Avetis Kalustyan

Информация по статье

  • Добавлено: 27 Янв 2016, 10:40
  • Обновлено: 27 Янв 2016, 10:53
  • Просмотры: 686

Дополнительно

Репутация: 2
[Tutorial] Создание LOD'ов для 3D моделей

Описание: автоматическая генерация "лодов"
Урок достаточно "углублённый", касается уже самых "глубоких" этапов графического мододелания, но я надеюсь, что кому-нибудь будет полезен.

Что такое, зачем нужно?

Цитата

LOD (англ. Levels Of Detail — уровни детализации) — приём в программировании трёхмерной графики, заключающийся в создании нескольких вариантов одного объекта с различными степенями детализации, которые переключаются в зависимости от удаления объекта от виртуальной камеры. Другой метод заключается в использовании одной основной, «грубо приближенной», модели и нескольких внешних надстроек к ней. Каждая последующая надстройка к основной модели дополняется элементами детализации пропорционально номеру надстройки. То есть на самом большом расстоянии будет отображаться единственная главная модель объекта. С приближением же последнего к камере игрока к конвейеру отрисовки будут последовательно подключаться последующие надстройки деталей.

Смысл приёма заключается в том, что отображать высокодетализированные объекты, находящиеся на большом расстоянии от виртуальной камеры, нецелесообразно, затратно по вычислительным ресурсам. Использование LOD способно существенно снизить требования к ресурсам компьютера при выводе графики на экран, будь то рендеринг или вывод в реальном времени[1]. С использованием LOD, впрочем, связан широко распространённый баг, при котором на ближних планах отображается низкополигональная модель объекта.


Суть - ясна, необходимость - очевидна.
Без лодов любая мало-мальски сложная модель может вызвать значительное провисание FPS. Особенно в таких играх, как серия TW, где количество "важных" моделей на тактической карте исчисляется многими тысячами.

Создание одной лишь модели можно считать достаточно сложным и затратным по времени процессом. Добавим к этому создание текстурной развёртки, "риг" (прикрепление вершин модели к костям виртуального скелета персонажа) - и получаем большое количество сил и времени.
Если делать лоды вручную, то процессы "ухудшения" модели, развёртки и рига необходимо повторять для каждой модели, что ещё сильнее увеличит время работы.

Поэтому резонно искать автоматизированные средства генерации лодов.




Выбор инструмента

Для примера возьмём такую модель (слегка переделанная кирасса сакских катафрактов из Рима-2, адаптированная под модели из Аттилы, скелет - стандартный для Аттилы/Рима-2):





Как видим в левом верхнем углу, модель имеет достаточно немалое количество полигонов - 1230.
В этом уроке мы упускаем детали создания рига и текстурирования. Данная модель уже готова к созданию лодов.

Варианты решения

Платные решения мы отбрасываем сразу. Поверьте, они того не стоят и я это докажу на примере.

1) OpenBRF - редактор, хорошо известный по моддингу M&B. В него можно импортировать модель (заранее экспортировав её в OBJ-формат) и сделать набор лодов одним нажатием.
Минусы критичны:
- нет поддержки рига
- карта текстур обычно "слетает" и для лодов её нужно делать заново
- лоды, зачастую, слишком упрощены и от исходной модели не остаётся и следа (нет возможности контролировать процесс "упрощения" моделей)

Вердикт: не годен


2) LOD creator script for 3Ds Max
Приятное лёгкое решение - скрипт для Макса. Работает быстро, есть возможность контролировать степень потерь для лодов. Сохраняет текстурную карту и даже риг (последний, впрочем, частенько "слетает").
Всё хорошо, но сложные модели страдают рандомным флипом нормалей в некоторых полигонах. Это выглядит примерно так, что некоторые полигоны принимают текстуру с "обратной стороны".
Чтобы долго не разглагольствовать, выглядит этот кошмар вот так:



Вердикт: не подходит для большинства моделей


3) Решение, которое меня устраивает абсолютно - плагин Simplygon.
По указанной ссылке можно скачать плагин для 3Ds Max / Maya бесплатно. Всё, что от вас потребуется - регистрация на сайте (авторизация проходит при первом запуске плагина).
Совершенно уникальное решение, SDK (платная версия со своей собственной средой разработки) версией которого пользуются многие разработчики игр.
В нашем случае, потребуется лишь немногая часть того, что умеет Simplygon. О процессе работы - далее.

Вердикт: то, что надо!




Генерируем LOD'ы

1) Выбираем нашу модель, переходим во вкладку "Utilities", намаем кнопку "More", в списке выбираем "Simplygon" и нажимаем "ОК"



2) В появившемся свитке снимаем галочку "Silent mode" и нажимаем на кнопку "Launch Simplygon"



3) Открывается окно подпрограммы "Simplygon"
Для быстрого решения поставленной задачи переходим в правой колонке в закладку "Quick Start", выбираем пункт "LOD chain" ("цепочка ЛОДов"), отмечаем необходимый уровень упрощения моделей (в нашем случае это 71, 50 и 36 процентов от исходного количества полигонов), далее нажимаем "Click me to Proceed"



4) В процессе работы вы увидите кнопку "Download" ("Скачать"). Прелесть в том, что вычисления происходят в "облаках", то есть не зависят от вашего компьютера, отсюда такая скорость таких сложных вычислений. В любом случае, вы можете поставить галочку "Download automatically in future" (скачивать автоматически в будущем). Пока этот пункт не выбран, нажимаем "Скачать" вручную.



5) По окончании процесса нажимаем на кнопку "Import"



6) После, закрываем Simplygon. При этом программа спросит "импортировать ли сгенерированные ЛОДы в 3Ds Max", нажимаем "Yes"



7) Теперь у нас есть наша исходная модель + 3 её лода. Их необходимо переименовать. Правила именования моделей в серии TW: окончания должны иметь вид _lod1 (исходная модель), _lod2, _lod3 и _lod4.

8) Тут же, в списке элементов сцены вы сможете обнаружить три сторонних объекта с именами Object#. Это копии корня сцены, появившиеся в процессе создания лодов. Не будем вдаваться в подробности, их нужно просто удалить.



9) Все четыре ЛОДа готовы, их текстуры впорядке, риг костей сохранён. Далее в ход вступают нюансы экспорта моделей для данной конкретной игры, что за рамками данного урока.
Для примера я просто разместил лоды рядом. Обратите внимание на качество упрощённых моделей - Сразу не так просто увидеть, что последняя почти в 3 раза менее детализирована. Отчасти, в этом заслуга текстур, но львиная доля зависит именно от Simplygon.






Вот так всё быстро и просто. Даже подозрительно :02:

Надеюсь, будет полезно. Удачного моделирования
Copyright © «Империал». Копирование информации с этой страницы возможно только при указании прямых ссылок на эту страницу.




      Стиль:
        05 Дек 2016, 21:44
    © 2016 «Империал». Условия предоставления. Ответственность сторон. Рекрутинг на Империале. Лицензия зарегистрирована на: «Империал». Счётчики