Исходный размер 1140x1600

Глава 2. Современные технологии создания трёхмерных растений

Данный проект является учебной работой студента Школы дизайна или исследовательской работой преподавателя Школы дизайна. Данный проект не является коммерческим и служит образовательным целям
big
Исходный размер 2480x1158

Демоверсия игры Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. TJ Halter (Тиджей Халтер). 2020

2.1 Альфа-карточки и фотограмметрия

До сих пор растения в играх чаще всего являются набором альфа-карточек (grass cards, alfa-cards, billboards). Альфа-карточка — это текстура растения с альфа-каналом (нарисованной или автоматически созданной маской), где черный цвет отвечает за прозрачность, а белый — за непрозрачность.

big
Исходный размер 2480x650

Слева-направо: кластер из альфа-карточек и текстурные карты; game-ready растение. Материал из курса «LevelUp.Digital Tutorial: Creating Game-Ready Vegetation». Энвайронмент артист: Патрик Глэдис. 2019

Маленькие растения

Процесс создания альфа-карточек начинается с поиска огромного количества референсов растений и их элементов. Референсы помогают понять определяющие формы, силуэты и закономерности роста — всё, что делает растение уникальным. А также зафиксировать мелкие детали и вариации, которые могут быть. При создании текстур (атласа) структура растения должна быть чётко определена.

big
Исходный размер 2480x722

Слева-направо: референсы растений для локации из игры Tom Clancy’s Ghost Recon Breakpoint (Призрачный Разведчик: Точка разрыва Тома Клэнси); итоговая локация. Ubisoft. Пьер Афумаду. 2019

Важной частью разработки является создание концептов будущих растений. На данном этапе нужно определиться с силуэтом и фактурами. Концепты растений передают моделлерам, которые создают high-poly (высокополигональные) модели. Это является частью лекдева — этапа, на котором формируется общий художественный стиль. В ходе данного процесса артист может продумывать взаимодействие растения с миром, персонажами игры и экспериментировать с внешним видом растений: подобрать цветовую гамму, определить степень реалистичности или стилизованности.

Исходный размер 2480x1728

Лукдев растений из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Далее артисты делают блокинг — рисуют 2D-макеты атласа растения на плоскости в программе ZBrush или в Photoshop. При этом элементы растения либо полностью рисуют вручную, либо используют фотографии, сделанные во время скаутинга или взятые из сайта Quixel Megascans. Так за короткий срок можно получить макет атласа текстур и опробовать его на простом меше. Это помогает сформировать представление о том, какой будет финальная модель растения, зафиксировать форму, силуэт, полигонаж, занимаемую площадь и объём. На данном этапе важно убедиться, что все необходимые детали (листья, травинки, цветы, ветки и др.) есть в атласе текстур, а силуэты и вариации деталей растения выглядят достаточно разнообразно и интересно. Также блокинг атласа нужен для максимальной оптимизации UV-развертки (пустого места должно быть как можно меньше). UV-развертка — перевод 3D-модели в 2D-поверхность для нанесения на изображение цвета или текстуры

Исходный размер 2480x806

Варианты блокинга атласов растений. Даниэль Перес, Джаред Соботта. 2021, 2022

После блокинга переходят к созданию атласа high-poly моделей элементов растения. Для этого либо используют сканы, либо в программах SpeedTree, Maya (или 3ds Max) и ZВrush моделируют и скульптурируют отдельные high-poly модели определенного вида растения.

Исходный размер 2480x1166

Атласы high-poly (высокополигональных) 3D-моделей элементов растений из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

У каждого растения травинки, части веток, листья и цветы — отдельные меши. Часто до перехода к моделированию и скульптурированию в 3D-программу загружают референс растения и поверх изображения создают 3D-модель. Для разных элементов любого растения делают по несколько вариаций, чтобы приблизиться к разнообразию, присущему настоящим растениям. Из полученных элементов собирают различные части растения с вариациями.

Исходный размер 2480x761

High-poly (высокополигональные) 3D-модели элементов ветки кипариса. Проект «Bald Cypress» (Кипарис болотный). Агнешка Ногальска. 2018

High-poly модели текстурируют в программе ZBrush с помощью инструмента Polypaint или просто назначают разные однотонные материалы на детали растения. Предварительное текстурирование не обязательно, его делают для упрощения работы.

Исходный размер 2480x689

Слева-направо: high-poly 3D-модели листьев без текстуры; текстурированные с помощью Polypaint. Джереми Хаксли. 2017. Атлас 3D-моделей растения перед переносом в программу ZBrush. Джонджо Хемменс. 2021

Полученную текстуру с альфа-каналом переносят в программу Maya или в другие программы (3ds Max, SpeedTree). Там создают high-poly альфа-карточки для целой части растения или для каждой его детали отдельно — накладывают полученную текстуру на плоскость и обрезают участки вокруг её альфы так, чтобы было как можно меньше пустого пространства.

Исходный размер 2480x934

Слева-направо: атлас high-poly (высокополигональных) 3D-моделей травинок. Атлас high-poly альфа-карточек травинок. Даниэль Перес. 2021

Этап создания high-poly альфа-карточек могут пропускать и собирать кластеры сразу из high-poly 3D-моделей. Кластеры — сложные меши, которые становятся окончательными high-poly моделями для запекания текстурных карт. Для сборки кластеров обычно используют ZBrush или SpeedTree.

Исходный размер 2480x1386

Кластеры high-poly (высокополигональных) 3D-моделей элементов ветки кипариса. Проект «Bald Cypress» (Кипарис болотный). Агнешка Ногальска. 2018

Исходный размер 2480x1023

High-poly (высокополигональные) кластеры, 3D-модели веток деревьев для игры Assassin’s Creed Origins (Кредо Ассасина Истоки). Ubisoft. Джоэл Пеллетант. 2017

В ортографическом виде один за другим из разных элементов одного растения (это могут быть как high-poly карточки, так и 3D-модели) выстраивают каждый его кластер элемент или кластер так, чтобы он соответствовал атласу. После этого необходимо расположить полученную плоскость с high-poly карточками или 3D-моделями частей растения параллельно пустой плоскости (состоящей из 4 вершин) — на нее будут запекаться текстурные карты с high-poly модели. Запекание необходимо для передачи внешнего вида high-poly модели на low-poly модель, полигонаж которой существенно ниже.

