Создание Кожи Человека в Unreal Engine 4

0
4
Создание Кожи Человека в Unreal Engine 4

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

Настройка

Прежде чем мы приступим к созданию Материала, сначала мы должны собрать воедино некоторую справочную информацию. Это связано с тем, что обычно лучше всего начинать с нескольких ссылок на фотографии, которые имеют несколько условий освещения, поэтому вы можете проверить, как материал выглядит в разных условиях освещения. Если это вообще возможно, то отсканированные и откалиброванные исходные данные будут идеальными, так как это поможет убедиться, что вы получаете наилучшие результаты. При просмотре контента внутри редактора обязательно отключите редактор Editor Eye Adaptation для более контролируемой среды: Edit Menu > Project Settings > Rendering > Default Post Processing Settings > Auto Exposure.

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

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

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

Обычная Настройка

Вот список некоторых деталей, о которых вам нужно знать, прежде чем вы начнете создавать свои Skin Текстуры и Материалы.

  • Помните, что при создании текстур было бы идеально, если бы вы начали с текстур с очень высоким разрешением (например, 2K x 2K или выше), так как это даст наилучшие результаты.
  • Для более быстрой итерации лучше всего создать Экземпляр Материала и выставить параметры Scalar и Vector для более быстрой и легкой настройки, так как Материал не нужно снова компилировать во время настройки.
  • Имейте в виду, что активы должны быть проверены в нескольких условиях освещения, чтобы убедиться, что они верны. Даже включение Eye Adaptation, включенное в Volume Post Process, может существенно повлиять на то, как выглядят вещи в конце.
  • Чтобы избежать теневых артефактов, потребуются дополнительные усилия, потому что вам нужно будет настроить такие вещи, как теневое смещение, или использовать более сфокусированный световой конус для лучшего разрешения освещения.
  • При настройке может быть необходимо увеличить масштаб, отредактировав редактор FOV, поскольку не будет никакого срезания через геометрию, а также меньше искажений.
  • Редактор Field Of View (FOV) можно отредактировать, щелкнув стрелку вниз, расположенную рядом с пиктограммой Perspective, а затем с помощью мышки изменив значение FOC.

HS изменить FOV UE4

  • При просмотре вашей работы вы можете заметить, что потоковая система не учитывает масштаб и может размыть вашу текстуру, когда вы этого совсем не хотите. Это было намеренное дизайнерское решение для 3D-игр, но это может измениться в какой-то момент в будущем. Чтобы этого не произошло, вы можете изменить текстуру Streaming Distance Multiplier (множитель потоковой передачи) на экземпляре меши.

Материал

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

Материал родителя кожи HS UE4

Базовый Цвет

Цвет основания HS UE4

Одной из первых вещей, которые необходимо понимать, является то, что с очень большого расстояния эффект Subsurface Scattering (подповерхностного рассеяния) усложняется. Это означает, что лучше всего иметь Базовый Цвет вашей текстуры, если смотреть на расстоянии. Вы также можете использовать текстуру в оттенках серого, чтобы затемнить базовый цвет и зеркальный (вызванный окклюзией), чтобы в целом улучшить внешний вид кожи. Вы также можете добавить элементы управления Vector и Scalar, чтобы настроить цвет и мощность кожи, чтобы улучшить настройки для получения представления о вашем результате после.

Roughness – Резкость

Шероховатость HS UE4

Для кожи лучше всего начинать с постоянного значения Roughness (резкости) около 0,4 и настраивать уже оттуда. Имейте в виду, что фактическое значение зависит от масштаба / расстояния, возраста и влажности / сухости кожи, которую вы пытаетесь имитировать. В отличие от других текстур, мы явно хотим, чтобы карты mip выглядели по-другому. Вот как такая цепочка mip может выглядеть:

Шероховатость Детали UE4

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

Specular – Зеркальный

HS зеркальный UE4

Значение Specular для скина (кожи) устанавливается равным 0,35. Использовалось число 0,35, поскольку оно было получено из  значений Specular реального мира, которые были измерены, а затем преобразованы в диапазоны, которые мы используем.

Нормаль

HS нормальный UE4

