Making Of "Creepy Fairy"

Всем Привет!
Меня зовут Женя, мне 26 лет, из которых последних лет 5 я занимаюсь 3D графикой. В данный момент работаю в компании Gameloft на позиции 3D художника по персонажам.
В этой статье я расскажу о процессе создания персонажа Creepy Fairy.
И так, началось все около года назад. Изначально персонаж делался для одной из игр Геймлофта, он был частью сета монстров которые готовились под новый апдейт. Кстати пока пишу эту статью я уже успел закончить новый рендер следующего монстра из этой пачки. Вот тут его можно лицезреть.
К сожалению, по разным причинам разработка персонажей остановилась, и в игре они так и не оказались. В какой игре сказать не могу из за особенностей NDA=\
Прошел год, как-то вечером я сидел и думал, что одна из моих самых слабых сторон это работа со светом и основная причина как я понимал, это отсутствие практики, ведь теории я прочитал мягко говоря немало. Свободного времени было не так много, поэтому я остановился на двух вариантах практики, это либо делать спидскульпты и изучать разные типы освещения на них, либо порыться в архиве работ которые я сделал за последний год или два, и отталкиваясь от дизайна персонажей делать разные сценарии освещения.
Тут то я и вспомнил про этих монстров, открыв их спустя год, как это обычно бывает я увидел довольно много моментов которые сейчас бы сделал лучше. Но в целом выглядели они неплохо, мне показалось что у них есть потенциал и это хорошая возможность поработать с атмосферным освещением, плюс в данном случае меня зацепил огонь, который я сразу захотел сделать Real-Time техниками.

image001.jpg

О процессе
Сразу хочу оговорится, самого персонажа, то есть High Poly и Low poly с текстурами я делал около года назад. Поэтому многих нюансов я уже не помню, но постараюсь выделить несколько интересных моментов и техник. А вот позу, огонь и сам собственно рендер я делал недавно, потому на этих этапах я остановлюсь подробней.
Из технических аспектов: персонаж оптимизирован под мобильные движки, так что поликаунт около 10к треугольников, 2 текстурных сета по 1к, симметричные UV, огонь – плашки с альфой и рендер в Marmoset Toolbag.
И так, теперь с самого начала.
Как это обычно бывает в продакшене, я получил классный концепт арт от Марии Щербаковой.

image003.jpg

Концепт арт

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

image005.jpg

Процесс блокаута

По поводу процесса скульптинга, кажется, рассказывать особо нечего. Использую классические кисти ClayTubes, Standart, Dam.Standart и Smooth Directional. На последней можно остановится немного подробней, я часто использую эту кисть вместо обычного Smooth, она сглаживает только в направлении ваших штрихов, а не в направлении, перпендикулярном вашему ходу, что помогает сгладить неровности не теряя при этом объема и краев, ну и в целом по ощущениям получается более контролируемый процесс сглаживания. Саму кисточку можно найти в лайтбоксе.

image007.jpg

Разница между Smooth и Smooth Directional

Из интересных моментов можно выделить пояс, он состоит из большого количества однотипных элементов, я сразу понимал что на этапе лоуполи для экономии места на текстуре, буду использовать всего два оригинальных элемента (череп и рука) которые буду дублировать и расставлять в нужные положение, но мне хотелось уже на этапе скульпта иметь полноценную композицию всех элементов дизайна. Поэтому я не поленился и сделал это на хайполи, плюс полезная практика с разными позами рук, канаты - Curve Tubes.

image009.jpg

Финальный вариант пояса

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

image011.jpg

image013.jpg

image015.jpg

Ну и в полный рост.

image017.jpg

Или вот, немного в другом освещении и шейдере.

image019.jpg

image021.jpg

Low Poly
После завершения хайполи, на очереди всеми нелюбимые этапы: ретопология, UV развертка и запекание текстур=)
Ретопологию делал в Maya средствами Quad Draw tool. Поликаунт – 10к треугольников.
Тут особо нечего добавить, все по классике, больше поликов на местах деформаций и все что не влияет на силуэт оставить для текстур.

image023.jpg

Low Poly