Исходный размер 2480x887

Атлас high-poly (высокополигональных) элементов растений. Материал из курса «Vegetation and Plants for Games». Джаред Соботта. 2022

Исходный размер 2480x1226

Слева-направо: high-poly (высокополигональная) 3D-модель ветки кипариса; финальный атлас high-poly 3D-моделей. Проект «Bald Cypress» (Кипарис болотный). Агнешка Ногальска. 2018

В случае, когда все элементы растения запекают по отдельности, полученные после запекания альфа-карточки, например, листьев используют для сборки high-poly кластеров веток (данные кластеры будут состоять из 3D-моделей голых веток и альфа-карточек листьев с готовыми материалами) и запекают их.

Исходный размер 2480x1164

Атлас high-poly (высокополигональных) кластеров элементов растений. Материал из курса «Vegetation and Plants for Games». Джаред Соботта. 2022

Запекание всех необходимых текстурных карт происходит в программах: SpeedTree, Substance Designer, Substance Painter, Substance Alchemist или Marmoset.

Исходный размер 2480x739

Слева-направо: high-poly 3D-модель ветки; процесс запекания текстурных карт. Материал из презентации «Between Tech and Art: The Vegetation of Horizon Zero Dawn». GDC. Гилберт Сандерс. 2018

Текстурные карты обычно включают в себя: Albedo или Diffuse (базовый цвет), Normal (нормали), Ambient Occlusion (окклюзия окружения), Opacity (прозрачность). Иногда запекают дополнительные карты, например: Roughness (шероховатость), Gloss (глянец), Translucency (полупрозрачность), кастомные маски, ID (идентификатор), Convexity (выпуклость), Concavity (вогнутость), Curvature (кривизна) и другие.

Исходный размер 2480x1227

Слева-направо: кластеры из high-poly (высокополигональных) альфа-карточек травинок для запекания текстурных карт; текстурные карты травы. Даниэль Перес. 2021

Исходный размер 2480x1226

Текстурные карты: Normal (нормалей) и Base Color (базового цвета) веток кипариса. Проект «Bald Cypress» (Кипарис болотный). Агнешка Ногальска. 2018

Исходный размер 2480x638

Слева-направо: текстурные карты растения киноа; поле киноа в игре Tom Clancy’s Ghost Recon Breakpoint (Призрачный Разведчик: Точка разрыва Тома Клэнси). Ubisoft. Пьер Афумаду. 2019.

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

Исходный размер 2480x1434

Слева-направо: 3D-модели веток и их текстурные карты; деревья из игры Assassin’s Creed Odyssey (Кредо Ассасина: Одиссея). Ubisoft. Кэролайн Кутюр. 2018

Стандартом для текстур является плотность текселей 512 пикселей на метр, соответственно, разрешение текстур обычно 512 на 512 пикселей, но возможны и другие варианты. Объединяя все текстурные карты и настраивая их параметры, получают финальные шейдеры растений, которые применяют на game-ready меши.

Исходный размер 2480x1188

Шейдеры растений из игры Uncharted 4: A Thief’s End (Анчартед 4: Путь Вора). Naughty Dog. Джереми Хаксли. 2015

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

Исходный размер 2480x842

Слева-направо: атласы веток из игры Tom Clancy’s Ghost Recon Breakpoint. Ubisoft. Пьер Афумаду. 2019. Текстуры растения из игры Dishonored 2. Arkane Studios. Янник Гомбарт. 2016

Шейдеры переносят на плоские low-poly (низкополигональные) карточки с альфа-каналом, созданные в Maya, 3ds Max или в SpeedTree. Карточки обрезают по контуру растения. При создании альфа-карточек важно, чтобы пустого пространства (прозрачного) было как можно меньше.

Исходный размер 2480x764

Low-poly (низкополигональные) альфа-карточки растений. Даниэль Перес. 2021

Исходный размер 2480x1721

Базовые low-poly (низкополигональные) альфа-карточки веток кипариса. Проект «Bald Cypress» (Кипарис болотный). Агнешка Ногальска. 2018

Полученные альфа-карточки изгибают, чтобы создать иллюзию объёма. Для этого может потребоваться добавление сабдивов — увеличение полигонажа. Финальные game-ready меши должны быть триангулированы (состоять из трисов). Ввиду повышения производительности и оптимизации финальные сетки растений не могут быть очень плотными (высокополигональными), поэтому изначально в атласе делают большие кластеры, однако при некоторых других подходах поступают наоборот. К примеру, окончательная плотность сетки травы может составлять 500 трисов на метр.

Исходный размер 2480x1468

Кластеры изогнутых low-poly (низкополигональных) альфа-карточек веток кипариса. Проект «Bald Cypress» (Кипарис болотный). Агнешка Ногальска. 2018

В SpeedTree (или в 3ds Max, Maya) из нескольких карточек, размещенных под разными углами, собирают финальную модель растения. Параллельных друг другу карточек быть не должно. Размеры, изгиб и направление поворота карточек в некоторой степени рандомизируют, так растение выглядит более натурально. Карточки стараются делать обращенными наружу, чтобы каждая отдельная карточка несколько случайным образом вращалась и изгибалась вокруг центра растения. Кроме того, можно создать несколько дополнительных карточек, основанных на более специфических деталях в атласе high-poly моделей, а затем случайным образом распределить их по финальным кластерам карточек растения, чтобы разбить повторение.

Исходный размер 2480x984

Game-ready 3D-модели растений. Даниэль Перес. 2021

Для демонстрации high-poly моделей, созданных для игр, их текстурируют и сразу собирают все части растения воедино. Растения в игре Far Cry 6 (2021) выглядят довольно артистично, но им не хватает натуральности из-за слишком однородных материалов и однотипных элементов.

Исходный размер 2480x1410

High-poly (высокополигональные) 3D-модели растений из игры Far Cry 6 (Далекий Крик 6). Ubisoft. Руди Ламотт, Сандра Парлинг, Александра Корнилова. 2021

В игре Assassin’s Creed Valhalla (2020) цветы крайне реалистичны за счет детализированных текстур и вариативности элементов, использованных для сборки каждой high-poly модели.

Исходный размер 2480x1397

High-poly (высокополигональные) 3D-модели растений из игры Assassin’s Creed Valhalla (Кредо Ассасина Вальгалла). Ubisoft. Адриен Паге-Брунелла. 2020

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

