Making Of "Зенит"

Всем привет! Меня зовут Михаил Булейко, в сети — Michael Black. Живу и работаю в Ростове-на-Дону. Работаю ведущим дизайнером в производственной компании, занимаюсь промышленным дизайном, так же преподаю основы 3д моделирования и анимации. В этой статье хочу рассказать вам о создании работы «Зенит».

Идея и мотив

Современные техники создания высококачественных 3д моделей дают фантастические результаты. Трехмерная графика становится продуктом не моделирования — процесса схожего с проектированием —, а рисования, лепки, скульптинга. Минимум матана, максимум творчеcтва. И это очень круто! Действительно, зачем художнику понимать такие скучные вещи как шейдинг, интерполяция, топология, текстурные координаты, нормали... Бери планшет, лепи, крась — концепт готов.
Проблемы начинаются тогда, когда в созданный концепт хочется «вдохнуть жизнь», адаптировать его под конкретную систему визуализации, оптимизировать, спроецировать текстуры, анимировать. Непонимание основ классического 3д моделинга зачастую становится серьезной преградой для молодых талантливых CG-художников. Как результат, в сети полно великолепнейших концетов, обреченных навсегда остаться принтскринами или в лучшем случае отфотошопленными BPR’ами из браша.



Желание привить студентам уважение к полигону, ребру и вертексу и натолкнуло на мысль «изобрести велосипед». Модель очень интересна в плане дизайна и возможностей реализации творческого потенциала, и в то же время обязывает к инженерному, системному подходу в моделировании и организации сцены.

Подготовка

Сначала был разработан и нарисован вот такой примитивный масштабный эскиз будущей модели (карандаш, циркуль, лекала —> сканер —> Illustrator).

Далее, сбор и анализ референсов (Google).

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

Далее, импорт векторной графики. Макс лучше всего переваривает контуры в формате AI версии 8, при этом при экспорте желательно отключить у всех объектов заливку, у контура удалить толщину (сделать сверхтонким), не использовать эффекты, маски, все разгруппировать. В этом случае контуры, как правило, импортируются корректно.
Дополнительно я расставил вспомогательные объекты point в ключевых местах. Эти хэлперы послужат центрами для выравнивания геометрии и основой для ригинга будущей модели.

Моделирование

Тут рассказывать особо нечего. Классическая hard surface техника, несложные операции со сплайнами и edit poly. Практически весь процесс можно посмотреть с пятнадцатикратным ускорением в таймлапсе.

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

Обязательный набор.
Объекты: Plane, Sphere, Line, Rectangle, Ngon, Shape merge, loft
Модификаторы: Symmetry, Edit poly, Bend, Lathe, Extrude, Shell, FFD 2*2*2
Инструменты: Affect pivot, Center pivot, Reset X-Form, Array, Spacing tool
Еще крайне желательно забиндить клавиатурные сокращения для основных операций с подобъектами сплайнов и poly

Ну а теперь совершенно банальные вещи. Тем не менее, о них часто незаслуженно забывают:

1. Первое правило хай-поли моделинга: не используем группы сглаживания (hard edge в maya, Phong shading breake в C4D)
2. Второе правило хай-поли моделинга: нигде и никогда не используем группы сглаживания.
Эта возможность всегда манит простотой получения желаемой формы. Но в итоге мы получаем отсутствие интерполяции нормалей на ребре, а в результате — неестественный шейдинг. Если нормали не интерполируются, то наше ребро выглядит идеально острым, т.е. с толщиной бесконечность^(-1). Таких ребер не существует, даже бритвенное лезвие имеет конечную толщину острия. Все это означает, что разорвав интерполяцию на ребре, мы отменяем и такую естественную и милую для глаз игру света на острых гранях. То есть, если нам нужно острое ребро, сглаживание нормалей нужно не отменять, а управлять им с помощью дополнительных ребер.

Вот пара простых примеров: Куб начинающего моделера и правильный куб.

1. Неправильно! Ребра острые за счет отсутствия сглаженных нормалей

2. Правильно! Ребра острые за счет контроля сглаживания дополнительными ребрами

3. Синтетическая фигня из 3д редактора. Фи!

4. Фоториал! (При хорошем свете и материалах)

