Создание персонажа для unreal engine 4

Создание персонажа для unreal engine 4

Epic Games выпустила подробную документацию по созданию реалистичных персонажей в игровом движке Unreal Engine 4. В качестве примера приведён персонаж Дуплет (ранее Твинбласт) из игры Paragon, MOBA от Epic на PC и PS4.

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

Цель данной документации — дать возможность любому человеку научиться создавать такие же материалы и модели, как это делает команда Epic. Чтобы начать работу, откройте лаунчер и загрузите проект со вкладки Learn. Когда вы его откроете, нажмите Play в Editor и покрутите бюст героя в реалтайме.

Перевод — Photorealistic Character Unreal Engine 4

Для получения дополнительной информации о технологиях, используемых для создания персонажей, обратитесь к этому лайфстриму от Epic Games: Tech & Techniques Behind Creating the Characters for Paragon — ссылка.

Skin Shading

Кожа представленного ниже персонажа сделана благодаря UE4 Subsurface Profile.

Это специальный метод используется для рендера реалистичной кожи или воска, он аналогичен методу "Subsurface", но имеет принципиальное отличие в том, как он визуализирует: Subsurface Profile основан на пространстве экрана. Рендеринг экранного пространства более эффективен для отображения тонких эффектов слоёв кожи, где рассеивание при отражении является вторичным эффектом, которое наблюдается только в нескольких случаях, например, на ушах.

Обратите внимание на использование Material Functions для настройки основы материала кожи. Это делается как многоразовый авторский подход к созданию материалов для персонажей из Paragon. Таким образом, художники могут стандартизировать подходы к созданию определенных типов поверхностей, зная, что изменение одной функции будет обновлять все элементы, в которых она используется.

Skin Shader Textures

Текстуры, используемые на коже персонажа, имеют разрешение 4K и первоначально были получены благодаря сканированию лица актера. Текстуры были затем очищены и изменены художниками из Epic. Эта настройка кожи использует пять текстурных карт: Diffuse, Roughness, Specularity, Scatter и Normal.

Текстуры Название Описание
Diffuse

Диффузная текстура поставляет базовый цвет для материала. Если приблизить 4K, то можно заметить крошечные капилляры. Любое потемнение морщин будет подчеркивать Normal Map.

Roughness

Карта Roughness сохраняется в альфа канале Diffuse карты. Это общий метод, используемый для уменьшения количества текстур. Обратите внимание, что шероховатость увеличивается в местах с порами и морщинами. Это заставляет эти области казаться менее блестящими, подчеркивая глубину Diffuse и Normal карт.

Specular

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

Scatter

Карта рассеивания отвечает за то, как много света будет рассеиваться на поверхности кожи. Темные участки, такие как щеки, практически не будут рассеивать свет, в то время как светлые зоны носа и ушей, изображенные на фото, будут рассеивать свет. Цвет рассеивания управляется в Subsurface Profile Asset.Normal Map

Normal

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

Hair Shading

Обрабатывается в Unreal Engine 4 Hair Shader Model. Этот шейдер — модель PBS, основанная на исследованиях Steve Marschner, Eugene dEon и Hanika Johannes, и в настоящее время используется Weta Digital.

Чтобы начать работу с шейдером, установите параметр Shading Model вашего материала на Hair.

Волосы и блики

В реальном мире волосы обладают несколькими бликами: один представляет собой цвет света, а другой является смесью цвета волос и светлого цвета. Для упрощения мы будем называть эти блики первичными и вторичными. UE4 Hair Shader показывает очень реалистичный результат с теми же эффектами.

1. Более светлые волосы являются первичными бликами. 2. Более яркие и рыжие волосы представляют вторичные блики.

