Двери Нео-Триеста

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

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

И, спустя некоторое время, я решил одну из дверей переосмыслить в полюбившейся мне киберпанк-стилистике. Основным источником вдохновения (помимо, собственно, двери) стала игра Remember Me. Мне очень нравилась сочетание классических массивов и техногенных деталей. Собственно, я уже выполнял фан-арт несколькими годами ранее и сейчас решил повторить, уже с новыми знаниями и умениями.

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

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

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

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

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

На этом же этапе я наметил, какие элементы и как я буду делать.

Получив примерное представление о том, что будет в итоге, я по-быстрому накидал основные массы в 3D редакторе. В моем случае это - Maya.

Первым элементом, который я решил сделать, должно было стать деревянное полотно. И метод, который я выбрал - тримы. Тримы, если кто не в курсе, это такие тайловые материалы, где текстуры затайлены только в одном направлении, обычно - по горизонтали. Если посмотреть на дверь, то легко представить ее как набор полосок разной длины. Что я собственно и сделал на этапе блокинга.

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

На этом же этапе, я уточнил размеры, в зависимости от размера тексела. Тут я особо не мудрствовал и установил стандартное соотношение 1024 пикселей на метр. Другими словами: сторона текстуры в 1024 пикселей соответствует метру реального размера. Поскольку я планировал использовать x2048 текстуры, а дверь предполагалась примерно двухметровой, то получилось удобно: размеры почти всех объектов хорошо ложились в стандартный UV-квадрат .

Сам материал для тримов я сделал в Substance Designer. Сразу оговорюсь: относительно этой программы я, что называется, все еще нахожусь в процессе въезжания. Так что постараюсь особо не умничать на эту тему. И, пользуясь случаем, хочу в очередной раз пожалеть, что в открытом доступе нет презентации-туториала, которую сделали мои талантливые коллеги по Sperasoft: Алексей Бузин и Семен Аргентов. Очень хорошее и познавательное видео, которое доступно только сотрудникам вышеупомянутой компании. Я, вот, сотрудником являюсь и мне оно доступно.

Ок, в сторону сантименты. Вот стандартная лапша из нодов SD, которая частенько отпугивает новичков (меня отпугивает). Но если присмотреться, то заметно, что каждая область не такая и сложная. К примеру на создание характерных деревянных волокон ушло с пяток нодов, половина из которых используется по несколько раз.

Такая простота стала следствием не только недостаточного опыта, но и еще одного важного фактора. Как любит говорить наш лид-артист Сережа Чабров, всегда нужно думать о конечном результате. А им, обычно, служит игровой уровень (для художников окружения, само-собой). То есть, это не красивая картинка в Marmoset, а то что будет видеть игрок. А в случае с дверью, игрок обычно не обращает и даже не имеет возможность обратить внимание на все те замечательные микро-пылинки, которые выдрачивают художники по материалам.

При всем моем безграничном уважении к этой нелегкой профессии, конечно. Ребята - вы потрясающие.

Возвращаемся к моим тримам. Поскольку у меня нет компетенций обучать тонкостям SD, обращу внимание на пару моментов. Во-первых, необходимость хотя бы минимального структурирования. Даже если делаете "для себя" и граф в Дизайнере больше никто не увидит. Работа даже над одним пропсом (как в моем случае), запросто может растянуться надолго. И когда, через месяц-другой, вам понадобится залезть и что-то подправить (а понадобится обязательно), то даже в своем графе бывает непросто разобраться, когда в нем нет порядка.

Второй момент - планирование. Хорошая привычка - прикидывать как ляжет на модели будущий материал. Даже на ранних этапах. К примеру, я довольно поздно выяснил, что рельеф на декоративном элементе "переползает" через выгнутую часть. Помните, что я говорил про тримы с рельефом?

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

Классический - он на то и классический, что о нем все все знают. А если и не знают, то всевозможные уроки разной степени сложности гуглятся на раз.

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

Еще один момент, на который нужно обратить внимание - это элементы, которые будут запекаться на одну плоскость. Всегда нужно тщательно проверять, как они смотрятся в соответствующей проекции. Регулярный косяк - когда, будучи спроецированы на плоскость элементы теряются или становятся почти незаметными. Правило тут простое: все что будет запекаться таким образом, должно иметь фаски. Чем жирней эти фаски будут - тем лучше. Перебрать тут почти невозможно. По моему опыту, обратные случае встречались в разы чаще.

