Environment modeling: от поиска концепций до подготовки к импорту в Unity

Максим Кабат, 3D Art Team Lead студии Plarium Kharkiv, рассказал о моделировании основных зданий для игры Soldiers Inc: Mobile Warfare.


Какая задача изначально стояла перед тобой?

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

Сеттинг игры можно условно назвать «милитари будущего». Действия в игре происходят лет на 30–40 позже настоящего, но это еще не футуристический sci-fi. Как оказалось, передать атмосферу промежуточного этапа не так уж просто.

Какие были сложности при поиске концепции?

Когда мы начали сбор референсов, сразу же столкнулись с проблемой – подходящих примеров практически не было. Легко найти референсы для распространенных сеттингов, таких как фэнтези, средневековье, чистый sci-fi, потому что уже выпущено много фильмов и игр.

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

Ты сам работал над концепцией?

Нет. Первые скетчи создал Concept Artist Александр Дударь – спасибо ему большое. Он использовал максимально простые, лаконичные и технологичные формы:

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

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

Расскажи о процессе поиска идей.

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

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

Потом выбрал 1–2 наиболее удачных блока-концепта и тестировал цветовую гамму. Обычно я использую не больше 3 цветов – здесь это серый, стандартный для сеттинга, хаки и голубой или оранжевый для отдельных элементов. На этом этапе создается также «плановость» домика. Я использую 2–3 градации одного цвета, чтобы выставить на передний план или приглушить определенные части здания.

Естественно, концепт в цвете и финальный результат немного отличаются. В дизайн модели могут вноситься изменения вплоть до финального рендера.

Сколько времени уходит на создание концепта?

Иногда на поиск идеи уходит немного времени. Так, например, получилось со складом:

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

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

Если проследить этапы разработки (слева направо, сверху вниз), можно воспроизвести ход мыслей. Сначала я отталкивался от идеи, что любой госпиталь – набор контейнеров, соединенных переходами. Долго развивал эту тему, но ничего не получалось, пока не выделил главный элемент – большую восьмиугольную крышу. Вышло более адекватно, и я начал развивать этот элемент.

Какие еще есть нюансы при разработке концептов?

Если в проекте предусмотрена анимация, важно учитывать это еще на этапе создания концепта. Классно, когда в анимации участвует 30–40 % геометрии строения.

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

Ну и конечно, по внешнему виду здания должно быть понятно, какую функцию оно выполняет.

Теперь перейдем к моделингу. В чем ты работаешь и какие инструменты используешь?

Я использую стандартные инструменты Maya типа Insert Loop, Extrude, Bevel и Chamfer. Никаких хитростей. Выбираю 1–2 формы из концептов и для начала создаю high-poly модель.

Я стараюсь, чтобы все было максимально замоделено. Ниже можно рассмотреть, какие детали – геометрия, а какие – текстуры.

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

На моделинг уходит полтора-два дня. На этапе создания high-poly моделей я не ограничиваю себя ни в количестве полигонов, ни в количестве и размерах текстур. Главное – добиться красивой картинки. Такой подход, возможно, требует больше времени, но в итоге концепт получается более качественным, чем если бы мы с самого начала были ограничены какими-либо техническими требованиями.

О том, как оптимизировать полученную модель под Unity, мы будем думать уже при создании low-poly модели.

Расскажи об этапе текстурирования.

Для текстурирования я использую редактор материалов в Maya и обычные материалы V-Ray. Здесь тоже нет ничего хитрого, только пара уловок. Например, я никогда не разворачиваю уникально всю геометрию домика – только некоторые его части. Такой подход также позволяет развивать и улучшать концепт по ходу текстурирования. Можно продолжать редактировать формы объектов, переставлять их местами, добавлять или убирать детали.

Например, я создаю универсальный материал, с помощью которого могу затекстурить около 40 % домика:

1 этап – рендерю обычный серый V-Ray материал.

2 этап – добавляю к нему Ambient Occlusion с помощью V-Ray Dirt map. Эта карта создает затемнения на местах стыков объектов.

3 этап – поверх затемняющего V-Ray Dirt накладывается такой же Dirt, но с инверсией.

4 этап – добавляю градиент путем его проекции на всю геометрию (внизу – темнее). Объект зрительно вырастает. Так можно добавить ему еще объема.

5 этап – смешиваю то, что получилось, с тайловой текстурой через Multiply.

6 этап – добавляю свойство материала. Например, если это металл и нужен блик, мы добавляем такую же текстуру, как и Diffuse, только обесцвечиваем ее, накручиваем контраст и добавляем эти 2 текстуры как Specular и Bump к основному материалу. В итоге получаем фактуру и блик.

Развертка делается автоматически и подстраивается под тайл-текстуры стены.

Далее рендер и конвертация high-poly в low-poly модель?

Да. Рендер проходит в Maya – всё стандартно, без хитростей. Так как это Outside рендер, для освещения хорошо подходит V-Ray Sun. Иногда я использую подсвечивание Ambient. Когда мне нужен акцент на отдельных элементах, я использую дополнительные источники освещения, например как для подсветки квадрокоптера.

