Making Of "Библиотека Гейзеля в Сан-Диего"
Всем привет! Меня зовут Антон, и я уже довольно давно двигаю полигончики в разные стороны. :)
В 3D я работаю около 15-ти лет, начинал с рекламно-выставочной области, ненадолго заглянул в жилые интерьеры, гораздо дольше проработал с коммерческими, после чего сделал широкий шаг в сторону архитектуры. Примерно столько же времени держу в руках зеркалку, и периодически у меня даже получаются неплохие снимки. :)
В этом Making Of я расскажу о том, как создавалась работа «Библиотека Гейзеля».
Проект получился достаточно неожиданным, несмотря на то, что первая мысль о нём закралась ещё давно, когда хороший товарищ показал свою модель, со словами «смотри какую брутальную штуку я сделал». Но в тот момент всё угасло, то ли от нехватки времени, то ли настроения, а может и всего сразу. Однако спустя некоторое время модель самого здания обросла окружением, свободного времени прибавилось, да и товарищ был всё также не против увидеть интересный виз с его моделью.
Выбор атмосферы для изначального кадра был достаточно быстрым — благо в голове давно крутилась идея сделать что-то мрачно-осеннее, да и архитектура оказалась идеально подходящей. Несмотря на то, что референсы — всему голова, я не стал собирать какую-либо подборку, лишь быстро пробежался по разнообразным фоткам в гугле (хотя и взяв пару картинок на заметку) и решил довериться ощущениям. А неожиданно попавшаяся на глаза картинка с грустным Киану Ривзом, стала неожиданной маленькой фишкой проекта, и поводом опробовать новый тип нейронок.
Зная себя и способность упустить идею, запал так же быстро, как они пришли, я поставил себе временной лимит в примерно неделю, запасся чаем и запустил макс.
Доводка модели
Как всем известно — дьявол в деталях и несмотря на очень хорошее качество модели, некоторых мелочей мне не хватило, поэтому в сцене появились перила с подсветкой лесенки, указатель, баки для мусора, напоминание о том, чего около библиотеки делать не нужно, и слегка поменял свой вид ландшафт. Для того, чтобы в будущем не получить ровный коврик из травы и кустов, я слегка помял попадавший в кадр участок через soft selection, и более точечно — кисточкой push\pull.
Свет
Поскольку в обычной работе я в 90% случаев пользуюсь HDRI, доводя их до нужной кондиции, и разделяя светящую и видимую карты через Direct visibility override, то и здесь не стал делать исключений, подобрав пасмурное небо.
Одновременно с этим, сразу же добавил в сцену CoronaVolumeMaterial, чтоб напустить дымки и ослабить контраст заднего плана. Почему именно так – потому, что оно чуточку честнее, чем возиться с ZDepth, я не очень большой любитель фотошопа, а время рендера в творческих проектах меня не сильно смущает.
Точно так же, больше на ощущениях, чем на базе референсов, был настроен солнечный и вечерний свет.
Доводка модели, дубль 2
Как часто бывает, увлёкшись внешними мелочами, я незаметно упустил из вида одну небольшую деталь, размером практически во всё здание — потолки, со специфичным шахматным расположением светильников, да ещё и в разных направлениях. Цели сделать идеально не было, но всё же хотелось правдоподобности и упрощённые варианты отваливались один за другим:
- просто нарезать сетку и сделать через Corona Light Mtl — невозможно будет погасить лампы, останутся чёрные пятна,
- сделать геометрией с нишами под свет через модификатор Array — на каждом этаже разная область для каждого направления ламп, каждую придётся подпиливать отдельно, муторно (не забываем про неделю и потерю запала),
- …
И тут снизошло озарение — как я мог забыть про RailClone! Который на пару с ForestPack уже неоднократно спасал жизнь, время и репутацию. :)
После небольшого количества тестов было собрано комбо из пары многоуровневых сплайнов, двух генераторов двухкоординатного массива, отдельно для продольных и поперечных ламп, в каждом из которых притаился маркер для расстановки самих источников света (они расставлены отдельно через ForestPack в режиме Reference).
Ну и чтобы внутреннее освещение не было таким монотонным, цвет источникам я задал через CoronaMultiMap, закинув туда несколько цветов, включая чёрный, рандомно отключающий источники.
Зелень, листья, и все все
(толпа на под окном дружно кричит «ForestPack! ForestPack!»)
Почему именно форест, а не встроенный ChaosScatter, например? Всё просто, форест у меня под рукой уже много лет, а вместе с этим ещё и повод опробовать не так давно появившийся инструмент ForestIvy, позволяющий буквально рисовать плющ прямо по объектам.
Настроек в нём пока по минимуму, небольшая библиотека пресетов, но результат мне понравился даже по умолчанию.
Зелени как таковой, в сцене не сказать, что очень много – несколько кустов из Megascans, десяток деревьев, и пара-тройка пучков травы.
В отдельных форестах — мелкие кустики около входа, большие кусты на склоне, трава под большими кустами, чтобы они визуально не торчали из земли и фоновые деревья. В настройках самой рассадки (кроме деревьев) я почти всегда включаю кластеры и коллизии, чтобы кусты не торчали друг из друга, и кучковались одинаковыми видами, и подбираю значения Units на глаз.
Деревья стоящие прямо за камерой, листики которых видны по краям кадра, я почти всегда ставлю вручную – мне так и быстрее и удобнее, чем любой другой способ.
Лежащие на асфальте листочки — тоже форест, вернее, форесты. Листики одни и те же, а форестов два. Почему, опять же, так проще. Один отвечает за более-менее равномерно раскиданные по всей площади дорожек листья, второй, в котором зона рассадки нарисована вручную, кисточкой — за всё что, что скапливается в углах и приводит в ужас калифорнийских дворников. :)
Накидав листиков, я было успокоился и сунулся в материалы, когда пронеслась мысль: «Стоп, если их столько насыпалось, наверное они вполне могут продолжать падать прямо в момент съёмки? А чтоб было красиво – ещё и могут быть с размытием..»
И поскольку анимировать тот же ChaosScatter можно, но моушен блюр при этом работать не будет, пришлось погрузиться в неизведанный ранее мир частиц, поставив tyFlow.
Впрочем, для базовых задач он оказался довольно несложен, операторы подписаны простым английским текстом, и некоторые значения (гравитация к примеру) заранее настроены по обычной земной физике. (скромно опустим миллион уроков на ютубе).
Собственно, на скриншоте вся последовательность для небольшого листопада, сверху вниз:
- Birth - генерация самих частиц,
- Position Icon - указание эмиттера (то, откуда будут сыпаться листочки),
- Force - силы, отвечающие за то куда их будет сдувать,
- Spin - вращение,
- Slow - общее замедление частиц, чтобы блюр не превратил их в непонятные полоски (половину в итоге превратил, впрочем:)),
- Mesh – или лыжи не едут, или корона без этого частицы не рендерит,
- Shape - какую именно геометрию прицепить к каждой частице,
- PhysX Shape указание того, что объект дорожки – конец пути, на него можно упасть и лежать,
- (пропущенные Instance ID и Material – мои попытки понять, как нацепить материал листиков на сами частицы).
И поскольку тестируется обычно всё на боксах, можно увидеть, как выглядит «отложить кирпичей» в исполнении tyFlow. :)
Материалы
Пожалуй, это один из самых скромных разделов всего making of`а, основные материалы, бетон, земля и плитка – взяты из библиотеки Megascans либо без изменений, либо с минимальными доработками, либо простейшие сами по себе стёкла и зеркала, поэтому подробно остановлюсь только на паре из них — зеркальном остеклении перед входом, и мокрой плитке.
Материал остекления максимально прост — обычное зеркало, сделанное с учётом того, что стёкла таких размеров уже не будут давать идеально ровных отражений. А с тем, чтобы отражение в каждом окне было своим, а не тянулось одинаковым изгибом по нескольким стёклам, нам помогут CoronaMultiMap, и самый обычный noise крупного размера. В каждой из процедурок слегка меняются размер и фаза, сдвигающая сам рисунок шума, после чего мультимап кладёт на каждый полигон отдельную текстуру.
Материал плитки с лужами чуть объёмней на вид, но логически – всё так же прост, следите за руками :) К основной текстуре подмешивается noise, чтобы слегка затемнить участки под будущими лужами, он же идёт в reflection glossiness, усиливая отражения в тех же самых местах.
У материала в верхнем слое тот самый glossiness отключается полностью, превращая его в плитку, равномерно залитую водой, после чего оба слоя смешиваются по копии всё того же нойза, со сближенными значениями high и low threshold (в красной рамочке), для усиления контраста. Остальные настройки нойза лучше не трогать, во избежание появления луж не там, где задумано. :)
Да-да, я знаю что можно было сделать через CoronaPhysicalMtl и слой ClearCoat, и скорей всего ещё парой способов, но мои олдскулы всё ещё слегка сводит от физматов, поэтому по старинке.
Киану против ИИ
«Вам пора это увидеть, мистер Андерсон, увидеть и понять! Вы не можете победить, продолжать борьбу бессмысленно. Почему, мистер Андерсон, почему вы упорствуете?» (с) The Matrix Revolutions.
Внимание, если вы – ярый ненавистник нейронок в любом их проявлении, то следующий раздел лучше пропустить, и вместо этого выйти прогуляться, выпить чайку, или принять таблеточек. :)
Поскольку грустный Киану был, пожалуй, главной движущей силой проекта, хотелось усадить его на ступеньки между двух стен, но со своей «любовью» ко вписыванию людей на пост-обработке, я не был уверен, что получится так, чтобы мне не было за это стыдно. Поэтому в голове почти сразу закрутился вопрос, как сделать это внутри сцены, хотя бы минимально. Последовательно отвалились варианты с «посадить любого человечка и отключить visible to camera, чтоб осталась одна тень», и «затекстурить методом проекции любого сидящего болванчика», после чего я задумался – ведь должен был прогресс уже шагнуть в сторону генерации моделей по фоткам? Оказалось, уже давно, и довольно далеко зашёл. :)
До локальных нейронок на базе того же ComfiUI пока руки не дошли, но с подсказки автора модели здания я решил попробовать сервис Tripo Ai, в котором он по одному фото сгенерил себе неведомую фигню (маленькую и на дальний план) для одного из проектов.
Вот такой вот вдвойне грустный Киану из альтернативной Матрицы, но для задуманной задачи модель более чем сгодилась — поместилась на лесенку, отбросила тень, и дала отражение в луже.
Пост
Самый минималистичный раздел. Как-то само собой сложилось, что здесь я максимально рассчитывал сделать всё внутри макса, а на пост-обработку оставить только вписку фото. Пришлось немного замазать края модельки, выступавшие за контур вырезанного силуэта, после чего осталось несколькими корректирующими слоями подогнать яркость и насыщенность, и слегка обесцветить отражение в луже.
И на этом работа над основным кадром окончена, как и этот making of. Спасибо всем за внимание!