Урок по 3D визуализации экстерьера. Автор Сакул Вартанян.
Введение
Привет всем. Меня зовут Сакул Вартанян. Я 3D Artist из города Екатеринбург. В этом уроке я поделюсь тонкостями создания моей последней работы "Soulages Museum".
Прежде всего, хочу сказать, что мне приятно поделиться своим рабочим процессом. Я надеюсь вы сможете найти что-то вдохновляющее и полезное в этом уроке. Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать, я с радостью на них отвечу.
Этот проект я решил сделать, в первую очередь, для конкурса The One Rendering Challenge. И наряду с этим, попробовать вложить в него все свои знания и умения, чтобы максимально отразить свои навыки. В целом, на создание проекта у меня ушло чуть больше двух недель.
Проект
По правилам конкурса можно было использовать существующее здание для демонстрации определенной идеи, и которое бы удовлетворяло заявленным организаторами критериям. С чем я в итоге не справился,) но зато получил очень качественный проект для своего портфолио, демонстрирующий мои навыки и умения.
Мне очень понравился архитектурный проект музея Soulages во Франции, спроектированный каталонским бюро RCR Arquitectes, он обладал монументальностью и строгостью архитектуры, и я решил его использовать для реализации. Самыми полезными для создания этих визуализаций были, конечно же, фотографии, сделанные фотографом KEVIN DOLMAIRE. Каких-то новых положений камер, направленных на само здание, я не искал, так как профессиональные фотографы, разбирающиеся в композиции кадра лучше меня, уже решили эту задачу. В свою очередь, я просто выбрал ракурсы, лучше всего демонстрирующие архитектуру здания. А вот над остальными я уже провел поиск самостоятельно.
Перед началом реализации я расставил для себя приоритеты, которыми я руководствуюсь при создании фотореалистичной 3д графики. Основное — это правильное освещение. Следующее, не менее важное, умение показать взаимодействие между материалами, и размытие резких границ между объектами. Хорошие текстуры сейчас доступны многим, но при этом 3Д визуалиазации у основной массы художников все равно выглядят как рендер. Поэтому важно уметь создавать живую среду.
3D моделирование
Моделирование фасадов
Очевидно, что фасад этого здания создать довольно просто. Создал боксы, затем просто нарезал (floor generator при этом не использовал).
Ну а для элементов с окнами, я создал один сегмент, который затем размножил, предварительно задав определенные id всем полигонам.
Растительность и газоны
Для травы я использовал 3D модели из библиотек Megascans.
Кусты и деревья я брал из сборников Maxtree и Archmodels
Имея такие хорошие сборники растительности, самостоятельно создавать 3D модели растений нет необходимости. Но вот шейдеры для листьев и коры я пересоздаю самостоятельно, а также зачастую меняю текстуру самой коры ствола и веток, так как базовые текстуры и материалы особой реалистичностью не отличаются. И так я делаю с каждым растением, да отнимает много времени, но различия на 3D визуализации в итоге довольно ощутимые.
Щебень
Для переднего плана я не хотел использовать текстуру с дисплейсом и решил делать геометрией. Меня сразу не устроил вариант с разбросом отдельных камней через Corona Scatter, так как я понимал, что это будет выглядеть неестественно, камни буду пересекаться друг с другом, парить в воздухе и т.д. Потому я решил сделать симуляцию. Следующим шагом было подобрать идентичный с референсом щебень, грубый, необработанный. Щебень я взял из сборника Arroway. Когда я импортировал нужный мне образец, он уже был разложен в квадратные сегменты. В противном случае я бы сам сделал симуляцию камней через MassFX.
Такую геометрию уже можно использовать для разброса. Определил размер квадратного образца, а дальше в Сorona Scatter указал распределение по сетке, с необходимым шагом, и чтобы избежать повторяемости взял несколько различных сгенерированных моделей с шагом вращения 90 градусов по оси Z. И чтобы дополнительно избавиться от повторяемости, диффузную карту я подключил к Corona Multimap, указал вариативность в оттенке и гамме для инстанс копий (хотя можно и для элементов).
3D модели дорожных знаков, столбов и прочего
Через просмотр улиц в Google maps я сделал скриншоты всех элементов и затем создал их в 3ds max.
Текстуры для информационных знаков я сделал в фотошопе.
Стадия освещения
Основным в настройке освещения для этой сцены, является подбор правильной HDRI и дальнейшая ее коррекция. Я выбрал самую подходящую из того что имел — это Cloudy с CG-Source.
При анализе референса видно, что небо пасмурное, серого цвета, но при этом в тенях заметны синеватые оттенки, а в освещенных участка желто-красные, тени слабые, сильно размытые (это свидетельствует о размере и яркости солнца). Эту информацию я буду использовать в дальнейшем при настройке HDRI в фотошопе.
Сначала делаю тестовый рендер с оригинальной HDRI картой. На бекплейт ставлю свой референс. Вижу, что присутствует много синих оттенков. Я не разбираюсь в физике неба, но по итогу выходит так, будто мы поставили в сцену источники света, которые светят синим оттенком с усиленной интенсивностью. Поэтому я уменьшаю насыщенность и немного яркость синих и циановых оттенков в фотошопе. Далее добавлю желто-красных оттенков для солнца.
Я думаю этот результат немного ближе к истине.
Стадия текстурирования
Текстурирование фасадов
Материал фасада — это цельный шейдер. Он состоит из материала металла и ржавчины. Ржавчина состоит из двух базовых текстур диффузного компонента и различных масок (нет набора PBR текстур).
Материал стекла
Это обычный материал стекла, но с одной условностью. Насколько я знаю окна не делают просто из стекла с показателем IOR 1.52, там обычно присутствует отражающая пленка на внутренней поверхности, поэтому я увеличил ior для этого стекла до 2,5.
Материал дороги
Здесь я использовал основную бесшовную монотонную текстуру от Poliigon, а для добавления деталей поверх накладывал текстуры Friendly Shade с различными дефектами. По факту тут нужна отдельная статья для описания всего процесса создания дороги, но вкратце расскажу основные моменты. Для начала я сделал развертку через Unwrap UVW, чтобы при поворотах текстура также следовала за направлением дороги. И добавил несколько разных по размеру UVW Map, но с указанием другого канала. Создал сплайны из контуров дороги, которые затем послужат маской через Corona Distance и также для следов от шин и колеи я создал отдельные сплайны. А подключение карты Corona Distance к Bercongradient дает вам неограниченные возможности в настройке маски (об этом приеме я узнал из ролика Vray, где они показывали, как сделать чайные подтеки на бумаге от стакана).
Не могу не отметить то, что Bercon Gradient очень сильная карта, которая может заменить Fall off map и Gradient Ramp, но не все ее функции работают корректно с Corona Renderer.
Материалы растений
Для коры я использую сканированные текстуры, чтобы получить рельеф ствола для деревьев переднего плана.
Для листвы, как правило, я настраиваю отдельно материал для фронтальной и обратной части листа. Фронтальная часть более темная и имеет IOR около 2.4 и высокую рефлективность (но все листья разные и для каждого отдельного растения эти значения разняться). Обратная сторона менее рефлективная, но более яркая.
Деколи
Принцип, который помогает мне добавить деталей элементам без особых усилий — это деколи из Megascans. Когда я смотрел демонстрационные ролики от Quixel, где они собирали сцену в Unreal Engine, они, загадочным для меня образом, накладывали деколи на поверхности, которые очень естественно интегрировались с ними. Я не знаю, что там за механика, но мне захотелось то же провернуть в 3ds max. И я пришел к очень простому решению. Я просто создаю плоскость с нужными пропорциями, применяю материал, далее в настройках объекта убираю галочки с Cast Shadows и Visible to Reflection/Refraction. Подношу к месту где бы я хотел его установить и проецирую через rapidRTconform на нужную поверхность, затем при интерактивном рендере приподнимаю этот объект до тех пор, пока он не станет видимым (из-за возможного дисплейса поверхности на которую вы его положили). Так как он не отбрасывает тени и не виден в отражениях, даже если он будет парить над поверхностью вы этого не заметите. Вот такой интересный прием).
Бонус
Покажу некоторые фишки, которых я не видел на просторах интернета. Они все будут завязаны на Falloff map.
1. Изменение масштаба текстуры по мере отдаление от точки взгялда.
Сначала покажу результат, думаю для вас очевидно какой вариант лучше:)
Теперь я покажу как работает маска. Она интерактивная. Зависит от дистанции от точки взгяла. Слева картинка без маски, справа с маской.
Карта Fall off отвечает за прорисовку плавной черно-белой маски отсчитываемую от точки взгялда. Затем подключая к карте градиента я уже могу эту плавную маску разделить на сколько угодно нужных мне частей. Механика градиента такова, что он по своей шкале слева направо заменяет от самых темных до самых ярких пикселей подключенной карты соответственно на те цвета, что ты укажешь в самой шкале.
Так выглядит настройка маски. Значения дистанции естественно могут разниться.
Далее эту маску применяем к шейдеру. Bercon Mapping я использую для того, чтобы изменить масштаб текстуры. И далее, с помощью карты RGB Tint я фильтрую маску по RGB каналам.
Очевидно что здесь материал настроен не полностью, но суть вы уловили. Дальше нужно подключить все сопутствующие карты. Только не забывайте, что дисплейс нужно миксовать в базовом материале. Такова механика послойного материала.
2. Применение того же режима карты Fall off для Corona Scatter
Я уверен многим знаком режим распределения объектов в Forest pack, который при отдалении от камеры уменьшает плотность инстансов. Так вот. Подключив карту Fall off в слот Distribution в Corona Scatter вы получите тот же эффект.
3. Использование карты Bercon Gradient или Fall off + Gradientramp для создания маски снега, пыли и т.д.
Таким образом вы, к примеру, можете создать маску для границ участков снега, где снег будет более талый и ближе ко льду, и затем переходящий плавно в пушистый. А затем добавлять геометрию разными плагинами типа Snow Flow и т.д. Мне кажется этот вариант будет самым фотореалистичным подходом для зимних сцен. В чем его особенность, так это то, что маска процедурная и как бы вы не вращали объект, маска будет всегда сверху. А это значит что если это применить к веткам или камням которые скатерятся, то снег будет всегда сверху несмотря на любое положение объекта.
Единственная причина по которой я показал эти фишки на примитивах в том, что я еще не успел ни в одном проекте применить эти знания. Но в следующих проектах я обязательно это реализую.
На этом все, надеюсь урок будет вам полезен. Дальше еще немного рендеров из этого проекта.
Ув. читатель, если ты тоже хочешь поделиться своими знаниями, напиши нам на почту cgaward@ukr.net
Ссылка на портфолио автора https://www.behance.net/sakulvartanyan
У вас не было мыслей сделать видеоуроки по созданию материалов? Это было бы сейчас очень востребовано!!!
Спасибо вам за отличное вдохновение от этой статьи и работы!