При работе над материалом (работал я, кстати в Substance Painter) нужно обращать внимание на однородные поверхности. Большой ошибкой будет закрашивать их одним цветом. Тут нам помогут референсы. Я, кстати, не большой поклонник собирания сразу всей библиотеки картинок, которые, возможно понадобятся в будущем. Вместо этого я предпочитаю собирать по чуть-чуть по мере необходимости. Но тут уж как кому удобней. Я видел немало крутых художников, которые поступают по-другому.

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

Еще важный момент, про который часто забывают - карта Roughness/Gloss. Я про нее напишу потом.

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

Для этого элемента я использовал полноценный затайленный материал (т.е., тайлинг и по горизонтали и по вертикали, в отличии от тримов). Из тонкостей такого подхода стоит отметить работу с гранями. Поскольку у нас теперь нет нормалей, чтобы их отбивать, закругления приходится делать геометрией.

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

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

Обработка граней для придания им необходимого скругления (строго острые углы в природе встречаются редко) выглядит примерно так:

Кстати, должен упомянуть еще об одной частой практике, которую я не использовал в этом пропсе: блендинг материалов. Если коротко - это методика смешивания нескольких материалов на одном меше. Смешивание происходит через задания весов каждой из вершин объекта. Процесс этого задания называется вертекс пеинт (vertex paint).

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

Суммируя: за сеткой следить, конечно, стоит, но без лишнего фанатизма.

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

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

Отдельно стоит упомянуть карты Roughness/Gloss. Это очень важный момент, который не стоит упускать. Особенно, если речь идет про такой комплексный пропс, как мой. Во-первых, нужно подчеркнуть разные материалы, с разной отражающей способностью. Во-вторых, контрастные и разнообразные блики придают живости объектам. Тем более, что речь идет об объектах под открытым небом, которые по-любому будут по разному подвергаться всяким внешним воздействиям, от природных явлений до антропогенных факторов, в виде вандалов с бычками.

В-третьих, не забываем что речь идет об игровом пропсе. Это означает, что на практике на объект будут смотреть с разных углов, да еще и под разным освещением (например, если в игре есть динамическая смена времени суток). Грех не пользоваться этими обстоятельствами.

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

Больше скриншотов и просмотр в Marmoset Viewer можно увидеть у меня на Artstation:

https://www.artstation.com/artwork/v2K8J3

Всем спасибо за внимание.

153

Комментарии

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

У меня кстати вопрос по этим ассетам из тримов, а как быть с АО? Ведь затенение в углах не создать из тримов

У меня кстати вопрос по этим ассетам из тримов, а как быть с АО? Ведь затенение в углах не создать из тримов
Hesko
У меня кстати вопрос по этим ассетам из тримов, а как быть с АО? Ведь затенение в углах не создать из тримов

Hesko, не создать. Тут есть много вариантов как это разрулить, в зависимости от важности ассета. Можно сделать отдельную карту для всего объекта, с дополнительным UV-сетом. Можно геометрией отбить, чтобы там честная тень ложилась. Можно с дополнительным материалом сблендить (обычно это не затенение как таковое, но всякая пыль-грязь, которая те же функции выполняет).

В конце-концов, можно и забить, если предполагается, что на ассет будет мало внимания обращаться.

Hesko, не создать. Тут есть много вариантов как это разрулить, в зависимости от важности ассета. Можно сделать отдельную карту для всего объекта, с д…
inpwbusina
Hesko, не создать. Тут есть много вариантов как это разрулить, в зависимости от важности ассета. Можно сделать отдельную карту для всего объекта, с д…

inpwbusina, понятно, спасибо, интересно)

дошел до нодов...

Кайф! Люблю читать о рабочих процессах)

Ого! Вот это крутец! Еще и полноценный лонгрид! Жгешь!

Прочитано. Ещё подобное будет?)

Прочитано. Ещё подобное будет?)
MrJulienne
Прочитано. Ещё подобное будет?)

MrJulienne, Планируется. Правда, учитывая мои скорости, где-то в следующем году