Исходный размер 2480x1428

High-poly (высокополигональные) 3D-модели растений из игры Dishonored 2 (Бесчестие 2). Arkane Studios. Янник Гомбарт. 2016

В рамках фэнтези сеттинга обычно не стремятся к фотореализму, наоборот, растения стараются сделать как можно менее похожими на те, что действительно существуют. Растения в играх Horizon Forbidden West (2022) и God of War: Ragnarök (2022) интегрируются в фэнтези окружение за счет крайне причудливых силуэтов и сочных оттенков.

Исходный размер 2480x690

Слева-направо: 3D-модели из игры Horizon Forbidden West (Горизонт: Запретный Запад). Guerrilla Games. Мас Хайн. God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Деревья

Обычно моделирование деревьев происходит в программах SpeedTree, Maya, 3ds Max, а скульптурирование — в ZBrush. Для создания базовой формы дерева нередко используют инструмент ZSpheres в ZBrush. Он удобен для работы с объектами, в которых много резких переходов от одной части к другой.

Исходный размер 2480x1011

Блокинг 3D-моделей деревьев, созданных с помощью инструмента ZSpheres в программе ZBrush. 3D_OnTheRoad (3Д на дороге), Кэролин Кларксон. 2017, 2022

После 3D-модель скульптурируют, добавляют детали. Для этого используют инструменты Adaptive Skin и Dynamesh в программе ZBrush, чтобы получить цельную сетку, на которую можно добавить вторичные формы.

Исходный размер 2480x1800

High-poly (высокополигональные) 3D-модели стволов деревьев из игры God of War (Бог Войны). SCE Santa Monica Studio. Дэн Макким. 2018

Чаще всего скульптурируют следующими кистями: Standard и Clay Buildup для определения крупных форм, Dam Standard для уточнения острых пиков и глубоких срезов, Trim Dynamic для равномерного срезания части формы. В процессе работы сетки high-poly 3D-моделей могут состоять из нескольких сотен полигонов.

Исходный размер 2480x695

Слева-направо: 3D-модель дерева из игры Destiny 2 (Судьба 2). Bungie. Стивен Клипович. 2017. 3D-модель дерева из игры Assassin’s Creed Odyssey (Кредо Ассасина: Одиссея). Ubisoft. Тиффани Шазо. 2018

Исходный размер 2480x808

3D-модели деревьев из игры Demon’s Souls (Души Демонов). Bluepoint Games. Алексис Бойер, Джастин Вагнер. 2020

3D-модель может быть создана и путем доработки материалов, полученных методом фотограмметрии. Например, в игре Far Cry 6 многие деревья основаны на 3D-сканах, а в игре Star Wars: Battlefront II с помощью фотограмметрии воссоздали целый участок реально существующей локации.

Исходный размер 2480x1800

Сверху-вниз: процесс получения 3D-скана пальмы; итоговые 3D-модели из игры Far Cry 6. Ubisoft. Билли Матьюнис. 2021. Скаутинг; локация из игры Star Wars: Battlefront II. EA DICE. Патрик Глэдис. 2017

В случае использования фотограмметрии для создания 3D-модели, необходимо сначала получить необходимые фото, используя DSLR фотокамеру. Выезды за такими фото называют скаутингом, им лучше заниматься в дневное время суток и при плотной облачности. Так снимки будут обладать низкой контрастностью и более равномерной освещенностью, что необходимо для получения качественной текстуры.

Исходный размер 2480x1325

Скаутинг для игры Star Wars: Battlefront II (Звездные Войны: Линия фронта 2). EA DICE. Патрик Глэдис. 2017

Серию фотографий ствола дерева загружают в программу Photoscan или в Agisoft Metashape. На выходе получают 3D-скан ствола дерева, состоящий из текстуры и high-poly модели, которая затем зачищается в ZBrush. Полученный меш при помощи инструментария SpeedTree объединяют с верхней или нижней частью ствола, которая моделируется с нуля.

Исходный размер 2480x869

Слева-направо: 3D-скан дерева в программе Agisoft Metashape; необработанный 3D-скан, импортированный в программу ZBrush. Филипп Пурол, Джей Каммингс. 2021, 2019

Исходный размер 2480x1278

3D-модель ствола дерева, полученная методом фотограмметрии. Материал из курса «The Gnomon Workshop: Creating a Swamp Scene For Games». Адриен Паге-Брунелла. 2023

Процесс работы над low-poly 3D-моделью начинается с импорта high-poly 3D-модели из программы ZBrush в Maya, где используют инструмент Quad Draw для создания low-poly меша поверх high-poly меша.

Исходный размер 2480x908

Слева-направо: high-poly (высокополигональная) 3D-модель дерева; low-poly (низкополигональная) 3D-модель дерева. Кэролин Кларксон. 2022

После по low-poly мешу делают UV-развертку. Для проверки качества UV-развертки на low-poly модель накладывают шейдер «Checker Map». Он показывает, как будет лежать текстура на модели, как выглядят места соединения одного UV-кластера с другим, есть  ли растяжения текстуры в каких-то участках модели.

Исходный размер 2480x1206

Слева-направо: low-poly (низкополигональная) 3D-модель дерева c шейдером «Checker Map». UV-развертка 3D-модели дерева. Кэролин Кларксон. 2022

Далее запекают текстурные карты (именно ствола и больших веток), чтобы low-poly модель, имея существенно меньше полигонов, выглядела как high-poly. Так получают текстурные карты Albedo или Base Color, Normal, Roughness, Ambient Occlusion и Height, которые будут использоваться при создании материала в программах из набора Substance.

Исходный размер 2480x1215

Low-poly (низкополигональная) 3D-модель дерева с запечёнными текстурными картами, UV-развертка 3D-модели дерева. Кэролин Кларксон. 2022

Материалы для коры создают с нуля в программах из набора Substance или используют фото, полученные при сканировании. В первом случае в качестве основы выступают готовые паттерны, состоящие из вытянутых прямоугольников примерно одинаковой формы.

Исходный размер 2480x1779

Материалы и текстурные карты коры деревьев из игры Middle-earth: Shadow of War (Средиземье: Тени Войны). Monolith Productions. Джоби-Кайл Кармакер. 2017