Естественно, это правило только для хай-поли. В лоу-поли и больших архитектурных сценах оно не действует

3. Боятся треугольных поликов не нужно, после применения turbosmooth, у вас все равно останутся только четырехугольники. А бояться нужно треугольников в местах, где ваша форма имеет правильные изгибы или гладкие округлости. Треугольник нужно стараться прятать на плоских участках сетки, иначе при сглаживании ваши красивые поверхности будут «мятыми».

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

5. Практически на всю геометрию в итоге будут проецироваться текстуры. Промежуточные UV развертки, на этапе пока ваша сетка еще проста, значительно ускоряют процесс финального назначения текстурных координат и упаковки в UV пространстве.
Конкретный пример: протектор покрышки состоит из повторяющихся секторов, эти сектора элементарно разворачиваются автоматическим quiсk peel’ом давая минимальные растяжения. А вот чтобы развернуть готовый протектор, придется уже потанцевать с бубном

6. Никогда не забываем про полезность операций с Pivot point, различных координатных системах (alt+rmb) и ограничителях (constraints) для подобъектов

7. Всегда даем объектам адекватные имена. Не стесняемся пользоваться Select by name (H), Zoom selected (Z), Selection lock (spacebar), Isolate selection (Alt+Q). Разумно используем слои. Активно используем Hide by category — Shift+G/S/H/L/C для скрытия всей геометрии/сплайнов/хелперов/ИС/камер соответственно

И да, конечно я в курсе, что все это знают. Просто умничаю ;)

Сам процесс моделинга хорошо виден в таймлапсе

В результате у меня получилась вот такая модель

Пришло время настроить простенький риг


Ригинг

Простой сетап с использованием иерархии (Select & Link), Parameter wire, Spline IK и Path constraint. В качестве костей использовал хелперы и уже созданные на этапе подготовки сплайны. Самой геометрии я не назначал никаких контроллеров, просто линковал ее с костями.

Тут все просто. Что хотелось бы отметить — это связь вращения каретки с движением цепи. Дело в том, что при назначении контроллера на вращение, ему автоматически присвается Euler (вращение по Эйлеру), и поворот измеряется уже не в градусах
угла поворота, а в радианах дуги (rad = 360°/2pi, 1rad ~ 57.3°). Соответственно из формулы взаимосвязи параметров вращения каретки с процентами пройденного пути, Pi выпадает. Остается только отношение радиуса вращения к длине пути:
P = Rotation*R/L
где P — процент прохода звена цепи вдоль сплайна, Rotation — параметр вращения, R — радиус ведущей шестерни, L — длина цепи. Параметры R и L можно посмотреть в Utilities/Measure.

Цепи и тросикам я назначил модификатор Spline IK, к получившимся хелперам на свободном участке цепи применил Noise Position Controller, чтобы цепь при движении хаотично тряслась. Хелперы тросиков я слинковал с вилкой, тросикам назначил модификатор Flex, чтобы гнулись и покачивались при движении. Вращение кассеты, звездочек заднего переключателя и самих колес связал с вращением каретки через Wire Parameter, умножив на коэффициенты передаточного отношения. Педалям назначил Look at Constraint на поинт хелперы, которые движутся по траектории движения коленей наездника. Анимацию переключения скоростей делать я поленился.

Текстуры и материалы

Развертки сделал только на крупных деталях: рама, вилка, крылья, багажник, руль, седло, обода, покрышки, тормозные диски. В итоге собрал все на 2 UV пространства 2048*2048. Один комплект текстур для окрашенного и полированного металла, второй для резины и кожи.
В самих материалах ничего особенного нет, VrayMtl шейдер как основа, карты на dif, ref, normals bump и иногда на ref gloss


Окрашенный металл

Кожа

Резина

Несколько материалов для мелких деталей, на которые я поленился делать развертки. Материалы на мелкие детали назначал по ID, если требовалось подправить мапинг, то применял модификатор UVW Map, и грубо проецировал текстуры, на выбранные подобъекты. В качестве текстур использовал процедурные карты Gradient ramp, Fallof, Checker, Noise. Настройки материалов показывать не вижу смысла, они все очень простые.

Свет и рендер