Чтобы ваша Карта Нормали работала правильно для кожи, вам необходимо убедиться, что ваша карта нормали соответствует следующим критериям.

  • Корта Нормали, которая используется для лица, должна содержать только сведения о морщинах. Детали пор должны выполняться с использованием текстуры tiling (облицовочной), так как вы можете получить лучшие результаты таким образом.
  • При объединении Карты Нормали объекта с картой Detail Normal убедитесь, что вы используете Функцию Материала BlendAngleCorrectedNormals, чтобы объединиться, так как вы получите лучшие результаты. Также очень полезно выставлять параметры для настройки смешивания карт Нормали. Вы можете принять значение карты detail normal, добавить некоторое скалярное значение в z-компонент и нормализовать. Таким образом, вы можете перейти на плоскую детальную Карту Нормали с обычной.
  • Поскольку у кожи есть разные свойства затенения в разных областях, лучше всего совместить Резкость с текстурой, нанесенной объектом (не облицованной). Поскольку детальная Карта Нормали заставляет Резкость подниматься на расстоянии, мы должны это компенсировать. Нам также необходимо проверить затенение на нескольких шкалах / расстояниях просмотра, чтобы убедиться, что оно хорошо выглядит на всех расстояниях от камеры.
  • Современный рендеринг в реальном времени реализует затенение с освещением на пиксель. Обычно это приводит к очень высоким результатам, но для очень подробных Карт Нормали. Используя Mip Maps, мы избегаем мерцания и получаем лучшую производительность, но Mip Mapping не очень хорошо работает для карт Нормали, поскольку детали в нижних mips (мипах) просто не существуют, и поверхность кажется намного более блестящей, чем должна быть. Чтобы противостоять этому эффекту, мы можем соответствующим образом отрегулировать резкость. Это не захватывает анизотропные детали, но для ненаправленных признаков это достаточно хорошее приближение.

Opacity – Затенение

HS непрозрачность UE4

Ввод Непрозрачности управляет количеством Subsurface Scattering (рассеяния подповерхностного слоя). Значение 1 или чисто – белый означает, что рассеяние подповерхностного слоя должно проходить на полную мощность. Значение 0 или чистый черный означает, что не должно быть рассеяния подповерхностного слоя.

Pores – Поры

Поры HS UE4

Наличие Поры в коже – очень важная деталь для получения реалистичной картинки кожи. Однако из-за того, что деталь пор должна быть очень тонкой, очень сложно получить необходимое качество, просто добавив поры в базовую Карту Нормали. Добавление поры в виде отдельных доработанных текстур делает их лучше, а также упрощает их настройку.
Для изменения детализации Pole tiling в этом шейдере Выражение Материала TextCoord было умножено на Scalar Parameter, так что внутри Экземпляра Материала мы могли бы указать Поры по мере необходимости.

Вот посмотрите, как выглядят Pore Mask (маска поры) и Карты Текстуры Нормали, если смотреть на них крупным планом.

Создание Кожи Человека в Unreal Engine 4 Создание Кожи Человека в Unreal Engine 4

Поскольку поры немного погружены в поверхностные области, если смотреть под углом, они на самом деле менее заметны. Мы можем имитировать уменьшение впадин пор в зависимости от угла обзора поверхности. Это вычисление аналогично Fresnel и точно так же было имплементировано в SkinMaster Material.

Маска Френеля UE4

Использование Subsurface Profile – профиля подповерхностного слоя

Subsurface Profile (профиль подповерхностного слоя ) – это то, что делает кожу действительно похожей на кожу. Чтобы использовать профиль подповерхностного слоя в вашем Материале, вам просто нужно предоставить свой Материал или Экземпляр Материала профилю подповерхностного слоя, который вы хотите использовать.

Чтобы изменить это в Материале, все, что вам нужно сделать, это применить Subsurface Profile, который вы хотите использовать, на панели Details Редактора Материалов.

SSC применить профиль недр UE4

Чтобы изменить то, что Subsurface Profile использует внутри Экземпляра Материала, все, что вам нужно сделать, это сначала проверить Override Subsurface Profile, а затем предоставить Subsurface Profile, который вы хотите использовать, в разделе Subsurface Profile Экземпляра Материала.

SSP SSP в материальном экземпляре UE4

Полезные ссылки

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

Next Generation Character Rendering

Вывод

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