Как создать уютный сельский дом в 3D
Гокан Джанитез рассказал о рабочем процессе над проектом «Итальянский деревенский дом», продемонстрировав генератор кактусов, созданный в Houdini, и процесс создания повторяющихся текстур в Substance 3D Painter.

Введение
Здравствуйте, всем! Я Гёкхан Джанитез, 3D-артист, страстно любящий игры, кино и всё интерактивное. Моя страсть к визуальному повествованию уходит корнями в детство, когда я впервые открыл для себя волшебство игр для Nintendo NES, таких как Super Mario Bros. 3, Snake Rattle 'n' Roll и Soccer. Эти воображаемые, красочные миры и боссы произвели на меня неизгладимое впечатление и зажгли моё увлечение платформерами и стилизованными играми.

Когда я стал старше, компьютерные игры открыли передо мной целую новую вселенную. Unreal Tournament, Quake, Age of Empires и многие другие. Мы подключали наши ПК с помощью сетевых кабелей по комнатам (и даже по квартирам!), чтобы играть вместе, что действительно укрепило моё понимание общих интерактивных впечатлений и игрового дизайна.
Во время учёбы на философа в университете меня всё больше тянуло к фотографии и кино. Я проводил большую часть времени в школьном киноклубе, смотрел и обсуждал фильмы, посещал занятия по киноанализу и даже экспериментировал с короткометражными фильмами и монтажом в After Effects и Premiere Pro. Я также пробовал себя в анимации во Flash и Photoshop, просто ради удовольствия экспериментируя с рисованными последовательностями. Всё это постепенно привело меня в мир компьютерной графики.
После окончания учёбы я наткнулся в Reddit на пост о трекингу камеры. Это была простая уличная сцена, ничего особенного, но то, как были интегрированы элементы компьютерной графики, поразило меня. В тот момент я задал себе вопрос: «Смогу ли я сделать что-то подобное?» Освещение, тени, анимация и визуальные эффекты были настолько убедительными, что я сразу же углубился в комментарии и начал исследовать, как это было сделано. Этот пост стал поворотным моментом. Я начал учить себя 3D-искусству с нуля.
Позже я оформил своё обучение с помощью курсов в Anima Okul и расширил свои навыки по всему конвейеру компьютерной графики. Почти четыре года я работал художником по процедурному моделированию в Capoom, где у меня была возможность глубоко погрузиться в Houdini, инструмент, которым я восхищался с самого начала. После того как Capoom сократилась, я работал фрилансером в Otomat Film, где занимался проектами по подводной местности на основе фотограмметрии и создавал иммерсивные рендеры на 360°.
С тех пор я сосредоточился на формировании своего портфолио и изучении Unreal Engine, чтобы воплотить больше своих идей в средах реального времени. Этот проект знаменует собой важный этап в этом путешествии.
Итальянский загородный дом
Я думал о создании спокойной, неподвижной среды с домом и садом, вдохновлённым такими местами, как Тоскана и другие средиземноморские деревни. Идея заключалась в том, чтобы построить вневременное, живописное пространство с полуреалистичным видом.
В начале каждого проекта я уделяю время сбору референсов, чтобы лучше понять тему и определить чёткое творческое направление. Я не стремлюсь к огромной библиотеке референсов на начальном этапе, а начинаю с основной концепции и постепенно расширяю её по мере развития проекта. Для этого проекта я использовал PureRef для создания доски референсов, начиная с одного ключевого изображения, которое передавало общее настроение и атмосферу, которые я хотел. Затем я организовал вспомогательные референсы по категориям, таким как растительность, архитектура, материалы и освещение. Такой подход позволил мне сосредоточиться на последовательном визуальном языке, одновременно давая мне возможность исследовать и уточнять детали на протяжении всего производства.

Основным источником вдохновения послужил фильм «Сёстры по судьбе: Селин и Жюли идут по воде», а также игры, такие как «Исчезновение Итана Картера», «Что осталось от Эдит Финч» и «Life is Strange: True Colors». Эти ссылки сформировали мою цель: создать дом и сад, которые ощущались бы как воспоминание.

