Making Of "1924 Alfa Romeo P2".

Всем привет! Меня зовут Костя. Появилась тут возможность поделиться процессом создания, что ж попробую. На самом деле это почти первая (то есть третья) работа со всеми этими картами нормалей и эмбиент окклюжн и все такое. До недавнего времени я немало поработал промышленным дизайнером, моделил много, но текстурирование мое заканчивалось на планарном наложении логотипа. Но всегда было интересно и привлекало как люди делают потертости, царапины, грязь и тому подобное оживление моделей. Но так как я еще много времени уделял рисованию от руки и раскрашиванию в фотошопе, до нормального 3д не мог добраться. Но наступил момент когда я все-таки решился окунуться в это и расширить свои 3д умения. Я знал что есть такая вещь как Normalmap, но не понимал его механики, запекания еще какие-то, это был для меня темный лес. Ну а дальше были онлайн курсы и этот автомобиль как финальная работа. Ну и куча YouTube уроков, куда же без них. Так что тут я опишу скорее опыт новичка и какие уроки вынес из этого процесса. Надеюсь для кого-то это тоже окажется полезным.

Выбор объекта

И так, работа делалась как игровая модель по очень условному пайп-лайну (драфт-хайполи-лоуполи--запекание необходимых текстур-текстурирование-подача), без каких-то конкретных технических требований типа поликаунт, все достаточно свободно, поэтому я просто рассчитывал что бы это нормально смотрелось на рендере, но и оптимизировать сетку старался тоже.
При выборе объекта надо было рассчитывать на свои силы, но и что бы легко не было. Машины - это с детства болезнь и заканчивал я дизайн транспорта, поэтому выбор был очевиден. То что это будет автомобиль GrandPrix 30-x определилось сразу, но какой конкретно выбирал долго. В одном нравятся одни элементы, в другом другие... Моделить то хочется с удовольствием. Но и референсов должно хватать, так как додумывать что там творится с органами управления и подвеской вообще не хотелось. В итоге выбор сделан.

image001.jpg

image003.jpg

Моделлинг

Моделил в Maya, осилил за время курса, до этого по работе сидел в Modo, ну а начинал с 3DMax. Переход был безболезненный, основные инструменты полигонального моделирования везде одинаковые. Но в Maya мне развертка показалась лучше и не хотелось лишний раз перекидывать модель между софтом.
Моделил по чертежам - не нужно определять пропорции на глаз, но от всех бед это не спасает, да и чертежи эти достаточно условны и все на них не увидишь, поэтому процесс остается достаточно творческим. Казалось бы форма не такая и сложная, но исправлений по кузову было очень много, и как же долго их исправлять, когда поздно замечаешь ошибки уже наплодив полигонов. А если некорректный элемент связан с другим, то совсем настроение падает). Но тут надо смотреть насколько заметна некорректность. Иногда может это и не стоит потраченного времени. Поэтому вначале лучше хорошенько изучить форму, но и опять-таки нужен опыт на что обращать внимание. Я по чертежам моделил немного, что-то увидел что-то нет.
Что ж, определяем размер, расставляем проекции по местам и поехали.

image005.png

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

image007.jpg

image009.jpg

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

image011.png

Из тех сложностей что помню: пришлось повозиться с передней частью. Сразу не обратил внимание на разницу радиусов спереди и в центре кузова. И передок оказался недостаточно сферическим, решетка ложилась на него как-то не так. Сейчас это кажется очевидным, а тогда я это заметил на более позднем этапе, после сабдива и удаления истории. Тогда меня спас инструмент Lattice. Во время работы глаз замыливается.. Еще отмечу что не все узлы замоделил, некоторые было плохо видно, а какие-то просто забываются из-за количества и возвращаться доделывать, когда уже идет развертка совсем не хочется. Хорошо бы наверное вести список и отмечать какие элементы сделаны, а какие нет. Потому что один или два раза приходилось возвращаться из текстуринга и проходить весь круг заново с компоновкой разверток, запеканием, так как забывал детали, без которых совсем никак. И это мрак. Вроде бы это были черные заглушки за радиаторной решеткой и где выхлопная труба входит в кузов. Без них машина просвечивалась насквозь. И тут уже стараешься обойтись малой кровью. Если можно найти закуток на развертке что бы приткнуть их, так как тексель для них не особо важен, они же просто черные и наложить их можно друг на друга, то хорошо. А если совсем нет места, тогда все перекомпоновывать и перезапекать.