Алгоритм аппроксимации, используемый в UE4 Hair, создаёт эти эффекты аналогично тому, как они сделаны в реальном мире. Когда свет попадает на волосяной фолликул, он не просто отталкивается от поверхности. Волосы просвечиваются, они позволяют пропускать через них некоторый свет, после чего свет отталкивается и выходит за пределы. Шейдер для волос достигает такого результата благодаря трем возможным путям движения света, как показано на анимированном GIF ниже:

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

Номер Описание

Направление роста (от корня до кончика) волосяного фолликула.

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

Читайте также:  Комплекс самоздрав дыхательный тренажер отзывы врачей

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

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

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

Волосы и их прозрачность

Hair Shader использует Masked Blend Mode вместо прозрачности. Masked Blend Mode даёт бинарный результат — поверхности либо полностью непрозрачны, либо полностью прозрачны. Noisy Dither Pattern постоянно перемещается по поверхности, становясь непрозрачной в более плотных местах. Dither используется как способ смешивания Masked Transparency, но работает только когда TemporalAA активен.

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

Edge Masking

Хотя это и не является частью шейдера, но стоит отметить, что материал, используемый на волосах персонажа из данной статьи, а также других персонажей игры Paragon, использует так называемый "Edge Masking" для исчезновения волос, повернутых к камере. Поскольку волосы визуализируются как серия плоскостей — см. Раздел «Волосы и геометрия» ниже — вполне вероятно, что с определенных углов камеры можно было бы увидеть край каждой плоскости, нарушив эффект волос.

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

Создание волос для игрового персонажа

Перед тем как создать геометрию волос, следует посмотреть, как команда Epic конструирует волосы для игровых персонажей.

Геометрия волос

Данная геометрия создана с помощью нескольких плейнов, расположенных по всей поверхности головы, что является стандартным решением во многих real-time движках.

Нет никаких жестких правил для детализации геометрии волос вашего персонажа, но следует отметить, что Дуплет использует около 800 отдельных плейнов, в общей сложности около 18000 треугольников. Также обратите внимание, что материал для волос установлен двусторонний в свойствах Material Node Properties.

Текстуры волос

При использовании UE4 Hair шейдера конечный результат достигается следующими текстурами: Diffuse, Depth, Alpha, Root и Unique ID. В Epic эти текстуры обычно генерируются с помощью системы волос 3ds Max, которая проецирует имитируемые волосы на кусок геометрии. Однако есть много других вариантов для подобных результатов.

Текстура Название Описание Diffuse

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

Alpha

Альфа текстура обеспечивает прозрачность тех участков, где нет текстуры волос.

Root

Текстура Root является маской для изменения цвета волос от корня до кончика. Полезна при осветлении или затемнении волос по их длине.

Depth

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

Unique ID

Текстура The Unique ID просто дает уникальное значение от 0 до 1 (от черного до белого) для каждой пряди на заданной части геометрии волос. Это используется для обеспечения различной вариации волос.

Свойства Hair Shader

Когда вы будете использовать Hair Shader, то увидите новые свойства, доступные в ноде материала: Scatter, Tangent и Backlit.

Scatter

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

Тем не менее, рассеивание света по-прежнему имеет решающее значение для того, насколько реалистичными окажутся волосы в игре. Чтобы контролировать это, Hair Shader имеет параметр Scatter, который заменяет Metallic основного нода шейдера и ограничивается значениями от 0.0 до 1.0. Scatter контролирует, сколько света проходит на всех волосах персонажа, как если бы это была одна поверхность.

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

Читайте также:  Как отправить видео через инстаграм

Tangent

Свойства Tangent заменяют свойства Normal на шейдере волос. Tangent вычисляется как вектор, который проходит параллельно каждой пряди волос, направленный назад к корню. Цель Tangent заключается в том, чтобы помочь настроить правильное анизотропное отражение. Если вы не знакомы с этим, то анизотропное отражение — это то, что происходит, когда свет отскакивает от поверхности с микро-порезами, например, шлифованный металл.

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