Это также был мой первый проект в Unreal Engine, поэтому я хотел протестировать рабочие процессы Houdini Engine между Houdini и UE5, создавая некоторые инструменты, такие как генераторы кактусов и плюща, при построении сцены.
Моделирование и декорирование
Мой рабочий процесс моделирования был довольно простым. Хотя мне также удобно работать в Maya, я решил создать все модульные части дома в Houdini для этого проекта, главным образом потому, что планировал разработать несколько инструментов, таких как генератор кактусов и плюща, поэтому было наиболее логично держать всё в одном месте.
``````Я начал с дома. Основываясь на планах по текстурированию (в частности, используя текстуры каменных стен, подходящих для укладки плиткой), я рассчитал размеры для каждой модульной детали, такие как ширина и высота. Изначально я подумывал о полностью модульной и процедурной настройке, где такие параметры, как высота стен, могли бы изменяться с помощью параметров, а оболочки UV автоматически корректировались бы в нужных точках, точно позиционировались в пространстве UV и бесшовно укладывались плиткой. Это мощный подход и увлекательная техническая задача, но в итоге я решил не реализовывать его на этот раз. Поскольку я также изучал Unreal Engine и это был мой первый полноценный проект по созданию окружения, я не хотел слишком расширять рамки.

Я нашёл надёжную референсную картинку и решил придерживаться её. Я смоделировал здание в соответствии с запланированными размерами и сделал количество полигонов очень низким. Я заметил, что очень малое количество вершин усложняло рисование вершин — просто не хватало вершин для плавного рисования в некоторых областях, так что я буду иметь это в виду для будущих проектов.
Я создал стандартные модульные компоненты: простые стены, стены с окнами или дверями и угловые детали. Ширина варьировалась только для углов; в остальном всё соответствовало одной логике размеров, чтобы структура была чистой и последовательной. Построив дом в точности так, как показано на эталонном изображении, я добавил деревянные ставни и другие мелкие детали, чтобы оживить его. Я также настроил точки поворота ставен так, чтобы они могли вращаться, что позволило позже анимировать лёгкий ветер.

Для крыши я использовал более процедурный подход, вдохновлённый учебником Джеронимо Магги. Он работал очень хорошо и дополнил модульную настройку дома. Хотя я добавил только ещё один дом на заднем плане (в основном виден только его угол), сочетание процедурной крыши и модульных стен позволило бы легко вносить изменения, если это необходимо. Однако целью проекта не было заполнение всей сцены разными зданиями, этот проект был посвящён изучению модульности и рассказыванию историй в окружении с помощью единой, целенаправленной структуры.
После того как дом был готов, я перешёл в Unreal и создал простой блок-аут, используя только здание. Я вылепил местность напрямую с помощью инструментов ландшафта Unreal, подобрав форму и поток по референсной картинке реального мира. Изначально я планировал сгенерировать ландшафт в Gaea или Houdini, используя карты высот, но поскольку местность была довольно простой, наиболее эффективным выбором было использовать встроенные инструменты Unreal.
Наконец, я использовал Nanite для всех своих ассетов, чтобы обеспечить производительность и сохранить визуальное качество по всей сцене.


Растительность
Моя основная цель при работе с растительностью заключалась в создании динамичного, живого садового пространства вокруг дома. С самого начала проекта я планировал создать дом, генератор кактусов HDA и, возможно, генератор плюща. Однако, чтобы эффективно управлять временем, я решил использовать готовые ассеты для остальной части окружения и листвы, в основном используя контент из Fab и библиотеки Quixel.

Все ассеты растительности в сцене были настроены с включённым смещением позиции в мире и эффектами ветра, чтобы обеспечить плавное, естественно выглядящее моделирование ветра.
Для основной растительности я использовал пакет City Park для травы и деревьев. Позже я добавил цветы, увидев красивую цветочную композицию в видео разбора Framestore Gucci Flora. Я узнал упаковку, которую они использовали, нашёл её на Fab и сразу же включил в свой проект.


