Волосы на любой движ. Пайплайн для Game Ready Hair Style
Разбираемся, как сделать персонажу «живую» прическу, которая подойдет под любой игровой движок.
Сколько времени вы обычно тратите на визит к парикмахеру? Скорее всего, не больше пары часов. А теперь представьте, что вам нужна не обычная прическа, а цифровая. В этом случае запаситесь терпением, ведь создавать ее нужно в разы дольше. Цифровые волосы — явно не то, что делается в пару кликов. Это сложный и длительный процесс, на который даже бывалые CG-барберы тратят не менее 8 часов.

С другой стороны, прическа — отличный способ придать персонажу индивидуальность. Цвет, длина, стиль, ухоженность — все это может говорить о повадках и даже о жизненной позиции героя. И чтобы вам было проще подчеркнуть характер героя с помощью волос, мы с Пашей Медведевым провели воркшоп Game Ready Hair Style. В Autodesk Maya учились делать прически, пригодные для использования в любом игровом движке. А по итогам этого вебинара подготовили для вас пайплайн по созданию цифровых волос.
Сначала — идея и референсы
CG-прически — дело хлопотное. Для их производства нужен детальный подход, который требует времени, усидчивости, а еще готовности к постоянным перезапускам и пересозданиям. К тому же волосы будут забирать немало ресурсов памяти, даже если они оптимизированы под игровой движок. Поэтому разработчики игр нередко оставляют персонажа без причесок, заменяя их шапками. 

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

Затем можем планировать волосы для своего персонажа. Важно помнить, что для любой прически актуален один и тот же пайплайн. Сначала мы готовим основу из коротких волос. Поверх них накладываем крупные составляющие — пряди, локоны, кудри. В самом конце добавляем мелкие детали, например, торчащие волоски. 
Are You Game Ready?
Существует два принципиальных подхода в работе цифровыми волосами. Первый — это генерация причесок, которые выглядят очень реалистично. В этих случаях мы видим едва ли не каждую волосинку и можем ею управлять. Чтобы лучше понять, о чем речь, вспомните Салли из «Корпорации монстров» — в его мехе было 5,5 около миллионов отдельных волосинок.

Этот метод работает на основе системы частиц. Каждая волосинка является путем, которую оставляет частица, выпущенная из точки на голове. В этом случае мы создаем большое количество разных объектов, а для игровых движков это не очень годится. 

Поэтому, если нам нужны Game Ready волосы, лучше использовать второй подход. Он подразумевает моделирование не отдельных элементов, а целой группы. Мы разделяем волосы на пряди и создаем утрированные прически. По сути у нас получается стилизованная маска, которая напоминает массив волос. Такой подход куда экономнее в плане ресурсов и лучше подходит для игровых движков.
Генерируем прическу в XGen
Для начала рассмотрим подход генерации волос, который подойдет, например, под рендер, но не под Unity или Unreal. Для этого в Maya есть инструмент XGen, с помощью которого можно создавать дубликаты объектов и управлять их формой.

Для начала загружаем в программу болванку головы, для которой будем создавать волосы. Находим вкладку XGen и нажимаем кнопку Open XGen Window. В открывшемся окне выбираем Create New Description — тут мы прописываем общее правило для системы, которую будем создавать:

  • Задаем Description Name
  • В поле Create New Collection указываем имя для группа примитивов, из которых будут состоять волосы; 
  • Вид примитива оставляем по умолчанию — Spline
  • Задаем параметр Generate the Name — он отвечает за то, как волосы будут появляться. Тут тоже оставляем значение по умолчанию— Randomly across the surface (рандомно в разброс относительно направляющих). 
  • И напоследок параметр Control the Primitives — тут ставим галочку возле Placing and Shaping Guides. 
Наше правило готово, теперь приступаем к созданию самих волос. Для начала делаем дубликат головы (комбинация Ctrl+D), изолируем объект  (Ctrl+1), зажимаем правую кнопку мыши и выбираем Face. Затем обозначаем полигоны, на которых будут расти волосы.
Теперь мы создаем направляющие для волос — для этого нажимаем кнопку Add/ Move Guides — и проставляем их на голове. 
Изменять направляющие можно через окно Outliner. Выделяем их с помощью клавиши Shift и увеличиваем масштаб до того размера, который будет соответствовать длине наших волос. 
В настройках XGen мы можем задать количество сечений для направляющих. С их помощью можно регулировать, насколько детально волосы будут изгибаться. В разделе Primitive Attributes находим Guide Tools и жмем на кнопку Rebuild. Тут прописываем количество сечений. Как правило, 15-20 бывает достаточно. 

Дальше займемся укладкой наших волос. Находим кнопку Sculpt Guides, зажимаем кнопку B, с помощью колеса мыши выбираем нужный нам радиус и «причесываем» направляющие. 
Затем превращаем направляющие в волосы. Для этого в окне Generator Attributes увеличиваем значение плотности — Density. Чуть ниже — в Primitive Attributes — регулируем длину и толщину примитивов волос. Там же есть параметр Width Ramp, который меняет толщину волос от корня (R - roots) до кончика (T - tips).
Ну и напоследок подбираем подходящие модификаторы. Например, Clumping (слипание волос в пряди), Coil (закручивание), Сut (подрезка), Noise (шум) и другие.
Важно отметить, что для Clumping тоже нужно задавать направляющие, иначе инструмент работать не будет. Для этого заходим в SetUp Maps, нажимаем кнопку Guide, а затем Save. В Clumping мы можем регулировать слипание волос от корня и до кончика. 
После этого готовим «вторую порцию» волос по той же схеме — создаем новый Description, потом направляющие и так далее.
Пройди один из наших тестов:
Поздравляем, ты уже освоил один метод генерации волос. Антракт!
Делаем объемные заготовки для Game Ready волос
Теперь поговорим о механике генерации причесок непосредственно для игровых движков. И первым делом нам нужно создать заготовки, из которых мы будем собирать волосы. 

