[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-549065259", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&puid32=&fmt=1&pr=" } } ]
{ "author_name": "Дмитрий Мучкин", "author_type": "self", "tags": ["\u0433\u0440\u0430\u0444\u0438\u043a\u0430"], "comments": 3, "likes": 27, "favorites": 6, "is_advertisement": false, "section_name": "gamedev", "id": "9133" }
Дмитрий Мучкин
2 037
Gamedev

Создание текстуры дерева для Unreal Engine 4

Художник из Ubisoft Sofia рассказывает о своём проекте «Кабинет Дамблдора».

Поделиться

В избранное

В избранном

Главный художник Ubisoft Sofia Огнян Захариев (Ognyan Zahariev) написал для сайта quixel.se туториал, в котором рассказал о работе над своим проектом «Кабинет Дамблдора» (Dumbledore's office) — в частности, о создании текстуры старого дерева.

DTF публикует перевод материала.

Меня зовут Огнян Захариев (Ognyan Zahariev), я главный художник в Ubisoft Sofia. В этом материале я расскажу, как создавались текстуры для моего проекта «Кабинет Дамблдора» с помощью Quixel Suite.

Целью проекта было воссоздание кабинета профессора Дамблдора из произведений о Гарри Поттере. Большую часть информации я почерпнул из фильмов, но также пользовался описаниями из книг. Разумеется, я добавил много своих элементов.

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

Мой подход к текстурированию объектов почти никогда не меняется.

  • обозначить масштаб, импортировав заготовку в Unreal;

  • создать высокополигональную модель и обработать её в ZBrush, если необходимо;

  • ретопологизировать (retopologize) в Topogun;

  • сделать оптимальную развёртку, используя одно и то же пространство текстуры (texture space) там, где это возможно;

  • запечь карту нормалей и ambient occlusion;

  • распознать ID материалов и запечь или нарисовать карту ID.

В случае со шкафом я использовал модульный подход, так как он появляется в одной комнате 10 раз. Он довольно большой, так что важно распределять пространство текстуры с умом. Для полок и стенок шкафа не нужны уникальные текстуры.

Я расположил модули так, чтобы их было легче текстурировать, и импортировал их в DDO. Следующим шагом было загрузить запечённую карту нормалей, ambient occlusion и карту ID. Я выбрал пресет UE4 RMA, потому что это отличный способ сэкономить память в Unreal.

Я начал текстурировать, рассматривая поверхности, обозначенные заранее, и размышляя, сколько вариантов мне понадобится, учитывая, где находится объект и как давно он там стоит. На старом дереве часто появляются тёмные пятна из-за грязи и влаги, но также на нём можно найти и более светлые участки — где поверхность истёрлась.

Есть также окрашенные поверхности (золотая краска), более блестящие по сравнению с остальным покрытием. Помимо этого, кое-где собирается пыль. Все эти аспекты вместе рассказывают историю объекта.

Материал дерева

Я выбрал пресет дерева, подходящий для такого шкафа.

Я создал копию основного слоя и изменил значения альбедо и шероховатости (roughness), чтобы получить тёмные участки. Я использовал Dynamask с пресетом песка как основу для этого слоя. Очень важно рисовать от руки, когда применяешь Dynamask, чтобы результат выглядел естественно. На тёмных участках яркость текстур понижена, так что они выглядят так, будто залиты одним цветом.

Я сделал то же самое с более светлыми участками, на которых дерево истёрлось. Они должны находиться в логичных местах, таких, как края, которыми они могли соприкасаться с другими объектами. Пресет Dynamask под названием Light Edges хорошо подходит в качестве основы для этого эффекта.

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

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

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

Я постоянно проверяю результаты в Unreal. Я использую Quixel DDO, чтобы обновить текстуры, добавленные в движок, так что на это уходит всего пара кликов. Эта привычка помогает сэкономить время. Текстуры нужно обрабатывать в зависимости от света и наоборот. Частая ошибка — делать альбедо настолько тёмным, что свет отражается неправильно. Стоит проверять всю сцену в альбедо, чтобы сохранялся баланс между разными элементами.

Совет по использованию полного потенциала DDO

Я часто использую материалы, не очень подходящие для поверхности объекта. Хороший пример — статуэтка дракона, которой не хватало деталей на чешуе. Я не хотел добавлять их в ZBrush, когда можно было сгенерировать их в NDO или наложить карту нормалей в DDO, что я в итоге и сделал. Материал Rough bronze хорошо подошёл, я замаскировал складки с помощью пресета Rich occlusion в Dynamask и вручную нарисовал остальное, придав чешуе более выраженный и органичный вид.

Я снизил значения альбедо, шероховатости и металлической непрозрачности (metallic opacity) до нуля и оставил только карту нормалей. Также я дал ей зайти за пределы чешуи, чтобы добавить неровностей поверхности — так я подчеркнул её рукотворность.

Тайлинг текстур

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

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

Для первой текстуры я соединил материалы бетона и камня в DDO, что дало мне относительно гладкую поверхность с хорошей вариативностью.

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

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

После экспорта двух наборов текстур с помощью пресета RMA я настроил стандартный шейдер для блендинга цвета вершин (vertex color blending shader) в Unreal.

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

Общие советы

Семь раз отмерь, один раз отрежь — заготовка с объектами и разными элементами окружения поможет вам сэкономить время и силы в будущем.

Постоянно проверяйте, как ваши текстуры ведут себя на движке. 3DO отлично подходит для текстурирования и работы над одиночными объектами, но вы можете удивиться, увидев свою работу на движке — там другое освещение, отражения и всё в таком роде.

Всегда старайтесь рассказать историю с помощью своих текстур. Думайте над тем, в каком окружении они находятся, как на них влияют другие объекты и так далее.

#графика

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

0 новых

Популярные

По порядку

Прямой эфир

Узнавайте первым важные новости

Подписаться