Процесс размещения растительности включал в себя множество итераций. Я работал над планировкой и плотностью, одновременно изучая, как использовать инструменты Foliage Tools в Unreal. К счастью, рабочий процесс оказался довольно интуитивно понятным, похожим на инструменты для лепки местности. Первый проход включал размещение травы, чтобы проверить общий вид. Как только я остался доволен, перешёл к добавлению деревьев, корректируя их расположение и поворот, чтобы создать естественный ритм в композиции.
Для второго прохода с травой я хотел больше разнообразия и менее «ухоженный» вид, особенно в районе за домом. Чтобы добиться этого, я решил углубиться в генерацию процедурного контента (PCG). В качестве отправной точки я воспользовался туториалом Pwnisher, а затем продолжил исследование, чтобы устранить неполадки и расширить то, что мне было нужно. PCG помогла мне добавить больше вариативности в распределение травы, придав заднему саду более дикое и нетронутое ощущение по сравнению с передним.
Я также использовал отдельный граф PCG для помощи в детализации ландшафта и логике распределения. На протяжении всего процесса я также продолжал вручную совершенствовать местность, лепить, корректировать и изменять её форму по мере развития планировки растительности.

Помимо стандартных деревьев и трав, я добавил шум и вариативность масштаба, а также смешал разные типы деревьев, чтобы имитировать переход к лесу на заднем плане. PCG оказывается мощным инструментом с большим творческим потенциалом, и я рад продолжить изучение его возможностей в будущих проектах.
Инструмент генератора кактусов HDA
Работая над окружением, я также начал разрабатывать генератор кактусов HDA. У справочного дома, с которым я работал, было два кактуса: один маленький у боковой стены и один большой, более знаковый, стоящий впереди. Они добавили очаровательный местный колорит сцене, и я подумал, что это будет отличной возможностью создать инструмент на основе этого.

Мне всегда нравилось сочетание технического и художественного мышления, поэтому я планировал создать как генератор кактусов, так и генератор плюща, используя алгоритм колонизации пространства, который является одним из моих любимых методов процедурного роста. Однако из-за нехватки времени я решил сосредоточиться только на кактусах в этом проекте.
Основная система представляет собой настройку с семенами и точками питания, где точки питания направляют рост кактуса органичным и контролируемым образом. Я выставил несколько параметров, чтобы напрямую управлять результатом, например, плотность разветвления, толщину, высоту, случайный шум и кривизну, чтобы конечный кактус мог сильно различаться по форме, сохраняя при этом согласованность стиля.



Я создал HDA с двумя входами для гибкости, а затем внёс его в Unreal Engine через Houdini Engine. Я разместил в сцене оба кактуса: один маленький, спрятанный сбоку от дома, и один большой, выступающий в качестве визуального акцента возле входа.

На этом этапе стоит отметить следующее для тех, кто пытается настроить нечто подобное: Unreal Engine 5.5 в настоящее время не поддерживает Houdini Engine. Существуют некоторые обходные пути, но я нашёл их ненадёжными или сложными в настройке. Поэтому вместо этого я сделал резервную копию и открыл свой проект в UE 5.4, где Houdini Engine работает правильно. Это позволило мне протестировать полный рабочий процесс HDA и продемонстрировать свой генератор внутри Unreal.
Houdini Engine заботится о масштабе и ориентации, поэтому нет необходимости вручную настраивать ассеты. Как только кактус будет сформирован так, как я хочу, используя выставленные параметры, я запекаю сетку непосредственно внутри Unreal, а затем начинаю снова с новыми параметрами, если это необходимо.
Нужно быть осторожным при изменении параметров после размещения актива, поскольку это может сбросить назначения материалов. Поэтому важно правильно настроить путь и имена материалов внутри Houdini. Я включу описание своих соглашений об именах материалов и структур папок (например, использование пути /Game внутри Content Browser), чтобы помочь другим избежать путаницы.
s@unreal_material = "Material'/Game/MM_Cactus.MM_Cactus'";
s@unreal_material = "Material'/Game/Trunk.Trunk'";