Большинство поверхностей модели сильно бликует как минимум, и зеркально отражает как максимум. Самое сложное в такой ситуации — это расставить свет таким образом, чтобы блики и хотспоты подчеркивали формы, а не ломали их.
Чтобы получить больше контроля над отражениями я настроил 2 различные схемы освещения:
1. Классический студийный свет
— ключевой — яркий VraLightPlane теплого оттенка, высокой интенсивности и малого размера слева. Дает яркие «горячие»
блики и насыщенные тени
— задняя подсветка — большой невидимый VrayLightPlane средней интенсивности холодного оттенка справа сзади. Отделяет объект от фона ажурной мягкой подсветкой и «прохладными» рефлексами, смягчает густые тени
— заполняющий свет — VrayLightPlane колоссальных размеров и очень малой интенсивности сверху. На этот ИС я назначил текстуру.

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

Выглядело это примерно так.

2. Упрощенная схема
— Белый яркий VrayLightPlane строго над великом. Для сверхконтрастных бликов и теней
— VrayLightDome с HDRI картой в качестве заполняющего света и источника отражений

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

Пост обработка

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

Большинство пассов сделано для подстраховки и не использовались при финальной сборке.
Коротко расскажу о том, чем и как пользуюсь.

— WireColor — это АйДи объектов, применяется для вострого выбора и маскирования зон картинки
— Normals — позволяет мягко выбрать зоны изображения по направлению с помощью команды Selection/ Color Range
— Reflections, Specular — накладываются в режимах Add, Mult, Overlay (Soft Light). Это позволяет при помощи инструментов цветокоррекции гибко контролировать силу и оттенок отражений, бликов и рефлексов
— Shadow, TotalLighting, GI, DirectLighting — все, что касается контроля света, тени, окклюзии. Накладывая эти пассы в режимах Mult, Add, Overlay и крутя цветокоррекцию можно практически полностью поменять схему освещения
— ZDepth — Фантастически полезный пасс, в котором глубина сцены переводится в интенсивность альфа-канала. Позволяет плавно выбирать участки картинки по степени их удаленности от камеры. Применяется, во-первых для создания атмосферы, воздушной перспективы, во вторых как альфа канал фильтра LensBlur, для получения достаточного качественного фейка эффекта глубины резкости
— DiffuseFilter (flat color) — чистый цвет или текстура на объектах без теней, отражений, преломлений, транслюценций и т.п. Позволяет вернуть участки поверхности, на которых рендер выдал нежелательные пересветы, блики или слишком глухие тени
— RGB_Color (Beauty pass) — финальный выход рендера, автоматический композ всех пассов, который является основой для сборки финальной композиции. Некоторыми ошибочно принимается за финальную картинку, требующую лишь незначительной доводки

1. Начал сборку я с того, что избавился от фона и собрал более-менее нормально освещенный велик из пассок Beauty, Reflections и specular обоих выходов рендера:

2. Т.к. рисованию текстур и настройке матов было уделено недостаточно времени. Картинка получилась неественной и синтетической. Восполнил этот недостаток я, нарисовав текстуры в фотошопе поверх рендера

Техника совсем не сложная. Из гугла набирается пара десятков картинок с фактурами, потом они обесцвечиваются и накладываются в режиме Overlay, потом с помощь Levels регулируется интенсивность и удаляются ненужные полутона.
Затем я собрал все это в группу, и группе применил маску, склеенную из пассов Lighting, Shadows, Specular и Reflections,
т.к. свет и блики проявляют текстуру, а тени наоборот скрывают ее. Потом немного поработал ластиком в тех местах, где текстура мешала или была слишком навязчива.
3. После этого нарисовал фон и пол. Тут тоже помог гугл. Скачал первую попавшуюся картинку звездного неба, обесцветил. Применил очень мощный LensBlur, таким образом получил симпатичные эффекты боке. Потом мягкой кистью нарисовал полоску света по линии горизонта, нарисовал темную виньетку, подрегулировал интенсивность и грубо подогнал оттенок инструментом ColorBalance.

4. Пришло время для первичной цветокоррекции. На этом этапе важно не столько придать картинки настроение, сколько связать все ее уровни, свести к одному общему оттенку и уровню освещенности. Для этой цели очень хорошо подходит пасс ZDepth, наложенный в инверсии в режиме Screen. Получается эффект атмосферы, залитой рассеянным светом. Придав слою нужную интенсивность и оттенок можно связать воедино все планы композиции