Tangent может отображаться одним из двух способов: автоматически или с помощью карты Flow. Автоматический метод просто требует, чтобы текстуры для каждого листа волос были ориентированы таким образом, чтобы корень был направлен вверх, а кончики — вниз. Если волосы короткие, и никакие плейны не изгибаются и слишком сильно скручиваются, то этот метод является адекватным. Он используется и на персонаже, представленном в этом уроке (мужчина).

Flow Maps

Другой метод требует создания Flow карты. Это будет полезно, если волосы вашего персонажа длинные, а также они должны казаться изгибающимися и завитыми больше, чем фактическая геометрия, или если отдельные участки текстуры для волос ориентированы по-разному (не сверху вниз, как описано выше). В проекте Photoreal Character Bust вы можете найти неиспользованную Flow карту с именем T_Hair_Flow. Ниже приведено сравнение этой карты и финального результата.

Здесь вы можете увидеть, как текстурирована Flow Map на примере волос Сойки (Sparrow). Обратите внимание, что карта используется только на некоторых участках, а не на всей голове.

Использование Pixel Depth Offset и Hair Shader

Pixel Depth Offset (PDO) не является свойством, уникальным для Hair Shader. С точки зрения непрофессионала, PDO заставляет пиксели отдаляться от камеры, создавая искусственное ощущение глубины. Так как волосы состоят из простых плейнов, как описано в разделе "Волосы и геометрия", использование PDO может обеспечить ощущение глубины формы волос в целом.

Вторая часть статьи о создании реалистичного персонажа в Unreal Engine 4, в которой будет подробно описано создание глаз, можете посмотреть здесь: Devgam.com.

Редакция Devgam

Благодарим наших читателей и подписчиков за проявленный интерес. Поделитесь постом в социальных сетях.

С UE не работал (Unity наше всё), но варианта вижу два:

1. либо настроить вес вершин для каждой кости так, чтобы не было деформаций, и чтобы к выбранной кости были привязаны только нужные вершины (что будет довольно сложно реализовать);

2. либо не использовать Skin, и присоединить с помощь Link отдельные элементы к костям скелета, и тогда они будут повторять движения костей являясь дочерними объектами (в Unity такое работает без проблем, должно и в UE работать).

Меня зовут Оскар Холлберг, сейчас я на первом году обучения 3D графике в Future Games, Стокгольм, Швеция.

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

Влод — гарпунщик из Сирока

Это Влод, самый скромный и в то же время — самый крутой гарпунщик Си Рока.

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

Идея создания персонажа появилась из необходимости работать после учебы, а также постоянных обсуждений совместной работы с моим хорошим другом Никласом Валленом, который разработал оригинальный концепт. Моей основной идеей была проработка анатомии, текстурирование кожи в Substance Painter, а также детализация одежды и брони напрямую в ZBrush.

Скульптурирование и анатомия

С анатомией у этого парня не все просто. Я очень хотел передать мощь и силу 2.5 метрового человека-акулы, но чтобы он не выглядел кровожадным зверем. И чтобы люди не удивлялись, услышав, что он весельчак и выпивоха.

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

Читайте также:  Прохождение игры финал фэнтези 13

Также нужно держать в уме, что при создании гибридных существ мало просто дать человеческому телу акулью голову или наоборот (хотя человеческая голова с телом акулы звучит круто). Необходимо придать этому естественности. Вы создаете не "Получеловека-полуакулу", но совершенно новое создание, самобытное и правдоподобное.

Я всегда провожу много тестового позиционирования во время работы, чтобы убедиться, что суставы и формы работают правильно во время риггинга и анимации. Самый простой выход — ZBrush, а если присутствует большое количество наложений, например, одежда, можно перемещать все сразу при помощи Transpose Master.

Мой рабочий процесс создания тел целиком основан на Курсе Анатомии Рафаэля Грасетти. Очень рекомендую к ознакомлению, если вы ищете прямой подход.

Одежда и аксессуары