image013.png

image015.png

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

image017.png

image019.png

Немного затронул Zbrush. Помял трубу там и добавил немного складок на сиденья. Но это тоже все в познавательном режиме, в этой программе конечно надо набивать руку.

Итак, хайполи есть.

image021.png

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

image023.png

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

image025.png

image027.png

HighpolyLowpoly

Так же при создании лоуполи я решил оставлять симметричные и повторяющиеся детали только в одном экземпляре, что бы при развертке потом не задумываться и не искать что разворачивать, а что нет. Забегая вперед скажу что и запечку NormalMap я так же делал с такой половинной моделью.

image029.png

Развертка

Изначально я почему-то решил все запихнуть в один текстурный сет. Это была плохая идея. Деталей получилось очень много и очень много супер мелких, которые могли существовать только при 8К. Но текстурировать с 8K такое себе удовольствие. В общем полная ерунда. И я решил, что один сет это будет кузов, а второй все остальные части. И тогда в 4К это было более менее что-то приемлемое, что даже в относительно близких шотах 2560х1440 выглядело прилично.
Хоть мне и понравилась развертка в Maya, я еще решил попробовать UVLayout. Удобно там сделано что развернутые детали исчезают из окна и остаются только не развернутые. В ней я и разворачивал свою машину. Сама развертка деталей заняла не так много времени, достаточно механический медитативный процесс, но перед которым нужно хорошенько подумать и четко решить какие элементы будут повторяться, накладываться друг на друга (overlap) для экономии UVпространства.Тут я начал слишком экономить и только потом замечал что не могу использовать оверлапы в некоторых местах.

image031.png

Например вот эту боковую часть кузова я хотел сделать симметричной и только уже после компоновки, то есть запаковки текстурного сета я понимаю что у меня тут в ambientocclusionкарте будет затемнение от выхлопной трубы, которое с другой стороны мне совсем не нужно. Вообще я тогда немало себе подстав сделал из-за этого AmbientOcclusion в повторяющихся элементах. Про это надо очень внимательно подумать вначале. Некоторые элементы приходилось сдвигать относительно их оригинального местоположения что бы не переделывать много.
Также было с капотом и треугольными стикерами на нем. Изначально я думал что могу отзеркалить пол капота и поэтому сделал стикеры с четырёхлистником отдельной геометрией, так как рисунок на них не зеркальный. Но потом я замечаю что у капота есть разрез с фаской и заклепками с одной стороны, а с другой где выхлопная труба это сплошная деталь с боковой панелью без всяких заклепок. Соответственно normalmapбудетразный. И все это происходит после очередной ручной компоновки. Я добавляю в развертку вторую половину капота, а стикеры так как их уже можно просто нарисовать на каждой детали капота и удалить их геометрию, я конечно забываю, и переделывать компоновку в 20-йраз уже нет сил и терпения. В итоге вместо экономии получил лишнюю геометрию и драгоценное UVпространство израсходовано нерационально. Но надо двигаться дальше).
Итак, имеем две развертки. Развертку с кузовом руками получилось разложить лучше – тексель (количество пикселей занимаемое деталью) получился выше. Развертка с остальными деталями вручную точно не вариант, особенно несколько раз, только автоматически. Но немного полоски по краям пришлось подвигать – привести к квадратному заполнению. Саму компоновку делал в Maya.

image033.png

Кузов

image035.png

Остальные части

Запекание текстур
Запекал по итогу в мармосете, но по некоторым причинам пришлось попробовать в разных программах. Вообще с самого начала этой работы надо мной все время висел груз мыслей о том, как я всю эту кучу деталей буду запекать. Это реально пугало. Надо было все разбить на группы непересекающихся элементов (мармосет позволяет не разносить все элементы друг от друга – это удобно). Ну главное начать. И на деле все оказалось не так страшно и долго.

image037.png

Запечка NormalMap текстурного сета частей

