Making Of "Старинные антикварные часы"
Привет, меня зовут Марина Байкова и уже около двух лет я изучаю 3D графику. Я всегда ощущала в себе тягу к творчеству и, наконец, моя любовь к видеоиграм привела меня в мир трехмерной графики. Единственное, о чем жалею, это то, что я не начала этот увлекательный путь раньше.
Вдохновение
Меня увлекает антиквариат и я часто ищу вдохновение на аукционных сайтах, где представлены качественные изображения антикварных предметов с разных ракурсов. Моё внимание привлекли эти часы, которые стали замечательной практикой для развития скульптурных и текстурных навыков.
Вот такие референсы были собраны в PureRef.
Процесс
Весь процесс начинается с этапа блокинга. Ориентируясь на свои референсы, я приступаю к созданию первых набросков будущего реквизита из примитивных объектов. Стараюсь задать правильные пропорции и построить первоначальные формы. Я всегда начинаю с формирования крупных основных форм, постепенно переходя к более мелким деталям.
Поскольку моя учеба еще продолжается и многие вещи мне незнакомы, для меня стало сюрпризом, что с помощью карандаша из панели инструментов можно без труда создать любую кривую. Такой метод я использовала при моделировании розы.
Создаем кривую, заходим в режим редактирования и удаляем все точки. Затем берем карандаш и начинаем рисовать, в моём случае это были лепестки розы. Когда результат меня устроил, кривую конвертировала в меш, экструдировала вершины и при помощи пропорционального редактирования придала нужную форму бутону.
Также пришлось долго повозиться с расстановкой цветов, лепестков на декоративной ветви. Это было весьма муторное занятие. Сначала позиционировала каждый элемент с привязкой к фейсам, а затем, чтобы добиться желаемого результата, в режиме скульптинга добавляла изгибы, меняла размеры и т.д.
Этот этап был проверкой моих нервов на прочность! Не знаю, что на тот момент происходило с программой или с компьютером, но Blender вылетал почти каждые 5 минут, если не чаще. Вылет был в момент использования привязки и в момент переключения в x-ray режим. Попытки пофиксить проблему были безрезультатны, я просто вытерпела. 😮💨
High-Poly
Страшнее всего было браться за голову льва, так как до этой работы мои знания в скульптинге равнялись нулю. Первым делом я посмотрела на Ютубе несколько уроков по ZBrush, чтобы понимать как строится процесс.
Для старта взяла удобные рефы, которые предоставил автор одного туториала. Далее я добавила сферу и, используя кисть Move, обвела контур головы.
После того как основа была готова (рис.1), стала подгонять голову под свой референс (деревянная голова, больше грубых линий). Полностью повторять не стремилась, делала как мне нравится. И вот что вышло. Мне кажется для первого раза неплохо.
Но было непросто, сложнее всего было подобрать и настроить нужную кисть :) В основном пользовалась такими, как на картинке ниже.
В процессе скульптинга я периодически применяла ZRemesher, чтобы достичь равномерности сетки(рис.2). Кроме того, для сглаживания модели и увеличения плотности сетки, я использовала опцию Divide(рис.3).
В целом, сам процесс скульптинга мне очень понравился. Жаль, что пока у меня не получается делать это так же быстро и легко, как это выглядит на гифке. :)
Все узоры на часах были созданы мной при помощи маскирования. Затем я инвертировала маску и использовала ползунок Offset в меню Deformation. Для получения более гладкого эффекта применила функцию Polish и использовала сглаживающую кисть (Shift F).
Однако этот метод не подходил для зеркально отраженного элемента, т.к offset одну сторону выдавливал, а противоположную вдавливал. Для узоров на боковых стенках часов потребовалось найти альтернативный подход, поскольку повторно рисовать вторую сторону не хотелось.
Функция Extract оказалась идеальным решением для моей задачи. Она позволила мне вытянуть обе зеркальные маски в нужном направлении.
Для создания линий на листьях и цветках подошла кисть ScribeChisel. В меню Stroke - Curve Modifiers можно настроить форму кривой. Если нужно, чтобы кривая применялась только к одному объекту, то в меню Brush - Auto Masking необходимо установить первый ползунок (Mask by Polygroups) на максимальное значение.
Если бы мне было известно ранее, что каждый элемент можно создавать на отдельных слоях (так и называется Layers в меню инструментов), я бы обязательно воспользовалась этой возможностью. Это предоставило бы гибкость для последующего редактирования рисунков, например, изменения глубины выдавливания или даже полного отключения эффекта.
И, в итоге, вот так выглядит высокополигональная модель. Кажется, именно этот этап мне понравился больше всего. :)
Retopology
Относительно ретопологии, я посмотрела это видео Retopology in Blender (Beginner Tutorial) и последовала предоставленным там инструкциям.
Lowpoly
Создание низкополигональной версии часов прошло быстро и просто. Я взяла базовую модель и оптимизировала ее, убрав лишние полигоны.
Затем выделила одно острое ребро и с помощью хоткея Shift+G выбрала функцию Face Angels, которая автоматически выделила все оставшиеся острые ребра и пометила их как Sharp.
UV
Чтобы добиться высокого текселя и не разбивать модель на отдельные материалы (текстурные сеты),
я попробовала развернуть модельку на UDIM. Таким образом, был создан один материал с 4-мя текстурными картами.
В начале процесса я выделила все Sharp, и на их место поставила Seam. Однако в некоторых местах, как на цилиндрах, я ставила швы вручную. После развертки я приступила к выравниванию некоторых островов, воспользовавшись аддоном TexTools. Затем упаковала на 4 тайла с помощью UVpackmaster (см.картинку).
Baking
Запекаю текстуры в Marmoset Toolbag. Перед экспортом каждому объекту ставлю суффиксы _low и _high. В Blender можно быстро переименовать все объекты через "Пакетное переименование".
Поскольку Marmoset не поддерживает UDIM, нужно подготовить модель. Каждому тайлу присваиваем свой материал и именуем их с учетом номеров на UDIM.
Для удобства выбора островов одного тайла использовала аддонSelects UDIM. Советую. :)
Затем острова каждого тайла перемещаем на первый дефолтный квадрат.
В Marmoset создаем новый проект, в настройках ставим галочку напротив Multiple Textures Set и запекаем.
Необходимо изменить названия полученных карт, чтобы программы могли корректно определить их как текстуры UDIM. Для переименования большого числа файлов был использован Total Commander.
Texturing
Так как у меня UDIM развертка, при создании проекта в Substance Painter нужно поставить галочку напротив Use UV Tile workflow.
Лакированное дерево
Сначала я закрасила всё светлым оттенком, а затем внесла разнообразные шумы.
Для первого из них я нашла в Интернете картинку с понравившимся мне рисунком дерева. Для поиска различных текстур можно воспользоваться сайтами: ambientcg, texture.com.
Подключив скачанную текстуру в маску, я настроила её с помощью уровней и установила небольшое значение Height на этом слое. Далее я добавила больше цветовых вариаций Grunge картами, меняя режим наложения и степень прозрачности.
Снова использую фототекстуры, подключаю их в Base color и Roughness. Корректирую масштаб, и поскольку у меня есть только карта Glossiness, инвертирую ее с помощью уровней. Чтобы полностью не перекрывать нижние слои, я устанавливаю прозрачность на 65 единиц (рис.1).
На следующем этапе извлекла тёмные пятна из картинки режимом наложения Darken, снизила прозрачность и отрегулировала цвет.
После этого, используя генератор Curvature, я добавляю небольшую вариацию высоты в углублениях и делаю их более темными (рис.2).
Для удаления лака в определенных областях я создала маску и воспользовалась генератором mask editor. Далее, добавляя Grunge карты, я вношу дополнительное разнообразие, меняя режимы наложения и убирая нежелательные повреждения в слое Paint.
И весь дальнейший износ делаю аналогично, как описано выше про лак. Где-то добавляю генераторы или обхожусь одной grunge картой, много рисую сама и делаю цветовые вариации, используя фототекстуры из Интернета.
В завершении я добавляю слой с пылью и применяю фильтр Sharpen с низкой интенсивностью.
Lighting & Rendering
Первым делом настроила камеру, я предпочитаю использовать большое фокусное расстояние, чтобы избежать сильных искажений. В этом проекте я установила значение около 90 мм. Подобрала ракурс и разделила вьюпорт на два окна, чтобы всегда контролировать вид из камеры.
Для того чтобы собрать сценку я прибегла к помощи Quixel Megascans, взяла там несколько ассетов, в том числе камин, который просто использовала как столешницу, а также текстуру обоев.
Работа со светом - это самый сложный для меня этап. Я стараюсь придерживаться принципов трехточечного освещения, однако пока не удается полностью реализовать то изображение, которое я вижу в своей голове. Есть еще многое, что нужно изучить, и я надеюсь, что дальше будет проще. Но пока вот так :).
Первая лампа расположена слева. Чтобы сделать переход от света к тени более плавным, перед лампой находится плейн, выполняющий роль рассеивателя света. Для плейна я смиксовала два шейдера: Translucent и Transparent, а также настроила фактор смешивания.
Второй набор лампочек был использован для подсветки контура часов и элементов декора.
Далее, чтобы заполнить комнату светом, я добавляю солнце. На стене светотеневым рисунком мне захотелось создать иллюзию, будто солнце проникает внутрь через окна. Для этого на правой стороне комнаты, где нет стены, я добавила два плейна, чтобы ограничить проникновение света.
Затем возникло ощущение, что два ярких пятна выглядят не очень хорошо и решила добавить занавески со складками, чтобы получить больше интересных теней. Для штор использовала текстуру тюли с прозрачностью.
В качестве отражателя солнечного света перед часами я разместила плейн. Создала для него новый материал белого цвета и, регулируя параметр "Value" в разделе "Base Color", настраивала степень отражения солнечного света на часы.
Чтобы добавить больше глубины в сцену, я создала куб и увеличила его размеры, а затем применила материал с шейдером Principled Volume с небольшим значением Density.
В завершении, рядом с часами разместила несколько плейнов с текстурой пыли (черно-белая картинка) и с помощью ноды Color Ramp регулировала количество пыли. Для рендера я использовала движок Cycles, а в Compositing сделала несколько небольших корректировок.
Оглядываясь назад, я понимаю, как много нового узнала, работая над этими часами. Несмотря на трудности по пути и на то, что к концу проекта у меня почти не оставалось сил для освещения и рендера, а моя чрезмерная самокритичность временами замедляла процесс, я всё равно довольна результатом.
Хочу выразить благодарность Render.ru за возможность написать эту статью! И также хочу поблагодарить всех, кто прочитал ее. Желаю вам успехов и нескончаемой мотивации.
А я в предвкушении иду дальше, получать новые знания! :)
Больше рендеров можно посмотреть на render.ru и на artstation.