Marvelous Designer занимает в моей жизни все больше места. На этот раз я решил использовать его и для создания частей брони, поскольку вместо того, чтобы вручную ставить пластины в ZBrush, я могу сшивать их, используя супержесткий материал, и в то же время добиваться должной деформации нижнего материала. Так я создаю единую полигруппу для пластин, разбиваю группы, а затем, используя zmodeller, меняю ширину пластин.

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

Текстурирование кожи

Как я создавал текстуру кожи:

1. Создал слой заливки с основным цветом кожи.

2. Создал новый слой заливки с немного более темным значением, а также добавил фильтр Запекания света. Настроил режим наложения на мягкий свет и 50 затененности.

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

4. Создал слой заливки с черной маской. Вставил значение высоты 0.04 и выбрал наиболее темный цвет для основного цвета. Добавил слой заливки к черной маске и использовал “Gaussian Spots 2” в качестве оттенков серого, выставив 15. Это добавит небольшие поры. В зависимости от того, какой вид вы хотите придать, можно немного поиграть с отрицательными значениями высоты.

5. Создал новый слой заливки (не отставайте, почти закончил) и добавил черную маску. Нужно выбрать цвет, который подтолкнет к выбору второго, чтобы придать ей схожести с моей, нужно использовать Dots Brush. Для затенения нужны очень низкие параметры.

6. Теперь — финальный слой. Я создал полностью черный слой и применил черную маску в редакторе. Здесь же необходимо выставить все значения на 0, кроме изгиба — 1. Это позволит собирать всю информацию о курватуре запеченных нормалей и добавит более темное значение полостям модели. С затемнением можно играться, пока результат не будет устраивать.

Если все сделано правильно, в итоге получится вот так, за исключением шрамов:

Чтобы добавить второй цвет, я просто аккуратно красил круглой кистью с малым затемнением, выкрутив все доступные рандомизирующие настройки, пока не был удовлетворен результатом. Можно еще поиграть с любой из указанных мной масок, вдруг получится что-то крутое!

Презентация в UE4

Я не использую ничего сверхъестественного в UE4, кроме моделей затенения кожи, а также добавления подповерхностного цвета к основному. Еще я использовал шейдер глаз из проекта Epic Games “Digital Human”.

Освещение было сделано за 5 стадий:

1. Поместите один направленный источник света туда, где он подчеркнет преимущества модели.

2. Добавьте второй источник, чтобы избавиться от плохих теней, вызванных первым.

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

4. Добавьте последний направленный свет, который станет главным источником света. Без других он будет слишком слаб.

5. В конце добавьте еще парочку точечных источников, где — по вашим ощущениям — надо рассеять тень.

Вот и все! Надеюсь, вам понравился мой небольшой разбор модели персонажа по имени Vlod. Если у вас есть другие вопросы или вы хотите связаться со мной, напишите на мой ArtStation. С удовольствием помогу, чем смогу!

А если вы только начинаете работать над обрисовкой персонажей или в целом 3D и чувствуете, что количество информации зашкаливает, взгляните на мою лучшую работу 1.5 года назад (я даже использовал базовый мэш):

Ссылка на основную публикацию
Совместимость ssd с ноутбуками
Вопрос совместимости Многие пользователи интересуются совместимостью материнской платы и SSD, который они купили или хотят купить. Опыт показывает, что не...
Скрыть не интересуюсь уже купил спам мешает
"Яндекс" запустил опцию "Скрыть объявление" на сайтах входящих в Рекламную сеть Яндекса. Опция позволяет отключить показ рекламных объявлений, которые в...
Слабо работает интернет что делать
Как настроить роутер, как настроить модем, как настроить оптический терминал. Настройка роутера по http://192.168.1.1 или http://192.168.0.1 Что делать если медленно...
Совместимость ремешков apple watch
Здесь приводятся общие инструкции, которые помогут Вам снять, поменять и застегнуть ремешок. В случае смены ремешка убедитесь, что размеры используемого...
Adblock detector