UV
Тут самый главный принцип — это максимально использовать все пространство текстурной карты. Все тело персонажа полностью симметрично, поэтому и ювишки я делал также. Я старался максимально выровнять все края UV-островов, чтобы при уменьшении текстур для разных девайсов не возникало артефактов в смещении пикселей. Так же через некоторые особенности движка, пришлось делать 2 UV сета на одном из которых содержались все элементы с прозрачностью, поэтому Texel Density у них немного разное.

image025.jpg

UV Sets

Baking
Все текстуры запекал в Substance painter. За годы перепробовал много разных софтов для этого дела и SP мне подходит больше всего.
Хотя даже он не всегда справляется с первого раза. Часто бывает ситуация, когда запекание происходит в два прохода, с разными настройками (длина лучей, average/non-average normals и т.д.). В принципе это все можно делать интерактивно в Marmoset Toolbag, но мне неудобно работать там с рисованием кейджа (вообще не люблю я кейдж делать, только в очень особых случаях этим маюсь) и запеканием по именам, поэтому расскажу, как я совмещаю разные результаты бейка в SP. С данным персонажем я с такими проблемами не столкнулся, но все равно покажу процесс, думаю это будет полезно.
Покажу все на примере карты нормалей, так же я утрирую настройки бейка для очевидности.
И так, есть у нас две текстуры, с первого бейка (Т1), все запеклось без проблем кроме артефакта на ушах, очевидно, что длина лучей слишком большая. С второго бейка (Т2), хорошо запекся только нужный нам участок.

image027.jpg

Т1

image029.jpg

Т2

Теперь, первым делом меняем настройки смешивания нормалей с Combine на Replace.

image031.png

Потом создаем 2 Fill слоя, на нижнем слое Т1 на верхнем Т2. Тут важно понимать какой API вы используете, OpenGL или Direct3D и поставить нужный в данной вкладке.

image033.png

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

image035.jpg

Также потом можно создать пустой слой и в режиме отображения нужной карты, закрашивать различные артефакты, пикая нужные значения цвета прямо с модельки.
Texturing
Начинаю с базовых цветов и материалов, в данном случае все было просто, потому как большинство материалов таких как ткань и металл я брал из библиотеки материалов, которую мы создали специально для данного проекта.
Так что остается кожа... и тут я попытался найти рабочие файлы процесса и не смог. Потому скажу только, что я работаю отдельно сначала с цветом, а уже потом с Roughness, всегда держу в голове особенности цвета и тона на разных участках тела. Кости, жир и кровеносные сосуды довольно ощутимо влияют на оттенки кожи даже в рамках одного цвета. Также я активно пользуюсь запеченными картами Curvature и Ambient occlusion для создания вариативности и выделения нужных мне участков в цвете и спекуляре. Вообще весь пайплайн по работе с кожей я подсмотрел у прекрасной художницы Magdalena Dadela. Очень советую ее урок на GDC 2017: Face Texturing in Substance Painter with Magdalena Dadela, который можно найти на ютубе, даже без знания английского там все очень доходчиво показано.

image037.jpg

Базовый цвет и материал

image039.jpg

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

image041.png

Поза

Fire effects
Изначально я хотел сделать все по-честному, взять эмиттер, выпустить из него кучу плашек с секвенцией огня на них. Но провозившись с этим целый день я понял, что с моими знаниями в данной области, желаемого эффекта мне не добиться и что эффективнее и быстрей будет сделать все вручную.
И так, начал я с текстур огня и дыма которые нашел на сайте www.textures.com
Текстуры были в формате JPEG, так что прозрачности у них не было, поэтому я взял зеленый канал, немного подкрутил Levels и засунул это в альфа канал, сработало отлично.
Всего я использовал 11 разных элементов: 3 коротких базовых огня, 3 длинных огня, 3 текстуры дыма и 2 текстуры искр (их я нарисовал в фотошопе мягкой кисточкой).

image043.jpg

Текстура огня и дыма

Потом создал соответственно 11 плейнов на которых эта текстура и использовалась.

image045.png

Геометрия с текстурой (Плашки с искрами увеличены для скриншота)

