Волосы в видеоиграх: как менялись подходы к созданию причёсок на протяжении четверти века
От примитивных моделей до рендеринга по волоску.
Иллюстрация: Катя Павловская для Skillbox Media
В одной из статей журнала Vice встречается меткое высказывание о том, что эволюцию 3D-графики в видеоиграх можно отследить по причёскам персонажей. И действительно, с развитием технологий этот важный элемент образа становился всё более реалистичным. Тем не менее создание волосяного покрова в играх — как и лицевая анимация, например, — до сих пор остаётся болезненной темой для разработчиков и художников, особенно в контексте реалистичной графики.
И чтобы разобраться, почему делать волосы в играх так сложно, необходимо обратиться к истокам и заглянуть в прошлое.
1990-е: полигональные сетки и первые шаги в симуляции
Первые попытки добавить персонажам уникальные причёски встречаются в трёхмерных играх начала 1990-х годов прошлого века. Как правило, шевелюры героев там представляли собой набор полигонов и технически считались неотъемлемой частью модели персонажа. Отделить границу причёски от общей массы полигональной сетки помогали текстуры. Но даже на низкополигональных моделях художники старались подчеркнуть некое подобие причёски — от хвостов до ёжика из примитивных треугольников, как было, например, в файтинге Virtua Fighter 1993 года.
Если образ персонажа предполагал длинные волосы, ситуация усложнялась. Во-первых, возникал риск превысить количество отображаемых полигонов на экране. К примеру, именно из-за технических ограничений, связанных с коллизией и лимитом полигонов, в самой первой игре Tomb Raider косу Лары заменили пучком.
Во-вторых, длинные волосы, в отличие от коротких стрижек или бород, выглядели странно в формате цельной полигональной сетки, так как в этом случае меш привязывался к голове персонажа, из-за чего текстура начинала неестественно растягиваться при поворотах шеи. А если волосы были собраны в длинный хвост или косу, возникала потребность в дополнительной анимации.
Здесь снова напрашивается пример из оригинальной Tomb Raider. Анимация в этой игре создавалась не на основе скелетного рига, как сейчас, а на джоинтах. Под ними подразумевались небольшие фрагменты полигональной сетки, отвечавшие за вращение частей тела. Программируя вращение джоинтов, разработчики могли придать героине разные позы, создавая из них циклы движений. Начиная со второй части Tomb Raider, у Core Design всё же получилось добавить в игру косу в виде отдельного меша.
Этот элемент причёски Лары тоже состоял из нескольких джоинтов, и его анимация коррелировала с движениями героини. Например, если Лара падала вниз, то коса устремлялась вверх, а при горизонтальном прыжке — отклонялась назад. Также динамика джоинтов причёски зависела от определённых триггеров, отвечавших за условия окружения. Например, на открытых пространствах коса могла покачиваться на ветру, а под водой — извиваться и постепенно подниматься. Подобный подход считался достаточно инновационным для того времени, учитывая общую статичность шевелюр в играх.
Также в середине 1990-х годов появились первые наработки в области симуляции. Одна из таких встречалась в Virtua Fighter 3, где движения длинных волос персонажей, в частности конского хвоста Аой Умэнокодзи, обусловлены физикой.
Похожая динамика волос встречалась и в Soul Blade 1996 года — её можно заметить, если присмотреться к косе Софитии. В Tekken 3 (1997) хвост бойца Лэя Улуна тоже наделён физическими свойствами, хотя на видео ниже можно заметить определённые проблемы с коллизией во время геймплея.
А в Drakan: Order of the Flame длинные волосы героини Ринн, собранные в хвост, покачиваются из стороны в сторону при беге, а при прыжке меш хвоста слегка приподнимается.
И всё же вышеперечисленные примеры единичны в своём роде. Как уже отмечалось ранее, разработчики старались избегать длинных волос, а если они и встречались в играх, то, как правило, их наделяли минимальной динамикой в виде заранее подготовленных анимаций.
Напрашивается вывод, что технические ограничения побуждали разработчиков и дизайнеров сосредоточиться на геймплее и окружении, а проработку внешности персонажа компенсировали текстурами и красивыми скинами. Вероятно, именно поэтому роскошную шевелюру Джулии из анимационного фильма «Тяжёлый металл 2000» заменили на лаконичный пучок в Heavy Metal F.A.K.K. 2
Но если игра предполагала персонажей с длинными распущенными волосами, то в этом случае шевелюра представляла собой часть полигональной сетки модели, плавно перетекающей в спину. При экстремальной длине часть волос дорисовывалась текстурами.
Такой подход к причёскам использовали на протяжении 1990-х вплоть до начала нулевых. Волосы старались делать короче или собирали в простые конструкции из полигонов, а мех или щетину визуализировали с помощью текстур.
2000-е: новые возможности шейдинга
Ситуация стала меняться, когда игровые движки начали поддерживать больше полигонов в сценах, а также шейдеры со свойствами прозрачности (Opacity). В основном по своей структуре меши причёсок оставались неотделимыми от модели персонажа. Тем не менее использование карт прозрачности позволило 3D-художникам создавать более разнообразные варианты шевелюр.
На изображении ниже представлена модель Юны из Final Fantasy X 2001 года. Можно заметить, что меш волос выполнен лесенкой, на концах которой используются карты со свойствами прозрачности. За счёт полупрозрачных концов с эффектом филировки причёска героини выглядит более естественно.
А вот в Silent Hill 2 та же самая техника выполнена немного по-другому. Например, кончики волос в причёске Марии (на изображении ниже) состоят из плоскостей-лент с шейдерами прозрачности. И отдельный момент заключается в том, что полигональные пряди могут смещаться в динамике. Такой подход успешно применялся и в случае коротких стрижек, когда нужно было выделить чёлку.
Также на коллаже ниже можно заметить, что у модели присутствуют отдельные меши для ресниц, созданные по принципу слегка выпуклых плоскостей (для сохранения формы изгиба).
Если образ подразумевал волосы ниже плеч, то ленты из полигонов просто удлиняли — это можно заметить на модели Клаудии из Silent Hill 3.
Но встречались и исключения. В Metal Gear Solid 2: Sons of Liberty (2001) причёска Райдена выполнена как отдельный меш, замещавший часть головы персонажа. Такой подход выбран не только для того, чтобы движения волос лучше смотрелись во время динамичных кат-сцен. Ещё одна причина кроется в особом геймплейном элементе — возможности надевать на героя бонусные парики разного цвета, обладающие уникальными характеристиками и по-разному влияющими на игровой процесс.
Благодаря картам прозрачности шевелюры персонажей смотрелись в играх более правдоподобно. Но проблема передачи естественной динамики волос во время движений всё ещё оставалась актуальной.
Интересно, что движок The Legend of Zelda: The Wind Waker, вышедшей в 2002 году, поддерживал симуляцию одежды, гибких объектов по типу верёвок, а также волос. Поэтому даже стилизованная минималистичная чёлка Линка плавно двигалась в такт его движениям.
Что касается животных и существ, то, помимо вышеописанной техники с использованием плоскостей, встречались примеры, когда разработчики прибегали к использованию особых типов шейдеров, имитирующих меховую поверхность. При этом структура полигональной модели не менялась. Секрет заключался в специальной технологии рендеринга.
Например, такой способ отрисовки поддерживал движок AtmosFear, на котором создан шутер «Вивисектор: зверь внутри». Эта игра запомнилась правдоподобной визуализацией меха у животных и антропоморфных существ.
Информации о том, как Action Forms удалось создать такой эффект, довольно мало, а в медиапространстве тех лет по большей части встречались лишь общие тезисы восторженного характера. Учитывая, что разработчики использовали язык высокого уровня для программирования шейдеров (HLSL), а у каждой модели зверя во внутриигровых файлах с текстурами есть дополнительная маска с полупрозрачным слоем, можно предположить, что пиксельный шейдер меха сделан на основе вычислений.
В Сети есть «рецепт» похожего шейдера, и, если сопоставить примеры оттуда и модели из «Вивисектора», можно сделать вывод, что примерно такую же технику использовали и разработчики. И хотя некоторые пользователи отмечали, что визуально отрисовка меха уступала, например, меху зверей из Black and White 2, вышедшей в тот же период времени, по меркам 2005 года шейдеры в «Вивисекторе» всё равно выглядели довольно эффектно.
Шерстяной покров гигантских существ в Shadow of the Colossus тоже выполнен с помощью шейдера меха, но без программирования. Несколько параллельных друг другу плоскостей с разными характеристиками прозрачности накладывались поверх основного меша модели. В результате на экране отображались своеобразные «шипы» из хаотично расположенных участков текстуры меха — и таким образом формировалась объёмная фактура шкуры.
Примечательно, что подход разработчиков Shadow of the Colossus актуален до сих пор. И пример его использования встречается в игре Stray, вышедшей в 2022 году.
Вернёмся к теме волос. В эпоху консолей седьмого поколения — PlayStation 3 и Xbox 360 — в некоторых играх причёска уже создавалась как отдельный меш, по аналогии с моделью Райдена, описанной ранее. Таким образом, разработчики могли задать различные условия физики для отдельных частей шевелюры.
В 2007 году вышел слэшер Heavenly Sword, разработанный с использованием последней на тот момент версии физического движка Havok. Эта технология задействована и в симуляции волос главной героини Нарико. И хотя в динамике красные полигональные пряди экстремальной длины порой выглядели довольно хаотично, дерзкий фэнтезийный образ стал визитной карточкой персонажа.
Ближе к концу десятилетия художники стали использовать технику наложения карт-плоскостей небольшого размера с полупрозрачными текстурами. Текстуры создавались на основе смоделированных волосков-кривых, запечённых в наборы карт. Эти карты, также известные как Hair Cards или Hair Sheets, применяли на плоскости небольшого размера. Полученные полигональные фрагменты распределяли по основной модели.
Gears of War 2 стала одной из первых игр, где начали применять такую технику. Скопления плоскостей с полупрозрачными текстурами могли не только придать причёске визуальный объём, но и сформировать более правдоподобную растительность на лицах персонажей. Ведь ещё буквально десять лет назад бороды и щетину создавали при помощи текстур или за счёт дополнительного рельефа полигональной сетки.
Техника Hair Cards / Hair Sheets работает по тому же принципу, что и создание ресниц или формирование прядей волос. Но сам процесс более кропотливый, так как длина «кусочков» может различаться, равно как и текстура, наложенная на них. Сама основа в этом случае будет более реалистичной, так как пряди сформированы кривыми, а не отрисованы вручную или получены в результате фотосканирования.
Довольно быстро область применения подобных плоскостей расширилась, и художники начали использовать их даже для формирования бровей.
2010-е: стремление к реализму
В 2010-х годах в погоне за реализмом разработчики стали уделять волосам персонажей ещё больше внимания. Полигональная сетка причёски превратилась в отдельный сегмент, похожий по форме на парик из множества ранее упомянутых Hair Cards.
Такой подход не только добавлял желанного реализма, но и позволял оперативно заменить один меш на другой, если внешний вид персонажа менялся в процессе игры. Также подход был удобен при многократном использовании — например, во время создания NPC. В настоящий момент формирование волосяного покрова из отдельного меша или групп мешей считается стандартом индустрии.
Существует много способов создания таких полигональных конструкций. Во многом подход зависит от визуального стиля игры и причёски персонажа. Но чаще всего художники прибегают либо к скульптингу и последующему наложению текстур, либо к формированию шевелюры с помощью профильного софта, поддерживающего симуляции и процедурную генерацию на основе кривых. На местах предполагаемого волосяного покрова размечают сплайны и генерируют кривые из исходных точек. Придав им желаемую форму, конструкцию оптимизируют и, в зависимости от сложности, запекают в один или несколько мешей.
Также можно упомянуть подход с созданием волос на основе процедурной геометрии и систем частиц в реальном времени — как, например, в Blender или в плагине Yeti в Maya. Финальный результат впечатляет, но требует очень много ресурсов, что критично для производства видеоигр. Всё дело в том, что во время симуляций постоянно рассчитывается физика, коллизия (при столкновении с другими объектами), отражение света и прочие свойства каждого волоска. Тем не менее эту технику активно применяют в производстве анимационных фильмов.
Остальные волосы на лице и теле (ресницы, брови, щетина, волосы на груди, на руках и так далее) также стали разделять на отдельные группы мешей. Ниже можно увидеть пример самых базовых форм мешей, выполненных на основе Hair Cards в игре начала 2010-х годов.
Подобный метод формирования причёски из плоскостей и полупрозрачных карт довольно эффективен с точки зрения производительности. Но время шло, и чем реалистичнее становилась графика в играх, тем больше возникало сложностей с созданием не менее реалистичных волос.
Вскоре появилась новая технология рендеринга, которая вывела отображение волос в 3D на новый уровень. В индустрии она известна как метод strand-based. Слово strand означает «нить», и в данном контексте его можно интерпретировать как «волос». Секрет заключается в том, что причёска на экране преобразуется в тысячи, а порой и в миллионы волосков-кривых, которые представляют собой виртуальные полигоны, чаще всего преобразованные с помощью специального графического фреймворка Alembic. Внешний вид и физические свойства таких волос очень схожи с волосами в реальной жизни.
Главный недостаток этого метода в том, что подобный рендеринг основан на большом объёме вычислений во время процесса растеризации и требует мощной видеокарты. Но это не помешало TressFx от AMD и HairWorks от NVIDIA уже в 2010-х годах, привлекать игроков реалистичной для того времени картинкой и мотивировать разработчиков присмотреться к новой технологии.
В своё время TressFx стала известной благодаря интеграции технологии в переосмысленную Tomb Raider, вышедшую в 2013 году. Новая причёска Лары не только отображалась буквально по волоску, но и отличалась реалистичной физикой, обусловленной движениями персонажа, а также условиями окружения (вода, снег, ветер и так далее). В настоящий момент пятая итерация технологии TressFx доступна для интеграции в Unreal Engine — правда, пока только для версий 4.26 и 4.27.
Что касается HairWorks, то эта технология совмещала предыдущие наработки NVIDIA в области рендеринга и симуляции волос, а также меха и шерсти. А плагины HairWorks позволяли художникам регулировать густоту и форму волосяного покрова в программах для 3D-моделирования.
HairWorks поддерживали многие игры 2010-х годов, включая Far Cry 4, Call of Duty: Ghosts и The Witcher 3: Wild Hunt. В последней, к слову, нередко отмечались жалобы пользователей, что технология обрабатывает волосы Геральта некорректно. По этой причине был создан даже специальный мод, исправляющий ситуацию.
В индустрии 2010-х годах существовали и другие технологии в области рендеринга и симуляции волос, которые использовались в рамках определённого софта или движка. Некоторые из перечисленных ниже актуальны до сих пор.
- В движке Dawn Engine от Eidos Montréal существовала собственная система для рендеринга волос персонажей, которая фактически представляла собой улучшенную технологию TressFx. Пример её использования можно встретить в Deus Ex: Mankind Divided.
- Собственная технология рендеринга волос и меха в Luminous Engine (игры Square Enix). В конце десятилетия стала известна как Luminous Hair.
- Встроенная система для волос в движке Frostbite (Mass Effect: Andromeda, Dragon Age: Inquisition). Несмотря на то, что подход Frostbite уступал другим решениям в индустрии, к концу десятилетия технология заметно эволюционировала, и результат этой эволюции можно увидеть в видео ниже. Специфику подхода мы рассмотрим ниже.
- Движок Unreal Engine поддерживал улучшенные шейдеры для волос ещё в четвёртой итерации. Ближе к концу десятилетия в нём появилась собственная система Groom для создания реалистичной симуляции волос по ранее упомянутому методу strand-based.
- Процедурный метод создания волос и шерсти в Houdini.
- Различные плагины для софта и движков. Из самых известных можно упомянуть XGen от Maya; Ornatix для 3ds Max и плагин NeoFur для Unity от NeoGlyphic (в настоящий момент поддержка технологии прекращена).
К концу десятилетия возможности движков и железа достигли достаточной мощности, чтобы отображать в играх высокополигональные модели с высоким разрешением текстур. И вскоре художники смогли воплощать самые смелые и сложные задумки. Например, причёска Элой из Horizon: Zero Dawn, ставшая визитной карточкой героини, состоит из 100 тысяч треугольников и анимирована на основе 50 сплайнов.
Наши дни и будущее
В настоящее время разработчики продолжают добиваться идеального отображения волос, оттачивая уже наработанные техники. Например, в большинстве AAA-игр художники используют комплексный подход к созданию шевелюр, сочетая технику Hair Cards с поддержкой рендеринга методом strand-based. Иными словами, при наличии мощной видеокарты вблизи причёска персонажа отображается буквально по волоску, а при низком уровне детализации или на слабой системе игрок увидит шевелюру, состоящую из полигональных прядей и полупрозрачных шейдеров.
В случае стилизованных персонажей 3D-художники по-прежнему создают причёски методом скульптинга. Отличия лишь в более усовершенствованной физике и использовании шейдеров, обеспечивающих более мягкое отражение света.
Поиск новых решений в индустрии в отношении реалистичного рендеринга волос продолжается. Из самых последних наработок можно отметить несколько новейших технологий.
- Плагин Groom в Unreal Engine 5. Поддерживает как импорт систем волос на основе метода strand-based в формате специального фреймворка Alembic, так и альтернативные варианты геометрии причёсок в виде карт и мешей. Для более точных настроек шевелюры доступен встроенный редактор Groom Asset Editor.
- Система рендеринга и симуляции волос в Unity, ранее представленная в техническом демо Enemies. В перспективе улучшенная версия этой технологии появится в стабильной версии движка Unity 6.
- Набор инструментов GroomBear для Houdini. Содержит специальные ноды для генерации меха и волос в рамках софта, кисти, а также ноды для конвертации в геометрию (например, для плоскостей, перьев и так далее).
- Усовершенствованная технология движка Frostbite, упомянутого выше. Новая система также основана на методе strand-based, а динамика волос обусловлена физикой. Результаты прогресса можно оценить не только по причёскам футбольных звёзд в современных симуляторах вроде EA Sports FC, но и в недавно вышедшем трейлере Dragon Age: The Veilguard, удивившим игроков реалистичной физикой длинных волос и их отображением в реальном времени.
О последней технологии стоит рассказать поподробнее. В прошлом поклонники Dragon Age постоянно жаловались на технические ограничения серии, которые не позволяли создать персонажа с длинными волосами, а реализация динамики причёсок и общий их вид оставляли желать лучшего. Но BioWare прислушалась к сообществу и сделала ещё один шаг к тому, чтобы волосы персонажей выглядели более реалистичными.
Секрет нового подхода в том, что волосы импортируются в движок Frostbite в формате NURBS. Вдоль каждого волоска формируется тесселяция — набор точек для формирования кривой. Чем больше таких точек, тем лучше результат. Чтобы сохранить баланс между реализмом и производительностью, разработчики используют ограниченное количество точек. Например, в демонстрационном видео Frostbite, представленном ранее, использовано 25 точек на один волос. И вполне вероятно, что в будущем подход с NURBS получит более широкое распространение.
В одном из материалов мы уже упоминали, что сейчас в области 3D-графики специалисты начали активно присматриваться к нейросетям. И создание волос в этом плане не исключение. Из актуальных наработок можно выделить, к примеру, Digital Salon и Haar. NVIDIA также активно изучает область генеративного ИИ и нейронной графики, привлекая к своим исследованиям десятки научных сотрудников из различных институтов по всему миру.
В перспективе результаты этих исследований помогут специалистам в области искусства, архитектуры, графического дизайна, разработки игр и кино оперативнее создавать качественный контент для раскадровки и превизов, а возможно, и для разработки игр.
***
Создать реалистичную причёску в 3D довольно сложно — в первую очередь из-за сложной передачи динамики, которой волосы наделены в реальной жизни. Эти движения обусловлены различными факторами. К тому же, в отличие от реальности, даже самая продвинутая физика в программах для 3D-моделирования и движках обусловлена определёнными сценариями и множеством настроек.
Ситуация усложняется тем, что в идеале характеристики волос должны изменяться под воздействием внешней среды, в том числе в плане физических свойств, например при контакте с водой, грязью или при отражении солнечного света. И в этом отношении волосам тоже не хватает реализма. Например, в Unreal Engine нередко встречаются баги с отображением цвета волос из-за освещения.
И в конце концов, даже современные игровые миры, подразумевающие большое количество NPC, нуждаются в оптимизации, что сказывается на прорисовке и уровне детализации.
В совокупности все эти нюансы пока не позволяют полностью избавиться от эффекта зловещей долины. Поэтому разработчики продолжают улучшать технологии рендеринга и физики, чтобы в конце концов довести волосы персонажей в играх до совершенства.
К тому же не стоит забывать, что сегодняшние понятия о стандартах графики сильно размыты, учитывая популярность стилизаций вроде сел-шейдинга или low-poly. Отображение причёсок по волоску встречается далеко не в каждой игре, а в некоторых инди-проектах с определённой концепцией дизайнеры могут намеренно использовать самые примитивные техники. Но разве можно осуждать их за это? История доказывает, что порой в таких экспериментах можно найти не только решение для актуальной задачи, но и неожиданно открыть новые грани виртуального парикмахерского искусства.