В программе SpeedTree дорабатывают текстуры коры, кластеры карточек ветвей с листьями (созданные по технологии альфа-карточек) и собирают финальную модель. Карточки веток и листьев размещают по 3D-модели через вручную или с помощью системы частиц. Так можно легко управлять плотностью листьев или цветов, менять размер, поворот и наклон карточек, их текстуру (например, с листьев на цветы).

Исходный размер 2480x1741

Game-ready 3D-модель дерева и альфа-карточки его веток. Материал из презентации «Between Tech and Art: The Vegetation of Horizon Zero Dawn». GDC. Guerrilla Games. Гилберт Сандерс. 2018

Исходный размер 2480x1092

Game-ready 3D-модель дерева. Материал из курса «The Gnomon Workshop: Creating a Swamp Scene For Games». Адриен Паге-Брунелла. 2023

Самым массивным деревьям в сцене придают симметричную форму. На далеком от камеры расстоянии каждое дерево обычно изображают в виде одной карточки, обращенной к камере. Другими словами, для последнего LOD все текстуры, относящиеся к дереву, объединяют в одну карточку. Если профиль дерева несимметричен, результат будет неубедительным. Чтобы обойти эту проблему, ставят три разные карточки дерева под разными углами друг к другу и меняют их местами в зависимости от угла наклона дерева к камере.

Исходный размер 2480x1197

Слева-направо: этапы создания game-ready 3D-модели дерева; 3D-модели деревьев из проекта «Ramped Up Forest» (Лесополоса) энвайронмент артиста Теофиля Лебо. Теофиль Лебо. 2019

Такими методами можно создавать деревья для любого биома: снежного, тропического, лесного, пустынного, болотистого и др. Это особенно удобно для игр жанра action/RPG со множеством различных биомов, растения в которых должны быть в единой стилистике. Стоит отметить, что на данный момент нет альтернативных способов создания фотореалистичных деревьев. Ведь деревья в реальной жизни имеют десятки тысяч листьев и сотни веток. Пока что разработчики не могут себе позволить добавить в игру даже несколько деревьев, в которых каждый лист и каждая ветка — это отдельные меши.

Исходный размер 2480x900

3D-модели деревьев из игры Middle-earth: Shadow of War (Средиземье: Тени Войны). Monolith Productions. Джоби-Кайл Кармакер. 2017

Исходный размер 2480x690

3D-модели деревьев из игр Horizon Zero Dawn (Горизонт: Новый Рассвет) и Horizon Forbidden West (Горизонт: Запретный Запад). Guerrilla Games. Мас Хайн, Ева Тайовска. 2017, 2022

Часто для иллюстрации воздействия определенных внутриигровых факторов на растения необходимо создавать деревья с уникальным внешним видом. В данном случае делают упор на лукдев, скульптурирование и текстурирование 3D-модели.

Исходный размер 2480x647

Слева-направо: деревья из игры Ghost of Tsushima. Sucker Punch Productions. Колин Валек. 2020. 3D-модели пальм из игры Gears 5: Hivebusters. The Coalition. Акио Кимото. 2020

Исходный размер 2480x689

Слева-направо: 3D-модели обледеневших деревьев; результат в игре Assassin’s Creed Valhalla: Dawn of Ragnarök (Кредо Ассасина Вальгалла: Заря Рагнарёка). Ubisoft. Самуил Мунис. 2022

Исходный размер 2480x671

3D-модели позолоченных деревьев из игры Assassin’s Creed Valhalla: Dawn of Ragnarök (Кредо Ассасина Вальгалла: Заря Рагнарёка). Ubisoft. Эми Димитрова, Самуил Мунис. 2022

Деревья в фэнтези сеттинге, как в игре Destiny 2 (2017), необычными делают причудливые силуэты и яркая цветовая палитра. Чтобы превратить обычное дерево в светящееся, для него создают шейдеры с эмиссией, прозрачностью, преломлением и более высокими значениями степени отражения света.

Исходный размер 2480x677

3D-модели деревьев из игры Destiny 2 (Судьба 2). Bungie. Стивен Клипович. 2017

Исходный размер 2480x677

Игра Destiny 2 (Судьба 2). Bungie. Стивен Клипович. 2017

Стилизованные растения получают аналогичными методами, но артисты делают больший упор на стилизованный скульптинг. Например, в игре Immortals Fenyx Rising (2020) заснеженные ветви елей имеют по-настоящему трёхмерную геометрию. Они не являются лишь плоскими карточками, частично окрашенными в белый цвет, поэтому выглядят очень объёмно.

Исходный размер 2480x1301

Игра Immortals Fenyx Rising (Восстание Бессмертного Феникса). Ubisoft. Кэролайн Кутюр. 2020

Исходный размер 2480x1301

3D-модели деревьев из игры Immortals Fenyx Rising (Восстание Бессмертного Феникса). Ubisoft. Кэролайн Кутюр. 2020

Бесшовные процедурные материалы для стилизованных растений создают с нуля в программе Substance Designer в технике hand paint (рисование от руки).

Исходный размер 2480x679

Материалы для стволов деревьев из игры Immortals Fenyx Rising (Восстание Бессмертного Феникса). Ubisoft. Кэролайн Кутюр. 2020

В некоторых играх встречаются культовые деревья, играющие важную роль в сюжете. К ним относятся 10 огромных древ снов (тирны: Achiad, Eas, Fenn, Glayn, Kaithe, Marwol, Noch, Rowen, Scithe, Vaal), которые можно увидеть, посетив локацию «Арденвельд» в игре World of Warcraft: Shadowlands (2020). Самые великие из них — Tirna Achiad (Тирна Ачиад, первое древо) и Tirna Eas (Тирна Эас). Слово «тирна» является отсылкой на «Тир на Ног» (от ирл. Tír na nÓg) — остров вечной молодости в кельтской мифологии. Иронично, что леса в «Арденвельде» увядают.

Исходный размер 2480x770

Древо снов «Tirna Achiad» (Тирна Ачиад) или «Сердце Леса» из игры World of Warcraft: Shadowlands (Мир Варкрафта: Теневые земли). Blizzard Entertainment. Мари Лазар, Гейб Гонзалес. 2020

Исходный размер 2480x695

Древо снов «Tirna Eas» (Тирна Эас) из игры World of Warcraft: Shadowlands (Мир Варкрафта: Теневые земли). Blizzard Entertainment. Гейб Гонзалес. 2020

