December 17, 2024

Моделирование трим-листа

Краткий ликбез

Что такое трим-лист и зачем он нужен?

Трим-листы (полоски), текстуры/материалы (набор текстурных карт) такие же как и все остальное, но вытянутые в одном направлении как правило горизонтальном, на которых умещается все что нужно для декорирования модулей и прочих объектов в сцене:

- узоры, повреждения, какие-либо элементы, характерные для визуального стиля сцены и все это используется множество раз с целью снизить количество отрисовок (draw calls).

И хотя методы разработки постоянно совершенствуются, выпускаются новые пакеты, дающие преимущества, упрощающие какие-либо аспекты создания таких ассетов, тенденция идет к увеличению автоматизма через процедурную генерацию.

Однако самая суть методики в своей сути не изменилась.

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

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

Давайте рассмотрим некоторые подходы.

Алгоритм довольно прост:

  • создаете плоскость (квадрат, это наша низкополигональная версия трим-листа, который дальше пойдет на покраску)
  • делаем UV-мапинг
  • копируете эту плоскость
  • из копии моделируете сложные формы (это наша высокополигональная версия)
  • экспортируете исходную плоскость (низкополигональную плоскость)
  • экспортируете высокополигональную версию с деталями
  • запекаете с высокополигональной модели на низкополигональную плоскость карту нормалей
  • запекаете с готовой карты нормалей все остальные карты
  • переходите к текстурированию (покраске)
  • экспортируете нужные вам карты (текстуры)
  • применяете их движок к специально подготовленному материалу
  • одну из карт из готового набора применяете в 3d-редакторе в качестве визуального ориентира для UV-мапинга отдельных деталей модулей под этот трим-лист
  • выгружаете подготовленный таким образом модуль из 3d-редактора в движок и применяете к нему материал с трим-листом

Вот так вкратце выглядит самый классический подход.

Давайте рассмотрим картинки, немного визуализирующие этот процесс:

Обыкновенная плоскость - квадрат. Квадратная плоскость - квадратные текстуры
UV-мапинг квадратной плоскости
Копирование плоскости с целью создания высокополигональной модели,
собственно самого трима
Из элементарной плоскости, копии, которую создали на предыдущем шаге, начинаем формировать сложные модели с таким дизайном, который нам требуется.

Это обеспечивается общим дизайном локации и контролируется через артдирекшн

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

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

Если вы создадите даже очень сложный орнамент или рисунок модели, но при этом оставите ее без сглаженных кромок или сабдива, то ничего (или почти ничего) не спечется.

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

Собственно, экспорт я не думаю, что надо иллюстрировать. Единственное, что стоит отметить, если вы работает в сабстенс пейнтере, то в разных ситуациях нужно задуматься о формате экспорта. Я, как правило, в штатной ситуации использую формат *.obj

Однако зачастую возникает ситуация в *.fbx (например, когда нужно передать информацию о мультикомпонентном материале или вертекс пейнте).

Результат запечки. Здесь я использую другой пример из своего набора.

Здесь вы видите исходную плоскость с запеченным набором текстур,
в первую очередь - это карта нормалей
Процесс покраски трим-листа. В данном примере он совмещен с тайловым материалом,
но суть от этого не меняется.

Здесь вы видите две полоски сверху с нужным для моего проекта дизайном. В результате
эти тримы будут выполнять роль карнизов, навесов и прочих подобных областей зданий
А это уже типичный пример модуля с примененным на него тримом
В итоге, чтобы применить трим-лист или несколько трим-листов на данный модуль
следует поработать с его UV-координатами.

Применяем материал с текстурой базового цвета на модуль, включаем UV-редактор, накладываем эту текстуру в качестве шаблона, и начинаем редактировать отдельные части модели в зависимости от того, какой рисунок трим-листа вы хотите положить на эту область
Результат обработки модуля на трим-лист
Еще один пример, к которому применен комплексный материал, у которого есть как тайловая часть, так и тримовая: 1 - тайловый материал, 2 - трим-лист
А это уже результат работы в движке с специфическим материалом
на базе тримовых текстур - в префабе
Непосредственно в сцене
Вот так выглядит настроенный материал трим-листа. Как видите - все те же полоски

Все то, что я описал выше можно условно отнести к классическому методу создания трим-листа через моделирование и запечку с последующим текстурированием.

Помимо этого метода есть масса иных техник, например процедурная разработка материала (набора текстур) в сабстенс дизайнере.

Там работает все по принципу создания карты дисплесмента, которая по сути и заменяет процесс моделирования, а затем вы начинаете красить полученный результат подключая цветовые аспекты и прочие оптические свойства.

Но более подробно сейчас я уже не буду рассматривать процедурную генерацию. Это также отдельная статья.

Напоследок хочу добавить, что на моем курсе все эти методы рассматриваются очень подробно и со всех сторон. Статья же - это галопом по Европе.

Описанное выше является частью производственного цикла под названием Environment Art, поэтому если желаете освоить эти методы, а также многое-многое другое, то приходите и будем учиться :)