Проблемы пришли с другой стороны. Импортирую я свои группы в мармосет, настраиваю все там опции, нажимаю бэйк и все зависает. Первая мысль: много объектов, большое разрешение и все такое. И начинаю суетиться по программам и они запекают, поэтому я решаю что проблемы точно в самого мармосета. Но в других программах тоже не все так просто, то одно не так, то другое.
Основная проблема конечно фаски, в каких-то местах ок, в каких то не очень и без опыта разбираться в каждой программе тоже не вариант. Возвращаюсь к мармосету, потому что до этого пару небольших работ запекалось там отлично. Начинаю импортировать не все группы сразу, а по одной. И да, некоторые запекаются. Короче я пришел к тому что в группе которая не запекается я начал импортировать по одному элементу и таким образом находил косячный элемент с проблемами в геометрии. Но когда делал автоматическую проверку на ошибки в Maya, то она мне толком ничего не показывала или я не видел, или не хотел видеть. В общем вручную находил толи задвоенные полигоны, толи эджи, толи точки, уже не помню. Находил немного, но мне хватило. И был еще такой момент, что вышли новые драйвера для Radeon,ну и я решил обновить их конечно и после этого мармосет вообще перестал печь от слова вообще, даже простой кубик, бейк и он просто зависает. Но это тоже почти сразу вычислилось и откатил я это дело обратно - помогло. Не знаю это только у меня такая проблема или общая. Инфы я про этот случай не нашел. Возможно дело еще в чем-то.
ВмармосетеязапекNormal,Thikness, Position и ID materials. AO вроде бы в SubstancePainter.Normal и особенно AO пришлось поправлять вручную в фотошопе, как я не сражался все равно были некорректные места, но тут дело опыта, что получилось исправлял как мог. Так же надо отметить что с такой моделью запечь Normalи AOза один заход уже не получится. В AOуже не нужны группы, там каждый элемент влияет на другой, и импортировать надо уже другую конфигурацию модели или бэйк группы организовывать по-другому. И не забываем при запечке сдвигать на развертке оверлапы на 1 в сторону, что бы ничего не запекалось друг на друга и не появлялись всякие артефакты.
Этот этап получился самый время и трудозатратный, но результатом я остался доволен учитывая все трудности с которыми пришлось столкнуться.

image039.png

Лоуполи

image041.png

NormalMap и AO

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

Текстурирование уже более приятный процесс для меня, с каждым новым материалом моделька становится красивее и реалистичнее. Изначально при выборе референса я уже отметил пару акцентов оживления модели. Это то, что он будет неновый, немного грязный автомобиль, следы дыма на кузове от выхлопной трубы и трещины на коже сиденья.
Дальше тоже все поэтапно. Работал в metallic/roughness. Начал с кузова. Добавил слой с height и кисточкой нарисовал выступающие заклепки и кое-где неглубокие вмятины, как-будто заклепки приминают панели кузова к каркасу и еще пару мелких рельефов. Потом разбивка по цветам и сразу с цветом я накручивал примерный рафнес и металлик если он присутствовал в материале. Далее стикеры, логотипы, номера. Потом царапины, сколы, грязь, разводы. Логика добавление этих элементов у меня получилась простая. Сначала для каждого материала добавлял свои особенности, где ржавчину, где точки какие-то. А потом уже поверх все материалов общую грязь, пыль, как и в жизни в принципе. Пыли и грязи в итоге у меня получилось немного.. Когда есть хорошие референсы просто смотришь и пытаешься сделать похоже. Подбираешь гранжи, на них накладываешь другие гранжи, маски и все такое пока не будет похоже. Главное не упустить интересные детали на этих референсах. И из-за количества материалов бывает уже трудновато добавлять эти особенности и компьютеру тоже. Если было было что-то более сложное, наверное пришлось бы уже текстурировать частями. Например я долго ленился на протектор нанести мелкие прилипшие камушки, но потом сделал и не пожалел. Можно было бы и еще добавить чего-нибудь выразительного, но когда идей нет, то лучше двигаться дальше. Да и когда столько материалов, то вытягивать каждый элемент, как если бы это был отдельный объект я посчитал бессмысленным так как он все равно затеряется среди других. Особенно это касается интерьера. Но крупным элементам как кузов, сиденья, колеса конечно лучше уделить больше внимания. И следить что бы одни элементы не выбивались из других, равномерная деталировка и стилистика материалов. Но с хорошим референсом это не сложно.

image043.png

Вариант настроенного материала для ручного тормоза.

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

Освещение и рендер