В игре Elden Ring (2022) культовым является древо Эрд, а в игре God of War (2018) — древо Иггдрасиль. В отличие от Иггдрасиля, древо эрд занимает огромную область экрана игрока, его видно практически с любой точки на карте. Поэтому разработчики стремились создать запоминающийся силуэт, который бы гармонично сочетался с окружающими локациями. Дерево имеет цветовую палитру, состоящую только из оттенков желтого, и немного сливается с небом за счет полупрозрачности, так глаз игрока не перегружается обилием деталей и цветов. Внешний вид древа Эрд обусловлен его связью с миром Внешних Богов. В разных концовках игры древо может менять свой цвет или форму в зависимости от принятых игроком решений.

Исходный размер 2480x678

Слева-направо: древо Эрд из игры Elden Ring (Кольцо Элден). From Software. 2022. Древо Иггдрасиль из игры God of War (Бог Войны). SCE Santa Monica Studio. Кевин Квинн. 2018

Процедурные ассеты

Существуют и процедурные способы создания мешей и карточек растений, данный метод начинает набирать всё большую популярность. Для этого в программе Houdini разрабатывают различные процедурные ассеты с настраиваемыми параметрами. Для игры God of War: Ragnarök (2022) использовали несколько таких ассетов. В основе всех инструментов лежит процедурное моделирование скелетов растений, состоящих из кривых и спиралей, вдоль которых расставляются карточки. Длина измеряется процедурно, так к каждой форме подбирается нужная длина, что облегчает расстановку карточек.

Исходный размер 2480x1312

Локация «Йотунхейм» из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Лиз Рэддингтон. 2022

Card Sheet Tool (инструмент для создания карточек):

Это ассет для моделирования и лейаута (расположения), с помощью которого можно создавать растения. На выходе он дает цветную high-poly 3D-модель и сетку для запекания текстурных карт.

Исходный размер 2480x1800

Процедурный ассет «Card Sheet Tool» для создания high-poly (высокополигональных) 3D-моделей растений из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Исходный размер 2480x1800

Процедурный ассет «Card Sheet Tool» для создания high-poly (высокополигональных) 3D-моделей растений из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Исходный размер 2480x714

Процедурно созданные high-poly (высокополигональные) 3D-модели элементов растений из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Configuration Tools (инструмент для создания конфигураций):

Используется для распределения карточек — создания кластеров из полученных low-poly карточек.

Исходный размер 2480x1800

Процедурный ассет «Configuration Tools» для создания кластеров альфа-карточек растений из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Исходный размер 2480x1800

Процедурный ассет «Configuration Tools» для создания кластеров альфа-карточек растений из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Grass Tools (инструменты для создания травы):

Состоит из двух инструментов, один из которых предназначен для моделирования high-poly 3D-моделей травы с различными вариантами внешнего вида и окраски. Другой — для запекания high-poly 3D-моделей в текстурные карты и создания кластеров из них.

Исходный размер 2480x1800

Процедурный ассет «Grass Tools» для создания 3D-моделей травы из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Leaf Maker (инструмент для создания листьев):

С помощью данного ассета можно получить high-poly 3D-модели листьев разного вида с вариациями для карточек.

Исходный размер 2480x1800

Процедурный ассет «Leaf Maker» для создания 3D-моделей листьев деревьев из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Также в игре применяли процедурные способы создания деревьев в программе Houdini. Ассет Ironwood Tree Tool (инструмент для создания деревьев) использовали для детализации черновых моделей деревьев. Сначала происходит создание грубого меша дерева в программе ZBrush. Далее он импортируется в программу Houdini, где генерируются кривые, определяющие длину или направление симуляции, и модель обретает большую толщину. Поверх обработанной модели запускается симуляция, после которой поверхность дерева детализируется, добавляются природные фактуры, поврежденные участки коры, изломы и т. д. После этого симуляция (меняющая только поверхность дерева) объединяется с внутренней частью модели. Также создается low-poly версия 3D-модели для использования в процессе детализации. На 3D-модели процедурно генерируются расслаивающиеся участки коры в виде чешуек.

Исходный размер 2480x1080

Процесс работы процедурного ассета «Ironwood Tree Tool» для создания 3D-модели ствола дерева из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Далее все процессы объединяются для получения на выходе high-poly 3D-модели с окраской вертексов, которая используется при создании различных материалов и запекании текстурных карт в программах Substance. Наконец, выполняется наложение шума по различным маскам и после этого создается low-poly меш.

Исходный размер 2480x1775

Результат работы процедурного ассета «Ironwood Tree Tool» — процедурные 3D-модели стволов деревьев из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

Данный ассет позволяет получить уникальные, полностью процедурные 3D-модели стволов деревьев с очень реалистичными фактурами и необычными силуэтами.

Исходный размер 2480x1404

Процедурные 3D-модели растений из игры God of War: Ragnarök (Бог Войны: Рагнарёк). SCE Santa Monica Studio. Кевин Квинн. 2022

В игре Assassin’s Creed Valhalla (2020) для корней дерева Иггдрасиля также был разработан ассет в программе Houdini. Меши коры, созданные на основе 3D-сканов, процедурно распределялись по поверхности корней. Для корней использовали 2 материала (коры и самих корней), созданные в программе Substance Designer, с плавными переходами от одного к другому.

Исходный размер 2480x678

3D-модель корней древа Иггдрасиль для игры Assassin’s Creed Valhalla (Кредо Ассасина Вальгалла). Ubisoft. Цветелина Валканова. 2020

Исходный размер 2480x885

Слева-направо: 3D-модель, полученная методом фотограмметрии; 3D-модели частей коры древа Иггдрасиль для игры Assassin’s Creed Valhalla (Кредо Ассасина Вальгалла). Ubisoft. Петр Звезданов. 2020

Корни Иггдрасиля были слишком огромными, поэтому для их создания использовали нестандартный пайплайн, который предполагал процедурное создание геометрии корней. Для игры Assassin’s Creed Valhalla: Dawn of Ragnarök (2022) использовали доработанную версию ассета.

Исходный размер 2480x691

Корни древа Иггдрасиль из игры Assassin’s Creed Valhalla (Кредо Ассасина Вальгалла). Ubisoft. Цветелина Валканова, Георгий Христов. 2020