Текстурирование и листы обрезки
``````Для объектов дома я создал две настройки материалов: одну с тесселяцией для более высокой детализации, а другую без неё — для лучшей производительности. Поскольку я часто использую Substance 3D Painter в своих проектах и сейчас изучаю Substance 3D Designer, а также COPs в Houdini, я решил работать с повторяющимися текстурами для этой сцены. Это решение было частью плана с самого начала: хотя мне нравится процесс создания пользовательских материалов, в этом проекте я стремился добиться отполированного результата в установленные сроки.
Все UV-развёртки для моих пользовательских объектов были развёрнуты в Houdini. Поскольку я работал с модульными компонентами, я также увидел в этом прекрасную возможность погрузиться в рабочие процессы текстурирования на основе обрезных листов и атласов. Я начал с планирования раскладки обрезного листа в Photoshop, выделив области для таких элементов, как внешние стены, внутренняя штукатурка, деревянные оконные головки, ставни, мраморные отделки и другие детали фасада. Как только у меня появился макет, я смоделировал плоскую плоскость и импортировал её в Substance 3D Painter, чтобы замаскировать и раскрасить каждую область материала напрямую. Затем я экспортировал набор текстур, используя его в качестве ориентира для размещения UV.

В Houdini я протестировал текстуры на плоскости, используя назначенные материалы, а затем начал располагать UV-развёртку реальных объектов так, чтобы она точно соответствовала макету обрезного листа, который я определил. Этот шаг был выполнен вручную, но, работая над ним, я начал думать о разработке специального инструмента для точного размещения UV-оболочек в пространстве UDIM, что-то, что я хотел бы создать в качестве прототипа в будущем.

Я назначил материалы для каждого объекта (стены, ставни, стекло и т. д.) и внёс их в Unreal Engine в виде двух основных наборов материалов. В Unreal я создал экземпляры материалов с настраиваемыми параметрами, такими как яркость, контрастность и насыщенность. Я также настроил материал для покраски вершин ландшафта, чтобы смешивать разные текстуры грунта.

Чтобы нарушить однородность стен, я использовал декали и покраску вершин, добавляя такие штрихи, как мох в затенённых или сырых местах, вдохновлённый моими справочными изображениями. Эти дополнения помогли приблизить окружение к реальности и придали ему более изношенный, обжитой вид.


Во время этого процесса мне не хватало использования RGB-маскирования для введения большего разнообразия материалов в рамках одного шейдера. Сейчас я это понимаю лучше и планирую интегрировать в будущие проекты.
Финальная сцена
Как только основные элементы, такие как дом и дорожка, были размещены, я начал дорабатывать ландшафт и планировку, основываясь на композиции с моего основного ракурса камеры. Я потратил много времени, корректируя положение элементов окружающей среды, постоянно меняя планировку, чтобы добиться ощущения баланса и реализма.
Из-за аппаратных ограничений я работал в режиме Unlit большую часть проекта, что помогало с производительностью. Однако, когда пришло время завершать сцену, я переключился в режим Lit, чтобы точно настроить падение теней на доме и ландшафте, особенно чтобы соответствовать мягкому тёплому освещению на моих референсах.
Я добавил небольшие предметы, основываясь на том, что нужно было для ощущения обитаемости: подсвечник у окон от пола до потолка, лопату и садовый шланг, чтобы намекнуть на недавнюю садоводческую деятельность, и слегка повёрнутые ставни для визуального разнообразия. Я также разместил цветочные горшки и отрегулировал плотность травы в заднем саду, отдавая предпочтение большему количеству зелени и меньшему количеству каменных элементов, как показано на референсах.
Чтобы завершить иллюзию реального местоположения, я подправил задний дом, добавил двойные металлические садовые ворота и усовершенствовал линию деревьев на заднем плане, пока вся сцена не стала цельной и обоснованной.

Освещение
Моя цель освещения состояла в том, чтобы создать уютную, тёплую атмосферу, которая была бы одновременно привлекательной и естественной. Я использовал систему Lumen в Unreal со слегка оранжевым направленным светом для имитации солнечного света позднего дня. Были включены контактные тени и высококачественные настройки теней для повышения реализма, особенно там, где деревья и архитектура взаимодействуют.