5. Второй этап цветокоррекции — регулировка уровней, экспозиции, гаммы. Короче, причесывание гистограммы по вкусу всеми доступными инструментами цветокоррекции. На этом этапе важно избавиться от белесых теней и слишком приглушенных хотспотов, при этом, не уведя крайние зоны в глухой черный и белый цвета. Так же нужно определиться с балансом белого.

Как результат получается вполне сбалансированная картина, которая уже может послужить финальной композицией, но в ней все еще нет настроения

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

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

Спасибо за внимание! Вдохновения и хороших быстрых рендеров ;)

816 0 850 59
29
2014-11-21
Вот это серьезный подход, сразу видно прфоессионала! Остается только перечитывать и делать заметки для себя! Огромное спасибо!
2014-11-21
спасибо :) добротно!!! WireColor пасс!!! блин я всегда мучаюсь с Object id и его страшными гранями.. буду знать, нормал пасс тоже пригодится :)
2014-11-21
Отличный урок, крутой моделлинг и превосходный результат!
2014-11-21
Мегаполезный урок! Благодарю!
2014-11-21
Супер! Спасибо, забираю на изучение;)
2014-11-21
Спасибо за мейк, человечище, вопрос можно увидеть таймлапс в HD качестве? 
2014-11-21
Спасибо за ваши комментарии, очень мотивирует! Я старался) [quote=All-in3d] ...можно увидеть таймлапс в HD качестве? [/quote] К сожалению, я изначально писал в плохом качестве и с очень низкой fps, боялся что не хватит места на харде. Есть HD версия, но картинка там так дрожит, что смотреть ее еще хуже чем сжатую
2014-11-21
Очень хороший Making of!  Михаил, много благодарностей!
2014-11-21
Ждал :) Шикарный материал, спасибо!
2014-11-22
Автор, можете сказать пожалуйста, как называется трек? Очень уж понравилась)
2014-11-23
Это OST ко второй части "призрака в доспехах" Кендзи Каваи. The Ballade Of Puppets The Ghost Awaits In The World Beyond https://www.youtube.com/watch?v=z64HCi2rQkE
2014-11-23
Спасибо, очень интересный урок! Только одно мучает - не всегда успеваешь рассмотреть что происходит на видео - можете залить версию видео, в котором всё раза в два медленнее?
2014-11-23
Отличный урок, много для себя подчерпнул, большое спасибо
2014-11-23
Спасибо огромное, я ждал эту статью :)
2014-11-24
[quote=jamstyle] спасибо :) добротно!!! WireColor пасс!!! блин я всегда мучаюсь с Object id и его страшными гранями.. буду знать, нормал пасс тоже пригодится :) [/quote]
У пасов ObjectID и MtlID можно включить сглаживание изменив опцию output type и включив галочку Enable Filtering.
2014-11-24
[quote=Maxim Bž]
Цитирую jamstyle: спасибо :) добротно!!! WireColor пасс!!! блин я всегда мучаюсь с Object id и его страшными гранями.. буду знать, нормал пасс тоже пригодится :)
У пасов ObjectID и MtlID можно включить сглаживание изменив опцию output type и включив галочку Enable Filtering.
[/quote] речь о этой опции? http://s32-temporary-files.radikal.ru/f2f6a5e1889e44f484f28906881faf80/-929206895.jpg она ничего не дает и на результат не влияет
2014-11-24
Можно, и с WireColor тоже можно легче, и нужно парится с айди вообще, просто сетки цвета поназначать. А чтобы не было гребенок нужно не только включить фильтрация для пасса, а еще и для всего фильтра настроить АА. И качество краев напямую зависит от качества самого рендера. Для получения гладких границ я обычно копирую сцену, назначаю на все объекты сермат, и заливаю всю сцену светом (белый vrayDomeLight с высокими сабдивами). Сцена все равно считается быстро т.к. материал предельно простой, не отражает и без текстур. А за счет хорошего света все границы и контуры прорисовываются хорошо. Можно даже просчитать в удвоенном разрешении, а потом сделать ресайз в фотошопе с бикубической интерполяцией
2014-11-24