Исходный размер 2480x687

Корни древа Иггдрасиль из игры Assassin’s Creed Valhalla: Dawn of Ragnarök (Кредо Ассасина Вальгалла: Заря Рагнарёка). Ubisoft. Самуил Мунис, Дилиана Стойчева. 2022

Уровни детализации

По готовности альфа-карточек в SpeedTree (или в 3ds Max, Maya) создают LOD — несколько видов скоплений карточек каждого определенного растения с уменьшающимся количеством трисов и разрешением текстур от нулевого к последнему LOD. Они будут переключаться у модели растения по мере его отдаления от игрока (камеры). От нулевого к последнему LOD всегда уменьшают полигонаж и качество текстур.

Исходный размер 2480x1506

Слева-направо: LOD0, LOD1, LOD2 (уровни детализации) 3D-моделей растений. Даниэль Перес. 2021

Для создания текстур разных LOD применяют одну из двух технологий — Diffuse flooding или MIP flooding. В их основе лежит использование нескольких копий одной текстуры с разной детализацией.

Diffuse flooding: Изображение расширяется по краям альфа-канала и размывается, оригинальное изображение ставится сверху. Процесс процедурно повторяется до заполнения всей области изображения. В целом результат очень качественный, скачки между LOD почти не заметны. Однако генерация происходит крайне медленно, цвета контуров искажаются, что портит внешний вид растений.

Исходный размер 2480x310

Процесс Diffuse flooding текстуры растения. Материал из презентации «Interactive Wind and Vegetation in God of War». GDC. SCE Santa Monica Studio. Шон Фили. 2019

MIP flooding: Изображение, обрезанное по альфа-каналу, на каждом этапе процедурно масштабируется до половины его размера. Так повторяется до тех пор, пока текстура не станет шириной или высотой в один пиксель. Затем процесс идет обратно по цепочке MIP. MIP с более высоким разрешением ставится сверху и весь путь вверх повторяется. Вместо масштабирования может использоваться размытие изображения — нулевой LOD имеет резкую текстуру, а у последующих LOD постепенно увеличивается степень размытия текстуры. Это оптимальный подход с точки зрения визуала и оптимизации. Переход между LOD не резкий, ведь LOD выше нулевого слабо от него отличаются. Генерация происходит быстро, текстура хорошо масштабируется за счет логарифмической составляющей и сложности алгоритма. Большие области пикселей одного и того же кода цвета (кода RGB) улучшают качество и скорость сжатия, тем самым повышая скорость рендера.

Исходный размер 2480x645

Процесс MIP flooding текстуры растения. Материал из презентации «Interactive Wind and Vegetation in God of War». GDC. SCE Santa Monica Studio. Шон Фили. 2019

Альфа-канал должен весить максимально мало, поэтому его копии с разной детализацией также создаются методом MIP flooding. При создании LOD могут использовать метод, основанный на постепенном удалении деталей растения с карточек, например, листьев, веток, цветов, от нулевого к последнему LOD. В данном случае, чтобы сохранить изначальный объём растения, с возрастанием LOD увеличивают размер оставшихся деталей. Необходимо к последнему LOD достигнуть как можно более малого количества деталей, достаточного для заполнения исходного объёма растения. Это самый не затратный способ, но эффект «скачков» между LOD заметен довольно сильно.

Исходный размер 2480x1105

Слева-направо: процесс MIP flooding альфа-канала. Материал из презентации «Between Tech and Art: The Vegetation of Horizon Zero Dawn». GDC. Guerrilla Games. Гилберт Сандерс. 2018

Для травы в среднем создают 3 LOD: LOD0 — самый высокополиганальный low-poly меш. LOD1 — количество трисов уменьшается примерно на 40-60% по сравнению с LOD0. LOD2 — количество трисов уменьшается примерно на 10-20% по сравнению с LOD1.

Исходный размер 2480x718

Слева-направо: LOD (уровни детализации) травы и куста. Материал из презентации «Between Tech and Art: The Vegetation of Horizon Zero Dawn». GDC. Guerrilla Games. Гилберт Сандерс. 2018

Деревья имеют около 4-5 LOD: LOD0 — самый высокополиганальный low-poly меш. LOD1 — количество трисов составляет 2/3 от LOD0. LOD2 — количество трисов составляет 50% от LOD1. LOD3 — количество трисов составляет 50% от LOD2. LOD4 — всё дерево является плоской карточкой.

Исходный размер 2480x693

Слева-направо: LOD (уровни детализации) дерева и его веток. Материал из презентации «Between Tech and Art: The Vegetation of Horizon Zero Dawn». GDC. Guerrilla Games. Гилберт Сандерс. 2018

Для примера, в игре Far Cry 5 (2018) нулевой LOD дерева состоит из 10 тысяч трисов, куста — около 2 тысяч трисов, трёхметрового кластера травы — около 600 трисов. Деревья в игре имеют только 2 разных материала: для листьев и для коры. В современных играх нулевой LOD каждого дерева обычно состоит из 13-30 тысяч трисов.

Исходный размер 2480x1393

Игра Far Cry 5 (Далёкий Крик 6). Ubisoft. Билли Матьюнис. 2018

Также последним LOD могут быть импостеры (imposters). Технология создания импостеров заключается в захвате 3D-объекта камерой с разных углов обзора и сохранении каждого вида в текстурных картах.

Исходный размер 2480x689

Слева-направо: процесс создания импостера; отображение импостеров в игре Tom Clancy’s Ghost Recon Breakpoint (Призрачный Разведчик: Точка разрыва Тома Клэнси). Ubisoft. Максимилиан Кледа. 2017

Исходный размер 1019x334

Технология создания импостера, заключающаяся в захвате объекта с различных углов обзора и сохранении каждого вида в текстуре. Арно Клоде. 2022

В зависимости от расположения камеры относительно растения отображается та или иная текстура: если камера находится над растением, то отображается текстура, снятая сверху, а если камера видит справа, то отображается текстура, снятая справа и так далее. Такой способ дает убедительный результат для дальних планов и позволяет значительно увеличить производительность за счет уменьшения полигонажа.

Исходный размер 803x531

Текстурная карта Albedo (базового цвета) октаэдрического импостера 3D-модели березы (позволяет отображать её со всех сторон). Арно Клоде. 2022

