Как создать реалистичное 3D-изображение дуба
Квентин Рапико превратил в рабочий процесс создание растительности, который позволяет ему добиваться естественного баланса между корой и листьями с помощью SpeedTree, Maya, Substance 3D Designer и Unreal Engine.


Введение
Bonjour! Я Квентин Рапико, французский цифровой садовник — или художник по растительности — который в настоящее время заканчивает пятый и последний год обучения. Моя страсть — создавать все виды растительности, будь то реалистичная или стилизованная, для игровых движков текущего и следующего поколения. Каждый проект представляет собой уникальный набор задач, и решение этих проблем — то, что меня больше всего увлекает.
В этой статье я расскажу о своём рабочем процессе по созданию растительности, о техниках, которые я разработал за годы работы, и о шагах, которые я предпринял для создания высокодетализированного дуба, готового к игре. Моя цель — предоставить техническую информацию и, надеюсь, вдохновить других художников, стремящихся развить свои навыки в создании листвы.

Цели проекта
В этом проекте и в будущих моих целью было создать красивый и реалистичный рендер, который при этом был бы готов к использованию в игре. Я решил не использовать рабочий процесс Nanite, потому что хотел сначала освоить эту технику. В процессе нужно учитывать множество элементов и ограничений.
Я решил смоделировать дуб, потому что это одно из самых интересных деревьев для практики, и оно позволяет мне научиться создавать что-то естественное, но при этом эстетически приятное. Я также добавил несколько уникальных деталей, таких как грибы и корни плюща, потому что дерево в биоме — это не просто дерево, вокруг или на нём всегда происходит много всего. Было бы немного грустно, если бы я создал одинокое дерево.

Используемое программное обеспечение
- SpeedTree (для моделирования и процедурной генерации)
- Maya (для уточнения сетки и LOD)
- Substance 3D Designer (для текстурирования коры и листвы)
- Unreal Engine 5 (для окончательного затенения, эффектов ветра и интеграции в игру)
У меня есть специальный рабочий процесс для создания растительности, который включает в себя SpeedTree, Substance 3D Designer и Maya. Я начинаю с создания базовой структуры дерева с помощью placeholder листьев, а иногда и вручную нарисованных атласов, чтобы визуализировать то, что мне понадобится. Затем я сосредотачиваюсь на добавлении необходимых деталей и обеспечении того, чтобы дерево выглядело привлекательно с разных ракурсов. После этого я создаю текстурный атлас либо с нуля, либо используя уже существующие атласы из Resources. Перед нанесением текстур я очищаю их в Substance 3D Designer. Перед созданием чего-либо я начинаю с исследования. Исследование играет значительную роль в моём рабочем процессе, поскольку природа часто предлагает прекрасное вдохновение.

Сбор референсов
Часть с референсами имеет решающее значение, потому что всегда лучше начать с существующей формы дерева. Создавая свою доску с референсами, я стремился не собрать сотни фотографий деревьев, а найти небольшое количество интересных и последовательных изображений, думая о том, как каждая часть может быть использована для моего дерева. Я также использовал научные книги, особенно для атласов. У моих родителей есть дуб, и было полезно понаблюдать за ним вблизи, чтобы заметить мелкие детали, например, почему мох растёт в определённых местах или почему дерево выглядит темнее в некоторых местах.
У дерева есть своя история, и хотя здесь я использовал более практичный подход, чтобы отточить свои навыки, я планирую в дальнейшем прорабатывать повествовательный аспект в своей работе.
Баланс между реализмом и художественным стилем для растительности — непростая задача. Иногда, когда я выхожу на улицу и смотрю на деревья, я оцениваю их — но они реалистичны, естественны. Однако в видеоиграх мы не хотим точно воссоздавать реальность; мы хотим её улучшить. Для этого дерева моя задача была похожа на работу садовника: сделать дерево великолепным, а не просто реалистичным, и сделать свою работу как можно более незаметной.


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

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


Затем я создаю карты ветвей для листьев. Для некоторых деревьев эта часть может быть сетками или комбинацией сетки и листьев, но для более пушистого эффекта я предпочитаю использовать карты. Грибы были добавлены с помощью узла сетки. Я смоделировал их в Maya с некоторыми вариациями, создал пять отдельных грибов, развернул UV-развёртку, наложил на них текстуры, а затем собрал в пакет грибов для размещения на дереве. Они не очень детализированы, но достаточно хороши для моей цели рендеринга.
Для плюща я использовал узел декалей сетки, чтобы нанести его вдоль ствола. Чтобы добавить больше объёма, я также разместил на нём несколько карт листьев, чтобы он хорошо выглядел сбоку или крупным планом (не обращайте внимания на топологию корня, это был WIP).


После завершения первой версии дерева я сделал итерацию второй формы с более массивной структурой и несколькими началами стволов. Я предпочитаю эту версию.

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