После рендера high-poly модели делаю ее точную копию, только low-poly – просто поверх нее выстраиваю новую модель обычными полигонами. Потом мы будем запекать high-poly рендер на подготовленную low-poly модель.

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

Потом я создаю UV-разверткуlow-poly геометрии для запекания. После чего в той же сцене, где рендерили high-poly модель, выделяем элемент low-poly и запекаем с помощью функции V-Ray Bake с галочкой Projection Baking. Так по очереди запекаются все элементы домика.

Ты всегда начинаешь с high-poly моделирования?

Да. Это удобный способ получить low-poly модель с high-poly детализацией. При этом у меня большая свобода на уровне моделирования и текстурирования. Да и моделировать мелкие элементы сразу в low-poly, мягко говоря, не очень удобно.

А как проходит процесс развертки и запекания? Есть ли свои уловки?

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

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

Неважно, как выглядит наша развертка – повторюсь, это черновой вариант.

На этом примере я развернул только 2 элемента забора, из которых был собран весь ряд целиком. Как видно, текстура очень черновая с большими расстояниями между UV shells. Еще один пример черновой развертки:

На следующем этапе я собираю из кусочков целостный домик, убираю дырки, дублирую повторяющиеся объекты. Делаю чистовую UV-развертку, подгоняю, чтобы не было больших зазоров между элементами и текстурная развертка была заполнена максимально плотно. Далее через стандартный Transfer Maps переношу текстуры с черновой ювишки на чистовую.

В итоге получается собранная полностью low-poly модель с максимально точной ювишкой, без ошибок, дырок и пробелов.

Это финальный вид домиков – собранная low-poly с чистовыми запеченными текстурными картами. Нет никаких пробелов на развертке между элементами – всё оптимально подогнано, и low-poly геометрия аккуратно собрана.

В таком виде ты передаешь модели для добавления в игру?

Не совсем. Мы используем Unity, поэтому нужно учитывать некоторые ограничения по количеству прорисовок геометрии на экране телефона. Есть понятие draw call, если не ошибаюсь. Если говорить упрощенно, все объекты на экране телефона, на которых назначен один материал, могут быть прорисованы за один draw call. Количество draw calls ограничено, поэтому мы стараемся делать их как можно меньше. Таким образом, нужно обязательно собрать все текстуры на 1 текстурный атлас.

Так это выглядит на экране телефона:

Спасибо за внимание!

Портфолио: https://www.artstation.com/artist/maksimkabat


733 0 850 22
12
2017-02-02
Респект таким парням!
2017-02-02
Модельки огонь! Спасибо за статью.
2017-02-03
Вот это материал, еще даже в соц.сети не давали, а уже более 700 просмотров и это только за вечер-ночь! 
2017-02-03
Хорошо рассказал. Так сколько всё таки времени уходит на создание одного объекта? начиная с концепта.. в случае если один человек всё выполняет и если работает команда. Хочется влиться в игровую индустрию, а для этого надо реально оценивать свои возможности, поэтому интересен процесс и время. Например, в архитектуре заказчики всегда хотят получать результат "вчера".
2017-02-03
Обычно, если все сложилось хорошо, и с концептом не было особых проблем, то одна модель делается от одной до двух недель одним человеком. 
2017-02-03
Прости за глупый вопрос, но как придал разные цвета к элементам моделей? Как сделать равномерный по цвету задний фон без освещения, при этом с освещением самой модели? Пытаюсь что-то подобное повторить, но сцена выходит слишком яркой и с сильным отражением света. Или ты вырезал каждый объект и обрабатывал в фотошопе с отдельным фоном?
2017-02-07
А вот ещё вопрос меня заинтересовал.. Получается что вы в high-poly моделите даже разметку (всякие полоски цветные, цифры на зданиях) не проще ли их нарисовать в фотошопе на развёртке? Или тут есть какой-то фокус?
2017-02-10
Да, можно и в фотошопе. Кому как удобнее. Лично мне удобнее переставить плейник с альфа каналом, прямо в 3д пакете. Иногда что-бы найти удачное расположение цифр и полосочек приходится передвигать их по 5-10 раз, пробовать в разных местах, так сказать. Поэтому лично мне не совсем удобно прыгать из 3д в 2д и обратно. [quote=Jet_Z_278] А вот ещё вопрос меня заинтересовал.. Получается что вы в high-poly моделите даже разметку (всякие полоски цветные, цифры на зданиях) не проще ли их нарисовать в фотошопе на развёртке? Или тут есть какой-то фокус? [/quote]
2017-02-15
Кстати, а как ты разворачиваешь отдельно элементы? отделяешь от основного объекта?
2017-02-22
Привет, Максим. Очень позновательная и интересная статья получилась, спасибо)) Есть небольшой вопрос по моделькам.Подскажи пожалуйста, в своей работе вы используете дополнительные карты типа Нормал и АО. Или для игры достаточно качественной Дифузки?
2017-03-10
очень интересно и познавательно!  спасибо!  хотелось бы ещё увидеть статью, как вы делаете основной энвайромент (базу, скалы), как декальки добавляете и как настраиваете в unity :) или если есть линк на похожие статьи - был бы очень благодарен)
2018-04-08
Очень интересно и познавательно! Спасибо!
RENDER.RU