Исходный размер 1020x552

Текстурная карта Normal (нормалей) октаэдрического импостера 3D-модели сосны (позволяет получить динамическое освещение со всех сторон). Арно Клоде. 2022

Преимущества и ограничения технологии

К недостаткам карточек можно отнести активное использование альфа-канала. Из-за наличия прозрачности при плотном заполнении участка травой или пересечении карточек ветвей дерева, шейдеру приходится выполнять больше вычислений. В местах наложения нескольких прозрачных объектов или текстур друг на друга происходит overdraw (переписовка). Один и тот же пиксель просчитывается несколько раз подряд для одного и того же кадра, то есть один и тот же пиксель пересчитывается для разных слоев изображения. Такая ситуация приводит к очень сильному снижению производительности, частоты кадров. Поэтому необходимо уменьшать количество карточек и не располагать их параллельно друг другу. Из-за данных ограничений деревья в играх не обладают плотной листвой и не выглядят натурально. Ещё один большой недостаток — при взгляде на растение вниз плоские карточки явно видны. Но эту проблему можно немного сгладить, если настроить карточки так, чтобы их плоскости были всегда немного направлены в сторону игрока (камеры).

Исходный размер 2480x1394

Игра Horizon Forbidden West (Горизонт: Запретный Запад). Guerrilla Games. Ева Тайовска. 2022

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

Исходный размер 2480x1155

Концепт-арт локации из игры Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Ромен Жуандо. 2020

2.2 Отдельные сетки

Individual blades of grass, 3D-grass blades (отдельные сетки или индивидуальные меши каждой травинки) позволяют добиться эффекта 3D-травы. Технологию можно увидеть изнутри, разобрав процесс создания травы для игры Ghost of Tsushima. Другие растения в игре разработаны по технологии альфа-карточек.

Исходный размер 2480x689

Игра Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Колин Валек. 2020

Процедурная генерация

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

Исходный размер 2480x1800

Процесс деления игровой локации на тайлы. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

Индивидуальные меши травинок можно получать не только с помощью compute shader, но и через geometry shader (геометрический шейдер), который генерирует травинки из каждой вершины входящего меша. Он выполняется после vertex shader (вершинного шейдера) или шейдера тесселяции, если она используется, и до того, как вершины обрабатываются для фрагментного шейдера. Геометрический шейдер получает на входе одиночный примитив и может сгенерировать ноль, один или множество примитивов. Чтобы создать 3D-травинки подойдет любая real-time (в реальном времени) процедурная генерация мешей.

Исходный размер 2480x1236

Схема работы geometry shader (геометрического шейдера). Дэниел Илетт. 2021

Исходный размер 2480x719

Процесс создания 3D-травинок с помощью geometry shader (геометрического шейдера). Материал из туториала «Unity Grass Shader Tutorial». Эрик Ройстан Росс. 2019

Для исключения из вычислений геометрии, находящейся вне поля зрения игрока (камеры), применяются две технологии: Distance Culling и Frustum Culling. Distance Culling убирает из рендера все объекты, которые находится слишком далеко от камеры, а Frustum Culling отсекает геометрию, не видимую на экране (отсечение по пирамиде видимости). Таким образом достигается оптимизация, потому что GPU не рендерит огромное количество лишних полигонов и текстур.

Исходный размер 800x450

Демонстрация работы технологии Frustum Culling в игре Horizon Zero Dawn (Горизонт: Новый Рассвет). Guerrilla Games. 2017

Потом происходит выборка геометрии травы из назначенных текстур в каждом тайле, так определяется тип и высота травы в зависимости от её положения в тайле. Тайлы с нулевым типом травы или с нулевой высотой отбрасываются. Далее применяют Occlusion Culling — функцию, отключающую рендеринг тех объектов, которые в данные момент не видит камера, потому что они закрыты другими объектами.

Исходный размер 2480x1301

Авторская схема работы технологий оптимизации. Пунктирная обводка: фиолетовая — Frustum Culling, голубая — Occlusion Culling, зеленая — Distance Culling. Голубые треугольники — видимые объекты. 2023

Текстура каждого тайла имеет разрешение 512  на 512 пикселей, на её основе каждая позицию тайла сопоставляется с типом травы, хранящимся в виде 8-битного индекса в массиве параметров травы. Случайным образом, на основе положения относительно центра четырех соприкасающихся тайлов, из массива данных выбирается один из созданных типов травы. Это позволяет получить более плавный переход от одного типа травы к другому, чем при использовании точечной выборки. Так менее заметно, что тип травы образуется из текстуры низкого разрешения. Геометрия травинок не создается артистами вручную в 3D-программах, вместо этого каждая травинка образуется процедурно методом GPU instancing (через instanced index draw call, по одному draw call на тайл).

Исходный размер 2480x685

Граница перехода между двумя разными типами травы. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

GPU instancing — технология, появившаяся в начале 2000-х годов, позволяющая эффективно рендерить огромное количество одинаковых или идентичных объектов. За один подход создается множество копий одного меша. Обычно CPU (центральный процессор) берет все существующие данные сетки объектов и переносит их в GPU. Эти данные копируются из CPU в GPU каждый кадр, такой процесс передачи данных называется draw call. Идея состоит в том, чтобы сохранить данные только на GPU. Для этого создается массив данных о позиции травинок, затем GPU использует этот массив для поиска правильной позиции каждой травинки в каждом кадре, а не копирует эти позиции в CPU. Таким образом, всего, что инстансируется GPU, технически не существует для CPU. Для одного лота геометрии достаточно лишь одного процесса draw call вместо нескольких. Данные о геометрии при дублировании одинаковы, но каждая копия может иметь различными другие параметры. Всё это позволяет существенно сэкономить ресурсы системы и повысить реалистичность сцены в целом.

Исходный размер 2480x1488

Игра Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Филипп Дженне. 2020

Исходный размер 2480x1385

Игра Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Дуглас Дэвис. 2020

Создание геометрии растений

