Gamedev Андрей Верещагин
4 945

Создание открытых пространств и растительности в Unreal Engine 4

Рисовые поля и детализация деревьев.

В закладки

Художник по окружению из Ubisoft Руди Ламотт (Rudy Lamotte) рассказал сайту 80.lv о создании открытого пространства и растительности в Unreal Engine 4. С разрешения главного редактора портала Кирилла Токарева мы публикуем главное из материала.

По словам Ламотта, вдохновение для создания окружения он черпает как из реального мира, так и из игр. В этом конкретном случае его вдохновила Ghost of Tsushima, поэтому он решил попробовать сделать открытое пространство на Unreal Engine 4, хоть и знал, что столкнётся с некоторыми трудностями. Для референсов Ламотт искал в Google фотографии рисовых полей в Японии.

Обычно при работе над окружением художник использует world machine, но в этот ландшафт был создан при помощи сайта Terrain Party. С него Ламотт взял спутниковые данные рисовых полей у города Тиба. Поверх карты из Google он наложил маску, созданную в Photoshop. Рисовые поля были помещены с помощью Houdini. Затем художник импортировал карты высот в Unreal Engine 4.

Растительность

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

Конечно, должны быть очевидные исключения в виде деревьев, которые не так густы, как остальные. У Ламотта было три разных типа крон и стволов. Их комбинаций вполне хватило. Всё зависит от проекта и того, как вы хотите, чтобы он выглядело в итоге. Кроме того, можно сделать динамические формы деревьев, как на правом изображении.

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

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

В зависимости от того, над какой игрой вы работаете, вам нужно найти баланс и сделать особо детальными те места, куда будет смотреть игрок.

Уровень детализации в деревьях Ламотта не превышает 10 тысяч. Однако если нужно выделить какие-то из них, то LOD можно и поднять, но надо помнить, что в большинстве случаев, чем меньше — тем лучше.

Для lod0 деревья Ламотта имеют 9995 tris, а для lod1 он делит это число на два и так далее. Замаскировать низкий уровень детализации деревьев вдалеке можно с помощью листвы. Таким образом, сохраняется объём крон. В противном случае, некоторые деревья будут иметь исчезающие ветки и дыры в кронах.

Вот так выглядит подменю LOD для листвы. Здесь вы можете снижать количество листвы вместе с уменьшением уровня детализации. Size Scale позволяет увеличивать размер оставшихся листьев, благодаря чему сохраняется объём крон. В строке Keep вы можете указать, сколько листьев должно остаться.

Текстурирование

В зависимости от того, какое дерево вы создаёте, вам нужно найти текстуры для листьев. Вы можете либо использовать фотографии, либо создать собственные с помощью 3ds Max, ZBrush или любой другой программы. Экспортируйте созданный высокополигональный меш в SpeedTree и распространите на несколько веток. На основе полученного результата нужно создать атлас, а затем сделать из него низкополигональный меш с помощью любого 3D-редактора.

Постпобработка

Для побочной растительности вроде травы вы можете задать дистанцию, на которой она пропадает. В режиме Foliage в Unreal Engine 4 вам нужно щёлкнуть на статичный меш, который вы разместили, чтобы открыть подменю Instance Setting.

Тени отключены при LOD ½ потому что это снижает производительность

Ламотт использует направленный свет и skylight. Кроме того, на сцене присутствуют Height fog и Atmospheric fog. Для небесного света можно включить HDRI для более реалистичного освещения.

#опыт #арт

{ "author_name": "Андрей Верещагин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442","\u0430\u0440\u0442"], "comments": 16, "likes": 59, "favorites": 77, "is_advertisement": false, "subsite_label": "gamedev", "id": 21853, "is_wide": true, "is_ugc": false, "date": "Sat, 23 Jun 2018 20:08:28 +0300" }
{ "id": 21853, "author_id": 22254, "diff_limit": 1000, "urls": {"diff":"\/comments\/21853\/get","add":"\/comments\/21853\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/21853"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954 }

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

Популярные

По порядку

Написать комментарий...
16

А такое есть на ваших рисовых полях?!

Ответить
10

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

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

В Unity из коробки есть продвинутый редактор деревьев который позволяет генерировать уникальные деревья с возможностью тонкой настройки. Можно создать свое дерево буквально до листочка. Это позволяет избежать одинаковых копий растительности. По поводу UE не скажу, не работал с ним, наверняка и там есть что-то подобное.

Ответить
–7

Меня настораживает такой контент.

Геймдев на DTF рискует стать сборником переводов нескольких профильных сайтов.

Контент сам по себе классный - это бесспорно.

Нос вот все эти переводы ИМХО для не самых далеких людей, которые в 2018 (!) в англ не смогли.

Ответить
8

Геймдев на DTF после перепокупки изначально был сборником переводов нескольких профильных сайтов.

fixed

Ответить
–3

Зачем знать англ в 2к18, когда есть переводчик?

Ответить
6

потому что это главный язык программирования

Ответить
0

Это, судя по всему, была отсылка к "Недоросли" - зачем, мол, географию учить, когда извозчик и так довезет.

Ответить
0

зачем, если есть #define?
#define protected защищенный
#define override переопределенный

Ответить
2

Ну да, наверно на территории СНГ куча разнообразных разработчиков игр, от инди до ААА, которые писали бы ориджинал контент на DTF. На пальцах одной руки можно пересчитать статьи от инди-разрабов, чьи игры стали популярными, однако под ними обязательно найдутся те, кто обосрут. Тут проблема не только в англ, а еще и в геймдев

Ответить
0

Вас и без меня заминусят ._.

Ответить
0

Что-то различные дизайнеры из топовых студий зачастили в последнее время именно на UE4 отличные демки показывать. Совпадение?

Ответить
13

А на чем им показывать, на закрытих движках для внутреннего использования?

Ответить
2

потому что у UE4 отличная система освещения и постэффектов.

Ответить
1

Странно что не написали что последний LOD должен быть билбордом, ну да ладно.

Ответить
0

Очень интересный материал, большое спасибо.

Ответить
0

Есть вариант для ленивых Twinmotion, он конечно для архитектуры, но и в природу вполне может. Страница проги заблочена роскомпозором .

Ответить

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" } } } ]
Новая игра Ubisoft на релизе выглядит
точно так же, как и на E3
Подписаться на push-уведомления