С WireColor тоже можно включить фильтрацию, и не нужно парится с айди, просто сетке цвета поназначать. А чтобы не было гребенок нужно не только включить фильтрацию для пасса, а еще и для всего рендера включить фильтр АА. Качество границ всех пассов напямую зависит от качества самого рендера. Для получения гладких границ я обычно копирую сцену, назначаю на все объекты простой серый материал, и заливаю всю сцену светом (белый vrayDomeLight с высокими сабдивами). Сцена все равно считается быстро т.к. материал предельно простой, не отражает и без текстур. А за счет хорошего света все границы и контуры прорисовываются хорошо. Можно даже просчитать в удвоенном разрешении, или например отдельно просчитать проблемные объекты, а потом сделать ресайз в фотошопе с бикубической интерполяцией Так вроде понятно. А то написал быстро, отправил, и сам потом прочесть не смог))

2014-11-24
[quote=jamstyle] речь о этой опции? http://s32-temporary-files.radikal.ru/f2f6a5e1889e44f484f28906881faf80/-929206895.jpg она ничего не дает и на результат не влияет [/quote]
Читайте внимательно – "изменив опцию output type и включив галочку Enable Filtering."
output type > Color (with AA) + Enable Filtering
2014-11-24
[quote=Maxim Bž]
Цитирую jamstyle: речь о этой опции? http://s32-temporary-files.radikal.ru/f2f6a5e1889e44f484f28906881faf80/-929206895.jpg она ничего не дает и на результат не влияет
Читайте внимательно – "изменив опцию output type и включив галочку Enable Filtering."
output type > Color (with AA) + Enable Filtering
[/quote] странно, у меня нету output type, в чем может быть причина? http://s32-temporary-files.radikal.ru/4ea6a124d8764a118346553bdc8a7165/-929206895.jpg
2014-11-24
[quote=jamstyle] [/quote] В версии вирея)
2014-11-24
[quote=jamstyle] странно, у меня нету output type, в чем может быть причина? [/quote] Понятно – у вас V-ray 2.00.3. Эта опция есть в более поздних версиях, например в 2.40.03
2014-11-24
как от жизни то отстал, спасибо, надо обновить :))
2014-11-24
очень качественная работа и статья хочется делать точно так же спс
2014-11-26
Мейк супер, не понял только зачем нужно было тратить время на развертки почти всех деталей чтобы в итоге наводить красоту в фотошопе оверпеинтом и вымучивать постом один ракурс - выглядит странно в контексте ехидного замечания автора по поводу того что многим моделям так и суждено остаться отфотошопленными bpr-ками
2014-11-26
Развертки делались для нормалей и деколей главным образом. Грязь и царапины тоже можно было нарисовать на текстуре, но прибег к оверпейнту именно из-за того что собирался рендерить один ракурс и хотел как быстрее. Никакого ехидства в замечании про отфотошопленные BPRы нету. Я и сам часто таким пользуюсь. В этом замечании было всего навсего сожаление о том, что такая техника часто становится единственной доступной для некоторых 3д художников, ведь для ряда задачь она не подходит и сильно ограничивает их потенциал
2014-11-28
Чтобы "привильный куб" правильно сгладился нужно делать двойную нарезку "ограничителей", иначе на боках будут искажения отражений. Если нарезка одинарная, то рядом с полигонами, которые должны быть идеально плоскими, будут полигоны, под небольшим углом, а т.к. группа сглаживания будет одна, то нормали на границе плоского полигона и чуть повернутого займут среднее положение. Это особенно важно, когда моделишь тачку, и чтобы рядом со швами косяков с отражениями не было, приходится нарезать дважды. "Плохие примеры" на эту тему в изобилии в галерее "авто/мото" :)
2014-11-28
[quote=Timur Mullayanov][/quote] А иногда и тройную)) Зависит от размера объекта и количества итераций сглаживания при рендере. На маленьком кубе без турбосмуфа хватает и так. Это мейк оф, а не урок. Я рассказывал о о принципах и подходах, а не давал четкие инструкции. Хороших уроков по поли моделингу и так полно
2014-11-28
Классная работа, земляк!
RENDER.RU