Для этого создаем примитивный объект, с которым будем работать. Справа в атрибутах настраиваем его параметры — длину, ширину, высоту и количество сечений.
Затем можем поменять толщину нашей заготовки на разных отрезках. Нажимаем правую кнопку мыши и заходим в Edge, затем дважды кликаем в какой-нибудь из лупов, с помощью клавиши B подбираем радиус для Soft Select и выбираем нужную нам толщину. 

Чтобы было удобнее управлять заготовкой, нам нужно перенести pivot — опорную точку объекта — в основание. Теперь все наши манипуляции будут происходить относительно этой точки.
После этого придаем нужную форму заготовке. Удобнее всего это делать с помощью деформаторов. Для волос чаще всего используются два — Twist и Bеnd. Оба они находятся в разделе Non-linear. Нужно иметь в виду, что деформаторы будут работать иерархически — тот, который мы применили первым, получает приоритет, а второй имеет дело уже с результатами работы первого.
Используя Twist, мы можем закручивать наш объект. Для начала позиционируем гизмо деформатора вдоль нашей заготовки. Затем в атрибутах находим вкладку Twist, меняем параметр Start Angle и придаем нужную форму объекту.
А вот Bend нам нужен для того, чтобы загибать нашу волосинку. Тут делаем все то же самое — перемещаем pivot деформатора к основанию, позиционируем гизмо вдоль объекта и меняем параметры в атрибутах. 

Еще один важный этап подготовки — привязка гизмо деформаторов к заготовке. Делаем это все в той же панели Outliner. Находим там наши деформаторы (twist1Handle и bend1Handle), выделяем их и колесом мыши перетаскиваем на объект. Теперь при перемещении примитива гизмо деформаторов будут двигаться вместе с ним.  
По такой же модели создаем все необходимые нам заготовки и используем их для формирования прически.
Готовим плейны
Следующую заготовку мы делаем по схожей механике, что и предыдущую, но результат будет больше похож на XGen-овский. Но этот способ не такой ресурсозатратный, и такими прическами намного легче управлять. Исходным примитивом тут будет плейн. Важно задать ему сечения только в одном направлении и спозиционировать pivot у основания примитива. В зависимости от того, какая нам нужна прядь, мы будем менять размер заготовки.
Дальше мы должны найти текстуры волос, которые будут создавать видимость отдельных волосинок. Например, текстура прозрачности. Для этого заходим в Google и скачиваем нужные нам волосы.
Затем возвращаемся в Maya и создаем новый материал. Лучше делать его без отражений, потому что в игровом движке все равно придется настраивать волосы своими шейдерами. Потому на вкладке Rendering находим кнопку Lambert Material. Задаем ему имя (например, hair) и исходный цвет — тот, в который мы хотим покрасить наши волосы.
Теперь переходим к прозрачности — ее будут создавать текстуры, которые мы скачали чуть ранее. В меню Windows выбираем пункт Rendering Editors и нажимаем Hypershades. Там уже есть наш материал hair. Зажимаем правую кнопку и выбираем пункт Graph Network. Затягиваем в это окно скачанную картинку с волосами и делаем из нее текстуру прозрачности. 

В нашем случае нужно инвертировать изображение, потому что изначально белые пиксели — это максимум прозрачности, а черные — ноль прозрачности. Нам же нужно наоборот. Для этого в левом окне Create находим инструмент Reverse, подключаем Input к Out Color, а Output — к Transparency нашего материала.
Следующий шаг — включаем отображение текстур во Viewport. Но самих волос мы пока не видим. Чтобы они стали видимыми, нужно отметить ту часть картинки, которая отображается в плейне. Переходим в интерфейс UV Editing, выбираем UV-точки в качестве элемента для редактирования и перетягиваем их таким образом, чтобы захватить нужное нам изображение. И вот в плейне появилась заготовка пряди, с которой мы будем работать.
Теперь добавляем объема нашим волосам. Для этого дублируем прядь несколько раз и немного сдвигаем по высоте. Чтобы появилась видимая толщина, можем инвертировать некоторые из дубликатов. 

Таким же способом создаем заготовки для прядей разной длины. Снова дублируем примитив, перетягиваем его и редактируем картинку для нового дубликата в UV Editing. Осталось добавить пару деформаторов — Twist + Bend — и готово. В итоге у нас получилось несколько примитивов-локонов, из которых мы можем собирать прическу, добавлять небритость и делать прочие манипуляции с волосами. 

В наших Game Ready прическах мы можем совмещать геометрию с плейнами. При этом важно хорошенько заморочиться и с самого начала подготовить все примитивы. Затем начинается работа парикмахера — мы добавляем на голову одну прядку за другой и придаем ей нужную форму.

Весь пайплайн по созданию волос смотри в видео ниже
Теперь можешь смело открывать Maya и пробовать создавать свои прически. А если хочешь глубже погрузиться в моделирование, записывайся на онлайн-курс Паши Медведева «3D Графика для игр и кино». Ты прокачаешь скиллы в Autodesk Maya, разберешься с принципами работы движков и сможешь собрать собственную игру в Unity 3D или Unreal Engine. Чтобы узнать больше, переходи по ссылке и записывайся на пробное занятие.
Арсений Овсянников
Автор статьи:
ArtCraft Copywriter
Поделиться статьей:
Любимые статьи преподавателей ArtCraft:
ArtCraft™ Education.
Registered international trademark. All rights reserved.