Уникальная травинка получается на основе cubic Bezier curve (кубической кривой Безье) и параметров определенного типа травы. Контрольные точки Безье размещаются следующим образом. Для начала определяют положение вершины относительно основания и среднюю точку, которая управляется параметром bend (изгиб). Если точка изгиба равна нулю, то средняя точка лежит вдоль линии между основанием и вершиной. Значения, превышающие ноль, сдвигают её вверх и в сторону от этой линии. Когда известно положение контрольных точек, можно определить положение вершины (кончика травинки) в мировом пространстве. Для этого берется значение от нуля до единицы, определяющее положение вершины на травинке, и вводится в функцию кривой Безье. Вершина перемещается в направлении нормали и масштабируется в зависимости от положения точки вдоль травинки. Чтобы вычислить нормаль вершины, находят производную кривой Безье в конкретной позиции и пересекают её с полученной нормалью. В итоге получается процедурно изогнутая травинка, сужающаяся к кончику.

Исходный размер 2480x770

Процесс создания 3D-травинки на основе кубической кривой Безье. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

Меши травинок имеют 2 LOD: low-LOD (низкополигональный), состоящий из 7 вершин, и high-LOD (высокополигональный), состоящий из 15 вершин. Для ослабления эффекта «скачков» между LOD при их переключении в любую сторону, по мере приближения к точке перехода между LOD они смешиваются друг с другом за счет смещения вершин геометрии каждой отдельной травинки. Так получается гораздо более плавный переход, особенно на траве, сильно изогнутой ветром. Тайлы low-LOD вдвое больше тайлов high-LOD, но они содержат в себе одинаковое количество травинок. Это означает, что в тайлах low-LOD расстояния между травинками больше. Чтобы сделать переход между тайлами плавным, перед приближением к low-LOD тайлам в high-LOD тайлах процедурно удаляется по 3 травинки из каждых 4 ячеек травы.

Исходный размер 2480x1800

Слева-направо: LOD (уровни детализации) 3D-травинок; схема тайлов с травинками. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

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

Исходный размер 2480x1470

Поля низкой травы в игре Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Филипп Дженне. 2020

Для шейдера травы используют 4 текстурные карты: Gloss — 1D-текстура, растянутая по ширине травинки и повторяющаяся по длине. Diffuse — две текстуры. Первая — 1D-текстура, которая работает аналогично gloss и дает прожилки, идущие по травинке. Вторая — 2D-текстура, содержащая информацию о цвете. V координата отвечает за цвет, изменяющийся с длиной травинки. Это обеспечивает плавный переход между темным основанием травинки и светлым кончиком. U координата зависит от того, к какому скоплению принадлежит травинка, и позволяет получить участки с разнообразием цветов по всему полю. Translucency — абсолютное значение. Прозрачность увеличивается от основания травинки к её кончику. AO — абсолютное значение. Градиент от темного основания к светлому кончику.

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

Исходный размер 2480x864

Шейдер 3D-травинки и его компоненты — текстурные карты. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

Обычно для разнообразия внешнего вида процедурной травы ей можно задать случайные значения высоты. Но настоящие травинки не отличаются друг от друга лишь высотой. Если посмотреть на траву в реальной жизни, то она растет, образуя скопления. Более высокие из них — просто результат большего содержания азота в почве, что может повлиять и на цвет травы. Игра имитирует это, используя procedural Voronoi algorithm (алгоритм процедурного шума) для сбора травинок в определенных зонах в скопления и влияния на их различные параметры (например: высота, поворот, цвет и направление). Каждый тип травы имеет ряд параметров, доступных для настройки артистами: высота, ширина, наклон, цвет и др. Набор параметров для каждого типа травы разный. Так, процедурность обеспечивает разнообразие внешнего вида, положения, изгиба и анимации каждой травинки, её взаимодействия с игроком, ветром или другими объектами.

Исходный размер 2480x936

Процедурная трава с разными значениями параметров. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

За большую часть анимации травы отвечает ветер. Он приводится в движение простой 2D-текстурой Perlin noise (шума Перлина), перемещающейся в том направлении, в котором дует ветер. Шум определяет силу ветра в каждой точке пространства и влияет на изгиб травы. Если с помощью синусоиды добавить простую анимацию покачивания травы и смешать её с анимацией ветра, то получится очень реалистичное колыхание. На сдвиг фазы синусоиды влияют параметры позиции травинки. Поскольку трава создается процедурно, анимация для каждой травинки и каждого участка травы немного отличается, что добавляет разнообразия и реализма.

Исходный размер 2480x690

Слева-направо: отображение ветра в виде 2D-текстуры Perlin noise; результат в игре. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

Иногда, если смотреть на травинки под «правильным» или «неправильным» углом, в играх трава выглядит слишком тонкой и редкой. В игре Ghost of Tsushima артисты стремились сделать поля визуально более насыщенными. Для этого использовали технологию, при которой травинки, расположенные перпендикулярно камере, слегка поворачиваются лицом к ней, что визуально немного утолщает травинки с угла зрения игрока.

Исходный размер 2480x684

3D-трава без поворота плоскостей травинок к камере; с поворотом плоскостей к камере. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

Исходный размер 2480x1068

Внешний вид 3D-травы на рендере. Материал из презентации «Procedural Grass in Ghost of Tsushima». GDC. Sucker Punch Productions. Эрик Воллайб. 2021

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

Исходный размер 2480x690

Игра Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Дуглас Дэвис. 2020

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

Исходный размер 2480x1800

Растения из игры Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Колин Валек. 2020

Исходный размер 2480x1179

Растения из игры Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Дуглас Дэвис. 2020

Исходный размер 2480x1393

Игра Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Колин Валек. 2020

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

Исходный размер 2480x1392

Игра Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Джон Джерманн. 2020

Преимущества и ограничения технологии

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

Исходный размер 2480x1395

Игра Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Дуглас Дэвис. 2020

С помощью всех описанных методов получают любые game-ready растения. В последние годы использование фотограмметрии и разработка процедурных ассетов в программе Houdini обретают всё большую популярность. Как раньше, так и сейчас, разработчики AAA-игр, приближенных к фотореализму, вносят какие-либо новшества за счет модификации и оптимизации двух существующих технологий. Возможности для этого открываются по мере роста вычислительных мощностей. Развитию методов создания растений также способствует нахождение разработчиками неожиданных возможностей применения технологий или инструментов, изначально предназначенных для других задач.

Исходный размер 2480x1389

Игра Ghost of Tsushima (Призрак Цусимы). Sucker Punch Productions. Колин Валек. 2020

Глава 2. Современные технологии создания трёхмерных растений
Проект создан 01.01.0001
Глава:
1
2
3
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше