Making Of "Обрез"

Привет, меня зовут Александр. Работаю 3д художником в геймдиве, в основном как Weapon Artist на аутсорсинге. В этой статье я расскажу о процессе создания своей относительно недавней работы “Обрез”. Поскольку создание реалтайм ингейм моделей это всегда многоэтапный процесс, я и постараюсь его описать в подробностях.

По шаблону “Making of” нужно начать с красивого описания идеи и вдохновения. Началось все с патрона. У каждого, кто работает по контракту, да и наверно не только, бывают свободные периоды времени между проектами. И длительность этого окна зависит от сложности и сил, потраченных на завершенный проект — это овертаймы, усталость, эмоциональное выгорание, в общем то время, когда нет желания даже подходить к компьютеру. Отдых. :) а вот после отдыха всегда нужно с чего-то начинать. Давно хотел сделать себе набор разных патронов по типам и калибрам. Просматривая в гугл картинках референсы патрона 12 калибра, наткнулся на элитные образцы охотничьих ружей. В голове закрутились идеи обыграть оружие в постап стилистике. Будущий образ по частям плотно засел в голове и осталось только подобрать интересный образец из реальных стволов. То, что это будет обрез, решил изначально, но какой именно?
Моделинг оружия для игр, является, наверное, одним из самых детальных по проработке. На мой взгляд одной из главных сложностей является анатомичность оружия.
Во-первых, это конструктивные особенности каждой модели. Оружие — это сложный механизм, который работает по определенным правилам и соответственно расположение тех или иных частей имеют свое место - высота относительно короба дула, расположение окна выброса гильзы, путь по которому проходит патрон из магазина и т.д..
Во-вторых, это то, как с этим оружием взаимодействует человек. его пропорции, эргономичность, расположение мест хвата руками, возможность прицеливания с учетом анатомии человека, без того чтобы голова упиралась в подщечник на прикладе, а прицел находился на уровне макушки.
Очень часто приходится видеть работы, в которых нарушены эти правила и это приводит к логическим нестыковкам, от которых у зрителя возникает ощущение неправдоподобности на подсознательном уровне.
В-третьих, оружие для FPS шутеров имеет одну главную особенность — это его положение к камере и композиционно при концептировании и проработке детализации именно этот ракурс является одним из главных.

gun.jpg

Но поскольку в моем варианте это прототип реально существующего образца, первые 2 пункта условно можно опустить :)
После долгого пересмотра карабинов, винчестеров, вертикалок, горизонталок, одноствольных, двуствольных остановился на горизонтально расположенных стволах и внешними курками ударно-спускового механизма, поскольку такая конструкция выглядит наиболее интересной из главного ракурса камеры - горизонтальное расположение стволов, дополнительная детализация конструкции в самых ближних к камере местах, в виде внешних курков и замка, расположенных в верхней части колодки.
Круг поиска сузился и дальнейший выбор пал на ружье The Overland от бразильского производителя Аmadeo Rossi
обложившись n-ым количеством рефов, для понимания как устроена механика,какие пропорции я приступил к следующему этапу - прототипирования и создания hi res модели.

gun2.jpg

HiRes Model

Первым был моделинг непосредственно самого обреза. сам моделинг не представляет собой каких-то революционных технологий в виде параметрического моделирования, обычное полигональное subdiv моделирование с использованием булевых операций. Не вижу в булевых операциях огромного зла, главное нужно держать топологию в чистоте после них. Это всегда задержка по времени. Конечно, сейчас есть много разных техник - и HardMesh для Maya, MeshFusion для Modo, разные скрипты для работы в связке 3d Max or Maya с ZBrush, но все это деструктивные методы моделирования, которые могут принести некоторого рода проблемы. Все это хорошо до тех пор, пока вы работаете для себя, но, когда вам приходит фидбек о переделке какой-то части, где нужно просто изменить угол для детали, а она уже с детализацией в высоком разрешении, зачастую придется переделать с нуля.
По самой топологии я всегда исхожу из практичных соображений количества потраченного времени. если при сглаживании я получаю отличный шейдинга, меня мало волнует наличие треугольников. мне кажется это фетиш - красивая ровная сетка. Естественно, есть вещи, где это необходимо - например лицевые анимации, деформации тела и в этом случае это аксиома, без которой не получить отличного результата. Во всех остальных это просто поверхность и при запекании с неё
карты нормалей, запекаться будет не сетка, а шейдинг.
В итоге получилось следующее (С тем самым патроном, с которого всё и началось :))
Сетка на первом уровне сабдива.

Screenshot_11 (2).jpg

Screenshot_12 (2).jpg

Сглаженная

Screenshot_10 (2).jpg

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

Screenshot_3.jpg

Сложности, с которыми пришлось столкнутся на этом этапе, это конструкция дул и вырезы на колодке под курки. По дулам — это угол их схождения к краю. Было найдено видео процесса реставрации двуствольного ружья похожей конструкции, по которому и удалось понять пропорции. Но все равно было около 3-4 переделок каждого из участков, пока был не получен приемлемый результат
Следующим элементом стало лезвие под цевьем. Изначально была идея сделать его в виде топора, подсмотренное на одной из работ, но такая конструкция смотрелась громоздкой и если рассматривать с позиции практичности то
1 обрез по весу бы утяжелялся
2 им бы тяжело было наносить рубящие удары
3 разбивался бы замок
Исходя из этих посылов я решил сделать небольшой клинок, который бы наносил режущий удар и с которым можно было бы наносить удар одной рукой.
Для быстрого наброска, чтобы зафиксировать формы и формообразующие линии и не потерять их в процессе моделинга я использую инструмент Grease Pencil встроенный в Maya 3d. При дальнейшей работе с формой, стараюсь всегда проверяю силуэт установкой режима освещения No Lighting.

Screenshot_4.jpg

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

Screenshot_5.jpg

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

Screenshot_9.jpg

Была создана Curve

Screenshot_10.jpg

С помощью Mash и деформатора Curve Warp кусок арматуры был сдублирован с привязкой к кривой. Получился такой результат.

Screenshot_7.jpg

