Gamedev Андрей Верещагин
2 705

Разрушение симметрии: создание сцены на Unreal Engine 4

Опыт разработчика Castlevania: Lords of Shadow.

В закладки

3D-художник Родриго Ллоре (Rodrigo Lloret) работает в студии Massive Entertainment, участвовавшей в создании Far Cry 3 и Tom Clancy's The Division. Прежде он был сотрудником MercurySteam, разработавшей серию Castlevania: Lords of Shadow.

Ллоре рассказал порталу 80.lv о создании сцены заброшенного дома, над которой он работал, чтобы улучшить свои навыки в Unreal Engine 4. С разрешения главного редактора 80.lv Кирилла Токарева DTF публикует перевод материала «How to Find Good Lighting For Realistic Interiors?».

Я хотел углубиться в Unreal Engine, узнать о нём больше, поиграть с освещением и цветами. На Pinterest я нашёл референс и решил воссоздать его на движке, но в этот раз мне не хотелось фокусироваться на каждой текстуре или элементе сцены. Я стремился передать ощущение от сцены в целом.

Кроме того, я поставил себе задачу сделать все тайлы в Substance Designer, потому что никогда раньше не занимался созданием текстур в этой программе.

Можно заметить, что композиция главного референса симметрична. Симметрия сама по себе достаточно скучна, поэтому я решил разрушить её осколками, предметами и освещением.

Когда были готовы стены, дверные проёмы и лестница, я стал искать правильную перспективу с помощью камеры в Maya. После этого я добавил в сцену больше деталей вроде ковра или окна.

Сама сцена небольшая, и я хотел просто сделать несколько её «снимков», поэтому мне не надо было работать с модульными элементами. Я решил создать её с помощью крупных мешей, но нужно было держать в уме материалы и лайтмапы.

Элементы, разрушающие симметрию

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

Блокаут, главные меши и меши, разделённые по материалам и лайтмапам (белым обозначены меши, помещённые в UE)

Элементы и разбрасывание мусора

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

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

Распределение для осколков ваз, бутылок и тарелок

Мусор на сцену я помещал вручную, стараясь сохранить естественность. Так, некоторые маленькие осколки находятся под крупными, и мусор собирается в кучки в основном у стен.

Мусор в UE

Лоза с несколькими ветками была создана с использованием трёхмерных и двумерных листьев. Сухую листву я взял из своего старого проекта.

Некоторые спрашивали меня, как я сделал ковровую дорожку на лестнице. Первую модель я создал с помощью симуляции тканей в Maya, но вместо типичной треугольной сетки я использовал квадратную — так легче менять и настраивать объект после завершения симуляции.

Материалы и текстуры

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

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

Шероховатости

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

Для ковра я использовал три варианта текстур: просто старый ковёр, ковёр с пятнами и грязью и мокрый ковёр, созданный с помощью шейдера в UE.

Освещение

Я изучил форумы, посвящённые Unreal Engine, чтобы найти способ добиться реалистичного освещения. Там я обнаружил кое-что, с чем смог поиграть. Речь идёт об огромных панелях, которые отражают свет. Нечто подобное используется при съёмках фильмов или в фото студиях. Эти панели — ключевой элемент освещения, потому что они распределяют свет по сцене. Однако при их использовании время обсчёта освещения сильно возрастает.

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

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

#опыт #арт

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Андрей Верещагин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442","\u0430\u0440\u0442"], "comments": 5, "likes": 37, "favorites": 36, "is_advertisement": false, "subsite_label": "gamedev", "id": 16055, "is_wide": true, "is_ugc": false, "date": "Wed, 14 Feb 2018 18:23:27 +0300" }
{ "id": 16055, "author_id": 22254, "diff_limit": 1000, "urls": {"diff":"\/comments\/16055\/get","add":"\/comments\/16055\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/16055"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "possessions": [] }

5 комментариев 5 комм.

Популярные

По порядку

9

Спасибо, что я вновь смог почувствовать себя говном, смотря на это!

Ответить
0

Не "Блэкаут", а "Блокаут", даже в оригинале написано Block-out.
В крайнем случае русский аналог - блокинг. Это процесс когда сцену создают в блочном варианте, чтобы оценить объёмы и общую компоновку.

Ответить
1

Поправил. Автозамена сработала.

Ответить
0

Так а где финальный рендер?
Мусор размазан слишком равномерно, из-за этого есть ощущение декораций

Ответить
0

Первая скрин) Интересная идея с рассеивателями света

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "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" ], "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" ], "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": "createAdaptive", "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-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
EA анонсировала DLC для DLC
для аддона для спин-оффа
Подписаться на push-уведомления