Ferrari SF90 Apocalypse Now
Ааааачередная моя больная фантазия на тему модернизированных машин в постапокалипсис. Скорее всего любовь к таким тачкам идет из далекого игрового детства. В детстве я наиграл огромное количество часов в Rock n’ Roll Racing на сеге, потом Twisted Metal и Vigilante 8 на плойке первой и в EX MACHINA уже на ПК, но пост не об этом.
И так, приступим. В мае 2023 я доделал модельку феррари по одному платному курсу (в галерею здесь тоже выкладывал), раскрашивал самостоятельно через стандартные материалы в блендер и еще использовал аддон Блендер кит с его текстурами (это была одна из главных моих ошибок, но об этом позже), также пытался самостоятельно сделать разные сцены, разные ракурсы, но всё было не то. В итоге выложил как есть и забыл/забил. Потом перекрашивал старый свой проект "Машка", а после делал первую геймдев модельку. И вот после нее решил опять вернуться к феррари. Но вернуться не просто к переделке сцены, а и тачки в том числе.
Как всегда начал поиск рефов, чтобы по кусочкам начать собирать автомобиль. В итоге набрал вот такой борд и прописал комменты к каждой фотке:
После подбора рефов, начался сам процесс моделинга. В начале работы над проектом, ощущал себя как в мастерской по тюнингу авто: "Так клиренс поднять, этот никуда не годится. Это литье не практичное, ставим штампы, меняем резину со спортивной на грязевую и т.д.". Собственно с этого я и начал. Заменил ходовку полностью. Также добавил стойки и пружины (из за клиренса стало видно их из под крыла). Резину как обычно несколько раз переделывал в дальнейшем (ну не получается у меня ее с первого раза норм сделать). Также из за широкой и высокой грязевой резины пришлось резать и расширять арки, иначе колеса просто бы не поворачивались.
Фото до:
Фото после:
Далее в мусорку полетели дворники (они были на фото "до" выше) и была установлена защита на лобовое и боковые стекла. Спереди повесил кенгурятник, сверху на крыше соорудил багажник, чтобы в дальнейшем его обвешать оружием. Все эти элементы делал из примитивов с добавлением модификатора mirror, сложного ничего не было, главное терпение и время. Также расширил кузов в целях защиты и чтобы закрыть сильнее колеса, а то из под колес будет лететь грязь и быстро засрет машину. Здесь тупо взял часть кузова от оригинала авто и скопировал его, лишнее удалил и поправил сетку для шейдинга.
P.S. Думаю фото "до" опять выкладывать нет смысла, теперь будет только поэтапное "после".
После создания всех кузовных и оборонительных элементов, приступил к элементам наступательным. По одному из рефов выше, вытащил одну фару и поставил туда пулеметы. Далее нашел рефы для оружия на крыше. Выбор пал на 4х зарядные ракетницы. Я не знаю их принцип работы и прицеливания, но я почему то решил, что к ним нужна дополнительно система наведения. При поиске в инете нашел систему наведения для кораблей и вертолетов.
P.S. вообще по всему данному проекту я старался не просто лепить всё подряд для красоты, но чтобы это хоть как то можно было обосновать, пусть даже и теоретически (в дальнейшем я слишком сильно с этим заморочился).
И так, рефборд был дополнен следующим:
По рефам получилось вот так:
Далее добавил осветительных приборов - туманки на кенгурятник и мини прожектор сверху на крышу (его скопировал из элементов передней фары, но в позже я переделал его на диодный).
И вот тут случился интересный момент, возник логический вопрос, а как это всё работает без электричества? И тут меня понесло окончательно, были добавлены провода на все электрические элементы, эти провода заходили в модули (читай распредкоробки), от модулей до салона уже шла гофра. И это к сожалению для меня было только начало, дальше было больше.
Рендером сложно это будет показать, поэтому вот скрин с блендера. Выделена как раз электрика.
P.S. кстати, тут видно что я добавил еще лист брони на дверь (тоже с первых рефов) и переделал резину.
Доделал оптический датчик наведения, пустил от него тоже гофру, плюсом на капоте добавил проводов и распред коробку. Сделал воздухозаборники на капоте. Долго пытался себе объяснить зачем они, если двигатель находится сзади, а спереди багажник под капотом, но... спереди в стоке на авто тоже есть решетка и система забора воздуха, значит воздух спереди заходит и доходит до двигателя. Муки с обоснованием на этом закончились.
С мордой работы были окончены, пришло время переходить на заднюю часть авто. Убрал задние фары и стопы как в одном из первоначальных рефов. Логика тут проста, в постапокалипсисе никто не будет смотреть на горящие стопы и пытаться оттормаживаться, да и в ночи меньше вероятность что авто обнаружат.
И тут я на рефе увидел это:
Справа четко видно, что это кулеры охлаждения (зачем они там, если двигатель у тачки на рефе спереди, а ну да, у меня так же). А вот слева неведомая хрень. Посмотрев минут 5 на это, я для себя решил, что это будет мини ракетная установка, для отражения атак сзади. Сделал их, и конечно к ним провода, и конечно в распредкоробку и гофру) А еще для лучшего наведения на противника сзади к каждой ракетнице подключил камеру "go pro".
Также были мысли закрыть зад авто какой нибудь плитой металлической (там же двигатель, а его нужно защищать), но не стал этого делать, т.к. во-первых, это испортит сильно вид авто (хотя это же не главное), во-вторых, это увеличивает существенно вес авто, причем именно на зад, а у нас там двигатель еще, баланс массы может быть нарушен и морда может подняться, ну и в-третьих, тачка спортивная и долго ее преследовать вряд ли кто то сможет, она быстро оторвется, ну и мини ракетницы в этом помогут.
Осталось добавить контролируемого освещения сзади и конечно же проводов, куда же без них).
По итогу вот столько получилось электрики на авто (не навижу теперь делать провода):
Нужно было что то делать с пустой крышей. На ней не было ни одного элемента. После долгих раздумий и помощи товарищей по 3д цеху, было принято решение добавить ящик для ракет (ракетницы же есть, а ракет нет). В салоне бы такой ящик вряд ли поместился, в багажнике под капотом тоже. Но на крыше он был бы слишком приметный, поэтому закрыл его сеткой (сетку наложил через физику ткани) и перетянул веревкой. также на край каркаса добавил сетку рабицу, чтобы туда можно было положить какой то лут и перетянуть веревкой.
Занимательный момент, хоть ящик и под сеткой, но я всё же его проработал (и хорошо что сделал, т.к. во время покраски, я столкнулся с проблемой, на которую раньше не мог решить), а не просто куб запихал туда.
По итогу моделирования получаем вот такую тачку:
Просто продублирую фото "до" всех модификаций для наглядности:
Тут наступает второй важный момент - покраска авто.
И вот здесь я хочу пояснить почему я ошибся первый раз при использовании блендер кита. Как я ни старался, ну не дает материал кита эффекта реализма. Я не знаю, может он для авто не подходит, а может я материал неправильно настраиваю или рендер не так. В связи с этим я решил пойти сложным путем через развертку UV и раскраски уникальными текстурами в Сабстенс. Описывать покраску каждой детали не вижу смысла, поэтому расскажу только про интересные моменты.
Первое что я сделал, это раскидал меши по логическим группам и назначил им одинаковый материал (т.е. броня, электрика, стекло, резина и т.д.). В зависимости от размеров объектов, где то я использовал уникальные текстуры, где то текстурные атласы. Также в зависимости от размеров объектов я использовал разные размеры текстур от 512 до 4096.
Далее начался процесс UV развертки. По всем объектам развертку старался делать примерно в рамках текселя 19-23px/cm, чтобы не было выбиваний по резкости текстур. Почему взял именно такой тексель? Да хз, где то видел статью, что если объект рассматривать с близкого расстояния, то тексель должен быть 15-20 (там пример с джипом как раз был).
Пару примеров развертки:
Оверлап кузова я сделал через миррор, т.е. по факту я текстурил только одну часть кузова, а вторая зеркалилась.
Я не совсем знаю как правильно делать оверлапы на UV развертке, но по аналогии с кузовом, у меня получилось увеличить текстель через модификатор Mirror в блендере.
Вот тексель на каждое колесо:
А вот тексель на миррор заднего колеса (переднее не стал так делать, т.к. оно должно было быть уникальным и попадать в кадр при рендере):
Паковал всё в блендере через пакмастер 3 (очень удобный аддон).
Больше проблем с разверткой UV особо не возникло и я приступил к текстурированию объектов в сабстенс.
Начал я с кузова, как с основы всего. Нашел вот такую текстуру в инете и тупо растянул на кузов. Причем разрешение текстуры 1920х1280 всего, а карты запечки 4096. Но Сабстенс скушает всё)
Добавил сколы, потертости и грязь. Получилось как то так:
После я раскрасил расширенные арки для авто. Тут без изысков - грязь, ржавчина, стертости и т.д.
Во время отдыха от проекта и деградирования в инете, я наткнулся вот на такое чудо:
Я не знаю кто автор сие чуда, но мне это показалось очень оригинальным и смешным. Я начал гуглить и нашел это в скане книги.
Нашел эту картинку в полном размере без обрезок. Далее дело оставалось за малым, прогнал через фотошоп и получил вот такую альфу кисть:
К уже нанесенной ржавчине на броне, я просто добавил paint слой и кистью нанес рисунок (предварительно загрузив его в проект конечно же).
Я решил не останавливаться только на наскальном рисунке и добавил еще парочку простых. Принцип был тот же - поиск норм картинки в инете, перевод ее в альфа канал кисти через фотошоп и добавление на объект. В итоге получилось вот так:
И вот так:
Все стекла я разворачивал на отдельный текстурный атлас, но в сабстенс их выгружал вместе с решетками, т.к. это нужно было для корректного запекания карты АО. Если бы решеток не было, то например, на боковых стеклах пыль и грязь бы так не легла.
Вот мы и подошли к проблеме с ящиком, о котором я писал выше.
Проблема была в том, что при раскраске в сабстенс текстура с ржавчиной выглядела вот так:
А вот при экспорте текстур в блендер ржавчина стала выглядеть вот так:
Я пробовал разные варианты экспорта из сабстенс, пробовал гуглить, но решение так и не нашел. В одном чате по 3д мне помогли решить эту проблему. Оказывается баг был с нодами в блендер. Вот такие ноды были по дефолту при выгрузке из сабстенс:
А нужно было их переделать вот так:
И проблема ушла. А вот краткое пояснение решения проблемы. Если подключать текстуру с выпуклостями или неровностями через стандарт CTRL+T и Displacement, то ты требуешь от Blender, чтобы он тебе именно вершинки подвигал в соответствии с текстурой (т.е. изменял геометрию, и из за этого как раз баги возникают). Если изменить ноды и пустить Displacement через ноду BUMP и в нормаль — чтобы эти вершины отработают именно как текстура, и не трогают геометрию. И вот тогда багов не возникнет."
Может это кому то пригодится. Я с этим ранее сталкивался и не знал как решить эту проблему, т.к. в нодах не очень силен.
Итог - машина прокрашена, всё косяки устранены. Осталось подготовить сцену для рендера.
Первой сценой стал обычный куб со стандартным материалом и картой HDRI в зимнем лесу. Мне очень понравился холодный оттенок на авто от этой карты.
Тут сделал всё максимально быстро, камера-свет-рендер (много фото не буду выкладывать, т.к. они будут в личной галерее):
Первые рендеры были сделаны, они меня устроили, дальше начались раздумья о нормальной сцене для этой тачки.
В сети наткнулся вот на такой реф:
И я решил хотя бы приблизительно повторить эту сцену.
По сути тут также ничего сложного нет, всё также сделано примитивами и модификатором array. Единственный момент, я делал от обратного, т.е. я поставил камеру, поставил куб примерно по общим размерам авто и от этого уже делал сцену (т.е. длина объектов и и количество зависело от того сколько их видно в камере). Это было сделано для того, чтобы не создавать лишние невидные камере объекты. Сцена и так перегружена была, а из за большого количества текстур и полигонов блендер периодически вылетал (да, знаю про оптимизацию, но это не игровая модель, упор был на рендер):
После завершения моделирования, я перенес завод в сцену с тачкой:
Сделал корректировку количества объектов, машину подвинул поближе к камере, саму же камеру сдвинул ближе к земле:
И вновь повторяем ранее совершенную ошибку. Для ускорения процесса опять накидал материалов из блендер кит. В итоге какие то текстуры встали норм (например, большие кирпичные трубы), а какие то слишком часто повторялись (трубы, перила и т.д.) и это очень сильно бросалось в глаза.
Мне опять не понравился результат, я удалил все материалы и по аналогии с покраской машины, я накинул базовые цвета на логичные группы объектов:
При UV развертке объектов завода столкнулся с новой проблемой. При развертке машины тексель был в среднем 19-23px/cm. А при развертке завода тексель получался 1-3px/cm и это казалось прям очень мало. Такой тексель я получал из за частичного применения модификатора array и развертки объекта. Делал я это осознанно, т.к. знал, что если не применю array, то даже уникальная текстура будет повторяться слишком часто на объекте и это будет бросаться в глаза. Как пример, тексель 2,110 при текстуре 4096:
И вместо того, чтобы загрузить в сабстенс и посмотреть это всё, я пытался мудрить с UV, пересмотрел кучу уроков и стримов по развертке больших объектов (домов, высоток и т.д.), но ничего путного так и не нашел. В какой то момент я всё таки просто выгрузил модель в сабстенс и понял, что для таких объектов не так страшен такой тексель, т.к.:
1. Объекты находятся на приличном расстоянии от камеры.
2. Для таких объектов такой тексель впринице приемлемый и сабстенс не размывает текстуру.
По итогу я получил в сабстенс вот такую трубу:
С текстурой сильно не заморачивался всё по той же причине - объекты отдаленные и не основные для сцены.
Еще пару примеров текселя и итоговой текстуры :
После быстрой покраски всех объектов (кроме промышленных кирпичных труб, их оставил с материалом блендер кита, т.к. нормальный кирпич сделать в сабстенс не смог), получаем вот такую сцену:
Количество уникальных текстур перевалило за разумные пределы. 25 Текстур по автомобилю, 20 текстур по заводу и еще к каждой текстуре по 5 карт (базовый цвет, нормалка, roughness, metal и displacement). В связи с этим блендер почти постоянно вылетал при любом движении камеры в режиме Viewport Shading. Время рендера также сильно увеличилось, в строке состояния рендера видно было как он подтягивал текстуры из папок каждый раз при запуске.
Поигрался с HDRI картами и дополнительной подсветкой, также добавил небольшого тумана. Ночную сцену в дальнейшем переделал, убрал доп. лампы сверху завода и включил свет от фар авто.
Но всё равно было ощущение, что чего то не хватает в сцене. Мне посоветовали добавить мусора на дорогу, т.к. она казалась слишкой пустой.
Я быстренько сделал кирпичики, прогнал их падение в кучки через физику и расставил на дороге. Замоделил пару конусов, скопировал бочки с крыши "Машки" и чуть добавил травы...
Ну и конечно мне показалось, что травы слишком мало в сцене (как и проводов на машине). Авто же в постапокалипсисе, значит завод должен быть заброшенный, а значит заросший травой. И понеслось опять. Финальный вариант получился вот такой:
Еще хотел к сцене добавить дождь и лужи и всё это запилить в анимацию, но решил оставить этот эксперимент на какой нибудь будущий проект. Но лужи по быстренькому всё таки сделал). Быстрый поиск в гугле видеоурока (нашел очень информативный урок на аж целую минуту времени) и лужи готовы. Они, как мне кажется, гармонично вписались в сцену. Всё, вот теперь прям точно всё)
Этот кадр уже с небольшой обработкой в фотошопе. Больше фото будет в личной галереи.
Очень много текста и картинок получилось, так что не знаю дочитаете ли вы это до конца, но если вдруг осилите, то буду рад фидбеку, т.к. из комментов к своим постам я каждый раз нахожу для себя что то новое и исправляю старое.
Как говорится, спасибо за потраченное время)