После того как я окончательно определил форму и структуру, я создал вариации, такие как более старые или молодые версии, сломанные ветви и т. д. В SpeedTree я также запек AO и цвет вершин, чтобы использовать их в движке.
Текстурирование
SpeedTree
После завершения базовой модели я создал атлас текстур, используя аналогичный шаблон, показанному на изображении. Этот метод полезен, потому что он позволяет мне вырезать целые ветви или только средние и мелкие части, поскольку листья не перекрывают средние секции. Мне также нравится реализм этой текстуры, и для меня было большим вызовом воссоздать её.


Как и в моём посте про сосну Abies, я использовал цвет вершин для создания маски, которую затем использовал в Substance 3D Designer. Это экономит время и поддерживает неразрушающий рабочий процесс.

Я добавил тонкие цветовые детали к листьям. Для основы я начал с ресурсов Quixel, но они оказались слишком нейтральными, поэтому я настроил некоторые параметры, такие как запечённый AO в SpeedTree, градиентные вариации на каждом листе, и добавил коричневые цветовые вариации.
Substance 3D Designer
Для ствола я хотел сделать что-то визуально яркое, используя только основной цвет, поэтому я добавил шумовые паттерны для создания более светлых и тёмных областей, улучшая детали высоты на основном цвете. Если вы хотите добиться чего-то уникального для ствола, вы можете разделить текстуру на две части — одну для основания ствола, а другую — для остальной части дерева.


Мой рабочий процесс в Substance 3D Designer позволяет мне быстро выполнять итерации и экспортировать все необходимые карты. Я настроил параметры для извлечения карт шероховатости и подповерхностного рассеивания из основного цвета, хотя предпочитаю использовать для этих карт выделенные текстуры.


Интеграция в Unreal Engine 5
Материалы
Здесь я объясню свой материал растительности и материал ствола. Я использую два основных материала: один для листьев и один для ствола. В будущем я могу объединить их и использовать больше функций материала со статическими переключателями.



Для материала листьев у меня есть опции настройки цвета, такие как градиенты или вариация цвета, с использованием масок вершинного цвета. Я также подготовил маску для подповерхностного рассеивания (SS) и применил её только к листьям, чтобы не влиять на ветви. Кроме того, я включил карты шероховатости и AO в пакет масок.
Для материала ствола у меня есть базовые настройки PBR с контролем AO. Я использовал синий цвет вершин в качестве маски для добавления уникальных текстур коры, например, оранжевых пятен для сосен. Я также включил функцию материала для мха и использовал ту же маску для снежных эффектов, поскольку они применяются к тем же областям.
Чтобы управлять параметрами ветра и сезонными эффектами, я использовал коллекцию параметров, которая полезна для настройки параметров по всей сцене и придания им динамики с помощью Blueprint для таких вещей, как сезонная система.
Освещение
Я начал с базового нейтрального освещения, чтобы проверить нормали и избежать проблем с рендерингом при итерациях по моей сетке (важно проверять в целевом движке, поскольку рендер SpeedTree не является хорошей ссылкой). Затем я добавил атмосферное освещение — всё ещё чёткое и видимое, но с некоторой яркостью, как в осенних условиях или на рассвете. Также я люблю тестировать свои ассеты в образцовой сцене в Unreal и проверять, выглядят ли они реалистично и убедительно.



Я также поработал с элементами вокруг дерева и тенями, которые оно отбрасывает. Тени от листьев на стволе или на земле всегда придают рендеру характер. Для красивых снимков я сосредоточился на отдельных частях дерева, убедившись, что оно выглядит хорошо со всех сторон, но сделав акцент на том виде, который я хотел рендерить. Я также интегрировал дерево в мини-биом, потому что деревья никогда не бывают одинокими. Как художник по растительности, я не просто создаю деревья; я также думаю о том, что их окружает.
Заключение
Я многому научился в этом проекте, включая приёмы оптимизации, усовершенствование моего рабочего процесса со SpeedTree и улучшение интеграции с движком. Я также узнал о балансе между реалистичным рендерингом и оптимизацией, например, о том, как избегать чрезмерного рисования и ненужной геометрии.
Теперь, когда Nanite доступен, я продолжу исследовать создание деревьев с использованием только техник работы с сеткой без маскированных текстур. Я уже начал экспериментировать, и мой следующий проект, о котором скоро будет рассказано, будет посвящён стилизованным деревьям с лепкой и раскрашенными вручную текстурами вместе со сценой, вдохновлённой растительностью в стиле Zelda!
Я надеюсь, что эта статья была интересной и полезной. Не стесняйтесь обращаться ко мне на ArtStation или по электронной почте. Я с нетерпением жду возможности поработать художником по растительности!
Квентин Рапико, художник по растительности/окружающей среде
Интервью проведено Глорией Левин
Автор: Quentin Rapicault
Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.