Теперь из этого нужно собрать огонь, сам процесс очень прост, ставишь плейн в нужное положение, дублируешь, меняешь положение и т.д. Начал я с коротких огней для базовой формы внутри клетки. Потом длинные, уже работая и с силуэтом за пределами клетки, в целом я старался сделать огонь не под конкретный ракурс, а со всех сторон (Триде как никак :D), но все равно больше внимания уделял приоритетному ракурсу. Дальше добавил дым и искры (сделал 20-30 копий и растащил их скриптом Randomize Transforms).
Потом процесс пошел более хаотично, я сливал в один разные куски огня, накидывал FFD, как-то крутил его, правил артефакты пересечения и уже в конце на этапе рендера, финальные формы правил кистью Move.

image047.jpg

Этапы создания огня

Rendering
Теперь пришло время Marmoset Toolbag. Мне нравится работать в данном “движке”, интуитивно понятный интерфейс, простота работы и качество результата сразу меня подкупили. За все время моих занятий в 3D я перепробовал много разных рендеров и движков, и понял, что мне намного интересней работать с Real - Time техниками. Мне нравится интерактивный процесс работы и моментальный отклик на изменения в шейдере, свете или атмосферных эффектах. Не сказать, конечно, что в рендерах этого нет, но тут уж, наверное, дело вкуса.
И так, теперь про свет. Я хотел создать темную, мрачную атмосферу, где ключевым источником света выступают клетки с огнем, с них я и начал. Сначала я настроил эффект свечения в самом шейдере, в целом шейдер огня у меня получился прям суперпростым, буквально одна карта для всего. Также можно заметить что цвет Glow в шейдере темно коричневый, если честно не совсем понимаю как работает данный параметр, сам эффект свечения больше контролируется параметром Color, а Glow как мне кажется похож на еще один слой который смешивается в режиме Overlay, поэтому поигравшись с ним, я выбрал темный цвет так как он добавлял ощутимого контраста. Кстати, для текстуры пола я использовал бесплатный материал(fantasy_elf_stone_floor) который нашел на Substance share.

image049.png

Шейдер огня и его эффект в сцене

Glow, конечно, дал немного света, но было очевидно, что нужно засунуть источники прямо внутрь огня, что я и сделал. Для этого я использовал Omni Light которому придал форму цилиндра по размерам клетки и задал насыщенный оранжевый цвет.

image051.jpg

Настройки источника света для огня

image053.png

Результат с Omni источниками в клетках

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

image055.png

Fill light

Теперь осталось только добавить контровой свет, для отделения персонажа от фона и добавления нескольких акцентов.

image057.png

Финальное освещение

Когда я приступал к настройке света, я понимал, что хочу вытянуть из мармосета максимум, чтобы обойтись минимальной постобработкой в фотошопе, поэтому источников света вышло многовато (9!), но я остался доволен результатом.
После я добавил туман, хотелось получить эффект помещения, насыщенного частицами пыли, но, по-моему, вышло немного слабовато, сейчас смотря на это я бы сделал туман более плотным.

image059.png

Туман и его параметры

Теперь немного про настройки камеры. Тут могу выделить только один нюанс, это параметр Tone Mapping. Почти во всех случаях я меняю его с дефолтного Linear на Hejl, мне намного больше нравится как выглядят цвета в данном фильтре, он конечно резко затеняет сцену и делает все более контрастным, так что стоит компенсировать это увеличением экспозиции.

image061.jpg

Разница между Linear и Hejl tone mapping

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

Вот и все=)

324393.jpg

Финальный результат

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

Когда я только получил концепт, я не был уверен справлюсь ли я с ним на достаточном уровне, но как известно любая сложная вещь/процесс состоит из простых элементов. Так что не стоит бояться комплексных задач, а наоборот стараться разобрать их на отдельные простые и понятные тебе элементы, тогда и процесс будет идти намного эффективней и увлекательней.
Фух, это была моя первая статья, надеюсь она получилась хоть немного полезной и не слишком скучной. Буду рад Вашим мыслям и отзывам, как на счет самой статьи, так и работы в целом.
Если вам интересны мои работы, меня можно найти на Render.ru или ArtStation.
Всем Добра!)

744 0 850 20
4
2020-02-12
Це просто вогiнь! 5+
2020-02-13
Привет Женя)
2020-02-13
ага, коллектор
2020-02-13
i have a barraca ,i have collector =ooo Creepy Fairy
RENDER.RU