Некоторые части дома казались слишком тёмными, несмотря на настройку параметров отражения света, поэтому я добавил прямоугольные светильники на затенённую сторону, чтобы выявить больше деталей и сбалансировать экспозицию. Для контроля глобального освещения и настройки окончательного цветового тона использовался Post Process Volume, чтобы всё выглядело гармонично.
``````Настройки рендеринга и пост-продакшна
Для финальных рендеров я использовал систему Cine Camera Rig Rail в сочетании с настройкой цифровой кинокамеры 16:9 в Unreal Engine. Я вручную настроил фокус с помощью опции Draw Debug Focus Plane, чтобы обеспечить точную глубину резкости. В дополнение к основному трекинговому кадру я разместил три дополнительные камеры вокруг сцены в немного разных положениях и под разными углами, чтобы случайно проверить композицию и освещение с альтернативных точек зрения.

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

Чтобы ещё больше усилить настроение, я использовал системы частиц Niagara с падающими листьями, чтобы придать сцене лёгкость и анимированность. Одним из технических препятствий во время рендеринга было обеспечение активности эффектов ветра на растительности во время последовательностей. Чтобы решить эту проблему, я использовал Level Visibility Actors и тщательно управлял таймингом анимации внутри Level Sequencer. Это позволило мне включать и выключать видимость определённых уровней или объектов и обеспечивать правильное срабатывание эффектов ветра при рендеринге.

Заключение
На выполнение этого проекта ушло примерно два месяца, и это был невероятно богатый опыт обучения. В качестве ориентира я использовал красивый бассейн, но решил не включать его, чтобы сохранить управляемость проекта и сосредоточиться.
Одной из самых больших проблем, с которыми я столкнулся, было создание и планирование модульных элементов и текстур. Поскольку я менял материалы в середине проекта, мне пришлось несколько раз переработать некоторые размеры и макеты UV. Это научило меня важности раннего планирования, особенно когда дело касается модульности и укладки текстур. Определение этих решений в начале может сэкономить много времени и избавить от головной боли в дальнейшем.
Оптимизация была ещё одним серьёзным препятствием. Когда я добавлял высококачественную листву и ассеты из Fab, я заметил, что некоторые из них появлялись в низком разрешении во время рендеринга. Мне пришлось вручную заменять их версиями среднего качества, чтобы сохранить визуальную точность без ущерба для производительности. Баланс плотности, качества ассетов и освещения при изучении Unreal Engine с нуля был настоящим испытанием, но в конечном итоге оно того стоило.
Одной из постоянных проблем была настройка симуляции ветра на растительности. Несмотря на то, что я перепробовал бесчисленное количество руководств и постов на форумах, мои деревья и растения изначально почти не двигались в финальных рендерах. После тщательной отладки, проверки настроек материалов, настроек World Position Offset и добавления триггеров видимости в Level Sequencer я наконец-то добился желаемого результата. Этот опыт напомнил мне, что глубокие технические проблемы часто требуют настойчивости и экспериментов.
Для начинающих художников: выбирайте чистые, хорошо структурированные справочные изображения с чётко читаемыми формами и простыми композициями. Модульное планирование и стратегия укладки должны быть в приоритете, прежде чем приступать к созданию ассетов. Будьте готовы к итерациям; это совершенно нормально — возвращаться назад и вперёд несколько раз. Многие вещи не будут работать с первой попытки, и это нормально. Главное — сохранять любопытство и продолжать тестировать.
Не поддавайтесь соблазну использовать ярлыки, которые оторвут вас от конечного результата. Вместо этого инвестируйте в высококачественные учебные пособия с чёткими, структурированными инструкциями. Следование одному или двум полным рабочим процессам для создания среды от начала до конца может помочь вам понять общую картину, одновременно изучая конкретные техники. Для этого проекта я внимательно следил за курсом Николя Букко «Learn Environment Art for 3D Video Games», а также за бесчисленными дополнительными учебными пособиями на YouTube. И всегда старайтесь просить обратную связь. Если что-то не так, всегда возвращайтесь к этому и исправляйте, пока не почувствуете удовлетворения.
В конце концов, я горжусь тем, чего добился с проектом «Итальянская глубинка», и рад продолжать учиться, создавать и делиться новыми идеями в будущем. Увидимся в следующем.
Гёкан Джанитёз, 3D-артист
Интервью проведено Глорией Левин
```Автор: Gokhan Canıtez
Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.