Карты из SubstancePainter экспортированы, идем обратно в мармосет, подгружаем карты в материал. Пробую ставить стандартное трехточечное освещение, но тут тоже опыта мало. Долго я крутил эти источники что бы прийти к более менее результату (до этого по работе просто кидал HDRи не парился). При выставлении света старался не терять основной объем кузова и что бы всякие мелкие детали типа вмятин, сколов тоже не терялись. То есть все над чем стараешься при текстурировании должно остаться заметным. И игра с теплым и холодным светом тоже помогает оживить картинку.
Финальные шоты я решил делать в Blender. Мармосет в плане отражений очень условный, то есть у меня на кузове или поверхности на чем стоит автомобиль отражалось только пол колеса или тень колес была без спиц. Но тут конечно дело опыта, можно и в мармосете сделать офигенно, просто мне было проще в Blender.

image045.png

Схема освещения в Blender

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

image047.png

Marmoset

image049.png

Blender

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

Финальные HDRIи фотки брал на hdrihaven.com.

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

Так по слоям вписывать объект в фон я пробовал впервые. Больше гибкости – лучше результат. Вообще хочется замоделить некий транспорт вместе с окружением уже без всяких фоновых картинок, но это уже другая история.
В заключении могу сказать очевидное, что делать такие работы (сложнее чем обычно) конечно полезно для прокачки. Я для себя во время этого процесса открыл много нового. Но и выдержку надо проявлять. Бывали моменты когда ложишься спать и думаешь скорее бы проснуться и приступить к работе, а бывало желание пропадало вовсе, и влиять на это могут очень разные причины. Мне в такие моменты помогало правило «сесть и хоть что-то начать делать» и я быстро втягивался. Потратил я на эту работу, моделлинг и текстуринг, два месяца. В следующий раз думаю можно было бы сделать раза в два быстрее. Ну и это была финальная работа на курсе, нужно было обязательно доделать. При самостоятельной работе отложить на потом очень легко. Дисциплина это хорошо, но делать с интересом и любимое занятие, намного продуктивнее. Поэтому желаю всем кто не нашел, найти свое направление, а то их тут многовато в 3д, нескончаемого энтузиазма и новых открытий!

743 0 850 5
18
2021-08-03
Молодец!
2021-08-05
Здравствуйте, а можно узнать подробнее как вы сделали корпус. Интересуюсь, так как новичок в это деле) Заранее, спасибо
2021-08-06
А чего меня не спрашивают? 😆
2021-08-06
[club8938191|Render.ru — компьютерная графика CG и анимация], я тоже машинки делаю 😆
2021-08-06
Евгений, 😏
2021-08-06
Статья (мэйкинг оф) вышла толковая и интересная. Картинка оч. смотрибельная. Немного смущают тени на брусчатке, имхо не так чуть лежат, но понимаю, что проблемно вписать объект в хдр-ку да и «мой взгляд», само собой, может ошибаться).
2021-08-06
Евгений, Так публикуйте, а мы посмотрим
2021-08-06
Василий, проблема в том, что брусчатка плоская и тени соотвественно тоже)
2021-08-06
Игорь, точно, ага). Но и направление теней от предметов/объектов на хдр отличается от направления тени от тачки.
2021-08-06
Основная проблема многих making of статей как эта, вроде написано много текста, но это всего лишь подробное описание стандартного пайплайна. Мало практически полезной информации, например здесь мы не узнали как сделать такие красивые спицы, хотя на них был отдельный акцент, как встроить модель в фото, хотя об этом также отдельно сказано и много других "как". Зато я догадываюсь, что за курс :)
2021-08-06
Рендер не финальный, да и модель не доделал. Но тоже старушку делал. Мерс 1929-го года
2021-08-07
Евгений, Если интересно, я могу сказать, почему.
2021-08-07
Kott, рассказывайте, интересно!
2021-08-07
Евгений, потому что ты аутист
2021-08-07
Вениамин, окружающие так не считают.
2021-08-07
Материалы, Евгений. Основная причина, это материалы. Модельки у вас вполне неплохие, но вот с матами ещё работать и работать.
2021-08-07
Kott, ок, буду качать! 👍👌
2021-08-10
Татьяна БрединаОсновная проблема многих making of статей как эта, вроде написано много текста, но это всего лишь подробное описание стандартного пайплайна. Мало практически полезной информации, например здесь мы не узнали как сделать такие красивые спицы, хотя на них был отдельный акцент, как встроить модель в фото, хотя об этом также отдельно сказано и много других "как". Зато я догадываюсь, что за курс :)

Татьяна, подскажите, что за курс?
RENDER.RU