Процесс работы над "Кибер". Часть 1
Всем привет!
Меня зовут Сергей, в сети я просто - CGVakula. Работаю в сфере 2D/3D графики, в свободное время фрилансю, потихоньку делаю квест - SUNRISE: Will Be Tomorrow. Кому интересно, информацию и группу по игре легко можно найти в сети. А ещё у меня есть канал на ютубе. Заходите, подписывайтесь, буду очень рад!).
Подобных тем много и в принципе всё уже везде есть, тем не менее эта запись важна для меня, как некое подведение итога первого этапа создания картинки в стилистике киберпанка. Надеюсь для кого-то эта статья окажется полезной.
Начнём.
В преддверии выхода Cyberpunk 2077 оставалось 2 недели и ждать уже было невозможно, поэтому чтобы отвлечься я решил сделать что-то в направлении киберпанка. Очень люблю эту тематику! В голове моментально родился концепт, что на скриншоте ниже. Используя MODO, оформил базовые позиции ракурсов камер, набросал базовые формы зданий, и приблизительные формы мотоциклиста - Рэя.
Небольшим отступлением прокомментирую, что в моём понимании, для создания какого-либо произведения, художественного, литературного или музыкального, необходимо максимально подробно изучать и представлять персонажей, окружение, чтобы проще было ориентироваться на то, какой работа должна выглядеть в итоге. Например не зная анатомии, невозможно добиться точных и гармоничных пропорций. В моём случае, проще говоря, когда у персонажа есть имя, можно представить, каким он должен быть, какой у него характер.
После утверждения концепта перед самим собой, энтузиазм разгорелся и работа закипела.
С чего всё начинается? Как принято с поиска референсов. Сцена подразумевается сложной и трудоёмкой, поэтому разбил все части картинки на категории.
- 1. Мотоцикл
- 2. Рэй
- 3. Здания
- 4. Антагонист (на этом концепте его нет)
Есть очень полезная программа для взаимодействия с референсами - PureRef. Очень удобная штука. Множество картинок разом, ничего не тормозит, можно группировать, масштабировать, сохранять наборы по тематикам. Красота!
Как бы ни был похож мотоцикл на версию из фильма «Трон: Наследие» (в большей степени только колёсами), в основе лежит мотоцикл Акиры из одноимённого аниме. Главный персонаж - в какой-то степени опирался на Человека-муравья.
Моделирование.
Чтобы не тратить время на лепку тела, пропустить этот шаг помогла программа Character Creator 3 от Reallusion. Программа очень мощная, довольно просто можно штамповать разнообразных персонажей второго или третьего плана. Единственное но! За каждый шаг, практически любое действие, нужно платить и довольно таки много! Сделать персонажа - запросто! Экспортировать? Только OBJ. Есть желание в FBX или сразу в ZBrush? За каждый модуль придётся заплатить. Хотите экспорт со скелетом? Ну вы поняли...
Благо у меня уже был необходимый набор и я просто экспортировал FBX с текстурами, но без скелета.
Одежда в Marvelous Designer.
Процесс довольно трудоёмкий. Для меня основная сложность заключалась в создании раскройки и придумывании костюма. Набрав ещё несколько паков референсов для штанов, куртки, шлема, оформлении рук, миновав 2D концепт, сшивал всё прямо на модельке и исходя из того как оно получается вносил правки. Многое можно вытянуть на текстурах или добавить в ZBrush, поэтому остановился на средней детализации брюк и большей детализации куртки, так как она расположена ближе в кадре.
Убедившись, что на данном этапе больше ничего в костюм добавлять не буду, приступил к проработке мотоцикла, потому что одежду неплохо бы просимулировать в позу, а без точного расположения персонажа на мотоцикле, в нужную позу попасть сложно.
Итак, скульпт мотоцикла по болванке - базовые формы в Zbrush.
Когда в процессе необходимо взаимодействовать с разными программами при моделировании - очень важно настроить единую систему измерений. Для меня стандартно - Метрическая система и работа в миллиметрах.
ZBrush, к сожалению, не позволяет привычным способом задать значения как например в MODO, Maya или 3dsMax. В принципе удалось решить эту проблему используя Zplugin - Scale Master, но это всё-таки костыль и если кто-то знает как произвести калибровку размеров или есть какой-то другой плагин, буду рад информации.
Базовые формы определены, можно делать первую чистку геометрии. Разбив модель на составные объекты перекинул всё в 3DCoat.
За всё время работы с 3D, пробовал разные программы для ретопологии, и лично для меня лучший вариант - 3DCoat. Очень удобно взаимодействовать с лоу-поли сеткой. На втором месте, как это ни странно, ZBrush.
Параллельно каждую часть забрасывал в Keyshot для просмотра. Недетализированные части, с хорошим освещением помогают понять, где можно что-то поправить или улучшить.
Чтобы добиться гладких форм и жёстких рёбер необходимо использовать несколько проходов в цикле: скульпт -> ретопология -> скульпт -> ретопология.
Когда я начинал изучать моделирование довольно сложно было разобраться, в каких случаях использовать кризы, где рёбра жёсткости, для чего хард и софт нормали и т.д.
Постараюсь немного структурировать на примере нескольких кубиков и простенькой детальке.
Выше можно увидеть три кубика. У первого просто рабочая геометрия, на втором назначено несколько "кризов", у третьего добавлены рёбра жёсткости.
Применив сглаживание видно, что кубик_1 превращается в шар, кубик_2 и кубик_3 стремятся тоже превратиться в шар, но у обоих отмеченные грани сохраняют свою жёсткость. Разница в том, что у второго кубика грани острые, а у третьего мягкие. Почему так происходит? Обратите внимание, что у второго кубика все полигоны одинаковые по размеру в центре и у граней. У третьего кубика полигоны максимально сжимаются при приближении к граням.
Скульптить этот кубик или сложную модель с подобным распределением полигонажа может быть очень проблематично в местах складок, углов и рёбер.
Выбираем 2й вариант работы с геометрией и переходим к процессу создания детальки.
Моделирование и "чистка" геометрии состоит из нескольких шагов.
1. Формируется болванка в виде скульпта.
2. Производится ретопология.
На скриншотах видно грубый набросок и простенькая ретопология.
Если на этом этапе попытаться сгладить модель увеличением кол-ва полигонов (сабдив), то модель потеряет все твёрдые грани. Углы будут сглаженными, поверхности потеряют чёткие очертания.
3. Формы смогут сохранить свои грани после сглаживания, если указать какие рёбра должны сохранять форму - те самые "кризы" (2й кубик). В данном случае я разметил кризы прямо в ZBrush. Если привыкнуть, то в браше довольно всё просто и на этом этапе можно не перекидывать модельку в Maya. В итоге настроенная модель выглядит уже похожей на первоначальную болванку.
Затем немного правок кисточками и формы становятся довольно аккуратными. Для сравнения прикрепляю первоначальную болванку.
Можно добавить деталей, снова сделать ретопологию, снова сгладить, снова детализировать, снова отретопить и так далее, до тех пор, пока не будет достигнут желаемый результат. В варианте этой детали ничего больше не планируется поэтому можно приступить к правке форм, UV разметке, запеканию карт, текстурированию.
Возвращаемся к мотоциклу и Рэю.
Для симуляции одежды необходимо оснастить персонажа скелетом, задать ему точную позицию на мотоцикле.
Мне очень нравится когда в работе можно максимум всего автоматизировать, это очень экономит время. Настраивать скелет вручную я не хотел поэтому поискав разные плагины ускоряющие процесс риггинга, мой выбор пал на Auto-Rig Pro для Blender. Плагин по сути делает то же самое, что и авториг Mixamo, за исключением того, что в блендере более обширные варианты настроек чем у аналога на сайте Adobe.
Ставлю в необходимую позу, в Марвелоусе создаю аватара и симулирую одежду добавив поток ветра, по направлению движения мотоцикла.
Одежду необходимо наполнить объёмом, добавить складок, это всё удобно делать в ZBrush. Перенос одежды в браш отдельная небольшая тема, возможно в будущем напишу подробную статью, а сейчас ограничусь просто последовательностью действий для данной модели.
Я перенёс всю одежду без толщин и сшивания, с относительно плотной триангулированной сеткой.
Чтобы не нажимать одни и те же кнопки по многу раз, я написал небольшой макрос для ZBrush (внизу скриншота видно кнопочку "MarvelousOptimiser") который превращает кусок ткани в полигональную сетку с небольшой толщиной. Форма становиться плотной и с ней уже можно что-то делать. Иногда была необходимость что-то править руками, но в целом макрос позволил сэкономить много времени.
Если кому-то понадобится, оставляю макрос тут
В процессе лепки одежда приобретает приятный вид и необходимый уровень детализации.
Добавил шлем, сделал оружие, поправил то тут то там, сделал пробный рендер. На этом этапе всё хорошо, можно двигаться дальше.
Мелкая рукоятка вскоре была увеличена, а магазин стал шире. Хотя вряд ли это сильно заметно на финальном шоте.
Для хорошего отображения деталей на визуализации, требуется хорошая детализация и текстуры высокого разрешения. Модель разбивается на части, создаётся несколько карт развёртки и все они упаковываются в большой UDIM атлас. Всё просто - несколько карт в одном блоке.
Не обращайте внимание на то, что некоторые карты сделаны автоматом, и большая часть не экономит пространство. Если чётко понимать, что за чем следует, как и где будет использовано, то нет смысла тратить время на оптимизацию всех развёрток. Мне понадобились только те, где должна была лечь текстура, их я развернул вручную, но раскладывал всё равно автоматом.
Формирование "красивой" карты, необходимо для синематика или особенно для игр, там следует хорошо всё продумать. Иногда очень и очень хорошо!
Когда в конечном итоге будет только одна статичная картинка особенно, если она делается ради удовольствия надо экономить время.
Ещё один пункт, крайне необходимый в работе над большой сценой - структура. Крайне полезно всё называть и правильно расставлять, не жалеть на это время! Вы всегда знаете где и что находится, а если забыли, легко можно найти необходимый элемент.
Двенадцать карт развёртки для двенадцати частей. Обратите внимание, что в конце каждого элемента я ставлю суффикс "_low".
Всё дело в том, что Substane Painter позволяет запекать модель без разнесения в пространстве. Достаточно поставить суффикс "_low" у низкополигональных моделей и "_high" у высокополигональных. Программа поймёт какие части взаимодействуют друг с другом. Главное не ошибаться в названиях, они должны быть абсолютно идентичными, кроме суффикса.
Запекание и текстурирование.
Очень люблю процесс покраски, потому что модель потихоньку "оживает". Сразу после импорта модели, запекаю все карты и накидываю базовые цвета.
В качестве опорного - тёмный циан. Используя треугольную схему соотношения оттенков, подобрал нужные цвета с помощью адобовской палитры - color.adobe.com
все цвета. Масками отделил части, что-то пришлось дорабатывать кисточками. Например стяжки рисовал с помощью Stitch Tool, приобретённой когда-то на гамроаде или артстанции.
Визуализатор встроенный в Сабстанс меня не устраивает, поэтому для быстрого просмотра предпочитаю использовать Marmoset или Keyshot, в зависимости от ситуации. Это очень удобно - на одном мониторе референсы, на втором рабочее пространство, а на третьем вьюпорт рендер-программы.
Процесс работы в таком режиме незамысловат. В редакторе вносятся правки, экспортируются все или конкретная текстура, в Кейшоте ждём пару секунд и все изменения подгружаются с правильным освещением.
На примере куртки смысл такой:
- Создаю папку "Textures -> Jacket"
- Экспортирую в папку текстуры
- В Кейшот импортирую модельку и текстуры, настраиваю UDIMы
- Всё!
Теперь можно редактировать любую текстуру, нажимать кнопку экспорта и через пару секунд всё отобразиться в рил-тайм рендере.
Несколько вариантов покраски. Обычный и премиум вариант. Но это так, немного баловства ^_^
В завершении первого этапа сделал тестовый рендер Рэя.
Keyshot выдаёт отличную картинку практически без настроек, поэтому залив все текстуры и модели, с незамысловатое освещением, визуализировал всё в несколько проходов. Все пассы закинул в фотошоп, настроил режимы смешивания. Весь композ проходил в 4 этапа.
- Устранение ошибок в рендере
- Коррекция цветности, контраста, освещения
- Добавление эффектов, абберации, свечения
- Финальная цветокоррекция
Из-за того, что исходные картинки были в разрешении 8К, приходилось периодически соединять все слои и продолжать работать уже с каким-то промежуточным вариантом.
Мне понравилось, что получилось на первом этапе, поэтому, повторюсь, для личного закрепления, написал эту заметку.
Надеюсь материал окажется для кого-то полезным.
Благодарю за внимание!
P.S.
В завершении статьи хочу выразить поблагодарить всем кто помогал советом или просто участвовал в тёплой атмосфере WIPа : Sanekum, Steve Cherk, Михаил Шклярик, Бабуин, Kuhlhaus, ЛМА, Zlost666, Руслан Пронин, Д С (protva)