Следующей деталью была обмотка цевья для. Кусок кожи, не порезанный на ремень
органически влился. Всякого рода обмотки я предпочитаю делать в Marvelous Designer.
Для удобства, нужные детали, которые нужно обмотать, размещаю в центре координат (это позволяет иметь пивот в Marvelous Designer в нужном месте детали.
Импортирую деталь как аватар. Снаплю нужную полоску выкройки булавками и с помощью пивота, вращаю аватар, таким образом симулируя намотку. Такой метод, в отличии от zBrush дает максимально реалистичный результат и контроль, позволяя сделать намотку именно такой какой хочется.
результат.

Screenshot_11.jpg

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

Screenshot_12.jpg

Следующим я сделал стяжку алюминиевой проволокой для кожи.
Использовал всю ту же кривую и плагин для Майя PrimGen, который делает по кривой разного вида чудеса - от свитой веревки, до сложных кастомных профилей.
пришлось немного помучится с скруткой. Вышло не сильно реалистично, но это был некоторый компромисс между реалистичностью и решением, ретополировать кожу с проволокой единым куском на low poly, поскольку модель всеж геймдивная.

Screenshot_13.jpg

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

Screenshot_14.jpg

Заключительной частью, стало добавление заготовки под сварочные швы. Для этого я использовал небольшой скрипт от Romain Chauliac - Welder Script
Хайполи модель была практически готова и для финальной доводки, я экспортировал оружие в zBrush. Поскольку GOZ непостижимым для меня образом, меняет систему юнитов и модель импортируется в збраш с смещениями, что привносит проблемы на этапе создания Lowres модели, для экспорта импорта я использую FBX.
В zBrush была придана окончательная форма кожаной намотке и проволоке и добавлением эффекта утяжки кожи. Добавлена детализация изоленте и детализация всем самопальным частям - лезвию, кастету, арматуре, пламегасителю. Детализированы сварочные швы и заточка на лезвии.

Screenshot_16.jpg

Создание гравировки, выглядящее простым на задумке, оказалось не таким уж и простым. Как и всегда это борьба с собственной ленью и обдумывание легкого способа, который даст хороший результат. В голове вырисовалось 2 метода
1 zBrush
2 создание бампа по UV развертке с переводом его в карту нормалей
на предварительном планировании второй метод казался время затратным и к тому же для текстурирования по развертке таких деталей, нужно минимальное растяжение и деформация самих шелов.
поэтому был выбран способ через zBrush. было перепробовано несколько вариантов -
это и предварительно заготовленные альфа кисти, и projections master, и inflate deformations по маске через текстуру по развертке хайполи, и surface noise, но все они не принесли нужного результата, в одних случаях мне нравилась то что выходило, в других при работе по развертке не хватало разрешения меша. Оставался запасной вариант.
Дополнительно я сделал раскраску модели по Vertex Color, для запекания ID карты материалов.

Screenshot_29.jpg

LowRes model
При подготовке хайпольной модели я руководствуюсь принципом будущей экономии
UVMappinga/, поэтому все что можно сделать на лов поли версии одним мешем, я комбайню. Таким способом немного повышается трикаунт лоуполи, но удается сэкономить до 20 - 40 процентов на плотности текселя. (зависит от модели)
При создании лоуполи я использую комбинированный метод — это и непосредственно моделинг из примитивов, и упрощение сетки мидл поли варианта, и, собственно, сама ретопология. Использую для этого Maya и 3D Coat.
Чтобы избежать проблем при запекании карт нормали на этом этапе наверно общеприменимым будет одно правило - lowres модель должна максимально возможно повторять hires модель с учетом бюджета требуемого трикаунта . Здесь стоит понимать, что есть места, которые будут отлично запечены и хорошо смотреться, поэтому не стоит отбивать каждую фаску. Скорее в правиле идет речь о основной форме. и контурам силуэта каждой детали.
Второй момент — это длинные узкие треугольники. Не только на непланарных поверхностях. Но здесь все зависит еще и от настройки шейдинга лоуполи модели.
Это обширная тема, некоторые моменты достаточно уникальны и мне бы не хотелось в них углубляться в рамках этого “Making of”.
Поскольку данная работа для себя, я не ставил целью упереться в некий бюджет
трикаунта. Поэтому в некоторых местах очень много лишнего, как для ингейм модели. Лоуполи модель вышла в 21459 треугольников.

Screenshot_18.jpg

UV Mapping я делаю в программе UVLayout. Для увеличения плотности текселя, все детали, которые имеют симметрию и можно отзеркалить режутся на шеллы. С учетом этого, сама модель должна иметь максимально возможный минимум швов, поскольку в любом игровом движке в местах разрыва создаются двойные ребра и вертексы.
Разрез по центральному лупу, я использую очень редко и если делаю, то только снизу модели, чтобы не было видно симметричности. После того как сделана развертка, в майе я стараюсь максимально, где это возможно, выровнять границы шеллов по осям. Это позволяет избежать так называемых “пиксельных лесенок” на текстурах, что порой при низком разрешении текстур приводит к заметным артефактам.
В этой работе UV mapping не образцовый, можно еще улучшить, но поскольку работа для себя - тратить много времени на нее не было желания.
Особое внимание я уделил шеллам, на которых должна была быть гравировка. Дальнейшим этапом была настройка шейдинга для запекания. Все стандартно - все жесткие ребра должны быть разрезаны на UV, а ребра на разрезах могут быть как soft, так и hard. Звучит немного запутанно.
Поскольку нужно стараться минимизировать швы на юви, всегда есть участки с избыточным шейдингом.

Screenshot_26.jpg

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

Screenshot_27.jpg

Кодировка цвета градиента указывает, как должен отражаться свет в касательном пространстве.
Поэтому градиентов не нужно боятся. Это заложено уже в саму технологию. Но, как и везде бывают исключения из правил. В условиях низкого разрешения текстур и дальнейшей компрессии текстур в формат .dds, 4: 1 и где всего 8 бит на пиксель,
возникают артефакты. Это происходит в местах, которые имеют небольшое количество пикселей для компенсационных градиентов. Обычно это длинные узкие треугольники, которые возникают из-за экономии трикаунта. Существует несколько решений этих проблем, которые сводятся к одному - постараться выровнять шейдинг.
1 Переделка топологии в таком месте
2 Если позволяет бюджет трикаунта, добавление поддерживающих лупов.
3 Сделав некоторые ребра жесткими.
В последнем случае, нужно такие места дополнительно разрезать на UV, поскольку они запекутся с градиентом и это будет выглядеть как артефакт.
Соответственно, если при запекании карты нормалей добавляются градиенты, то они добавляются и на швы. поэтому если позволяют условия (например разрез на цилиндре) то такой шов лучше сделать Soft. Но опять же, все должно рассматриваться применительно к каждому случаю, поскольку могут быть проблемы уже на лодах.
За все время своей работы, я перепробовал наверно все программы, которые делают запекание текстур с хайполи модели. Самый предсказуемый, лучший результат дает xNormal. И на сегодняшний день главный недостаток, это отсутствие того функционала, который появился в Marmoset Toolbag 3. Стоит признать, что в недавнем обновлении авторы программы постарались избавится от большей части проблем и на данный момент, Marmoset лучшее решение по затраченному времени\результату.
В xNormal я делал спечение 2 вариантов - с кейджем и без. Кейдж для швов, без кейджа для всего остального. При запекании с кейджем изменяется угол прострела рэй лучами к поверхности хайполи, что приводит к смещению деталей. Складывал эти варианты через маску в фотошопе.
Были запечены, собственно, NormalMap, AO map, ID Map.
Дальше было создание гравировки. Для этого я использовал плагин для фотошопа nDO2. Сам узор — это маска из готовых паттернов, для каждой детали я использовал разный метод наложения слоев.

Screenshot_31.jpg

Также, я сохранил 2 маски для дальнейшего использования в Substance Painter. Общую (слева) и для дополнительной детализации чеканки (справа).

Screenshot_32.jpg

Дополнительно была сделана маска для патрона.

Screenshot_28.jpg

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

Screenshot_30.jpg

Работа непосредственно с Height позволяет регулировать нужно направление (вниз или вверх происходит выдавливание) и интенсивность.
С экспортированной карты нормалей, в Knald, были сняты 3 дополнительные процедурные текстуры concavity, convexity и curvature. Сurvature очень сильно отличается от той которую генерирует Substance Painter. В SP она получается агрессивной, что иногда добавляет сложностей, когда ваши материалы не должны быть настолько изношенными.

Создание материалов
Создание текстур — это наверно самый интересный и творческий этап в создании 3д модели. Писать на эту тему можно бесконечно, поэтому я постараюсь выделить несколько ключевых моментов, как я их понимаю.
Первое это композиция в цвете, когда за счет небольших пятен каких-то эффектов, есть возможно сделать контраст теплых и холодных цветов на уровне полутонов.
На изображении ниже я выкрутил Saturation для лучшей демонстрации.

Screenshot_33.jpg

Второе это фотореалистичность самих материалов. Сюда входит много компонентов и
основным является система повреждений и уровень износа. Каждый объект, за все время своего существования, проживает определенную историю. Подробно разбирая примеры похожих объектов по фотографиям, можно понять, как и где именно появилась ржавчина, царапины, окисления и другие эффекты. Все подчиняется логике тех действий, которые происходили с объектом. Очень часто приходится видеть работы, на которых каждый материал по отдельности смотрится достаточно интересно, но в общей картине, за счет разного уровня износа происходит рассинхронизация по времени и условиям.
Третье будет, наверное, как совет для начинающих, да и не только. Cистема умных материалов в SP, позволяет использовать, материалы, сделанные другими пользователями. С одной стороны это достаточно удобно и быстро, с другой приводит к огромным проблемам. Каждый материал нужно настраивать под новую модель.
Поэтому лучшим решением, является создание своих собственных материалов с нуля. В этом случае, вы понимаете, для чего у вас и как наложен эффект и как быстро его можно подредактировать. А всякие библиотеки можно уже использовать в качестве базовых или для разбора и понимания как был сделан тот или иной эффект.
Текстуры, которые у меня получились в финале.
Albedo

Screenshot_34.jpg

Metalic

Screenshot_35.jpg

Roughnes

Screenshot_36.jpg

Normal

Screenshot_37.jpg

AO

Screenshot_38.jpg

Презентацию модели я делал в Marmoset Toolbag 3. Настройка освещения по стандартной схеме контраст на теплом и холодном. Для каждого снимка я настраиваю свет по-новому, чтобы местами бликов акцентировать внимание на интересных по моему разумению участках.
Основные настройки все стандартны. Я бы выделил настройку Metalness -
лучше использовать Advanced Metalness, в ней есть настройка Specular Level.
Это тонкая настройка для диэлектриков, которая позволяет убрать некоторую пластмассовость на данном типе материалов.

Screenshot_39.jpg

Вот скрины основных настроек окна Render и Camera.

Screenshot_40.jpg

Screenshot_41.jpg

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

227354.jpg

227352.jpg

Спасибо всем, кто дочитал до конца и спасибо редакции Рендер.ру за предоставленную возможность. Всем Успехов и отличных работ!

825 0 850 49
7
2018-12-04
Круто!
2018-12-05
Отличная работа!
2018-12-24
Очень полезно.
2019-02-08
Клевая работа. Хорошая статья. Спасибо!
2019-02-19
Спасибо за статью!
2019-04-24
Здорово, спасибо за статью. Полезно!
2019-05-27
Отличная работа. Есть только одно замечание. Не стоит старить латунную поверхность гильзы. Мелкие царапки, небольшие пятна патины допускаются, а вот подъеденный коррозией патрон вызывает отторжение. Зато сам обрез выше всяких похвал.
RENDER.RU