Разбор создания танка Leclerc Pre-Prototype

В этом проекте я занимался созданием игровой модели раннего пред-прототипа французского танка Леклерк для Armored Warfare от компании My.Games / Mail.Ru. Моей задачей было создание высококачественной, исторически достоверной и оптимизированной для использования в игровом движке 3D-модели танка по полному пайплайну разработки таких моделей.

В материале речь пойдет об этом танке:

Leclerc_Ingame_A.jpg

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

Изучение объекта и сбор референсов

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

Собранные материалы, как и в большинство художников, я оформлял в единый холст с использованием программы PureRef.

Leclerc_Reference_A.jpg

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

Блокаут / Драфт

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

Leclerc_Draft_A.jpg

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

Leclerc_Draft_B.jpg

Учитывая высокие требования к точности моделирования и недостаток референсов, общий объем проделанной работы к моменту завершения драфта составил примерно 50% от объема всего проекта. На первый взгляд может показаться, что в таком драфте нет ничего особенного, но на практике оказалось, что это долгая и достаточно трудоемкая задача, если геометрия должна создаваться с учетом строгих требований camera match.

Camera Match — сопоставление виртуальных камер и фотографий

Одновременное сопоставление нескольких камер с фотореференсами низкого качества и моделирование геометрии по получившимся Image Plane'ам таким образом, чтобы все точно совпадало в двух, трех или пяти проекциях — это боль и страдание, переходящее в отчаяние.

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

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

Leclerc_Cameramatch_A.gif

Говоря о camera match как таковом, данная техника по своей сути позволяет использовать в своих интересах перспективные искажения, неизбежно присутствующие на всех фотографиях. Путем одновременного сопоставления нескольких фотографий, загруженных в качестве фона в виртуальные камеры, и подбора верных углов "съемки" и FOV камеры, художник получает возможность получить достаточно много информации о размерах объекта, его частей и их взаимном расположении.

Leclerc_Cameramatch_B.gif

В случаях, когда точные размеры объекта, его инженерные чертежи или другие достоверные источники информации о взаимном расположении деталей недоступны, пожалуй, только аккуратный и въедливый camera match позволяет при моделировании приблизиться к верным геометрическим параметрам всего объекта в целом. Когда нужна достоверность модели, приблизительное моделирование "на глаз" неприемлемо.

Leclerc_Cameramatch_C.gif

Немного личного опыта по camera match:

Совет #1. При сопоставлении камер учитывайте детали объекта, которые могут двигаться или вращаться. Например, на этом танке многие ключевые элементы подвижны: башня, пушка, колеса (они на подвеске), прицелы командира и стрелка, антенны. Заранее достоверно очень сложно определить, повернуты ли на имеющихся фотографиях эти объекты, и если да — то насколько?

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

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

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

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

Совет #2. Field-of-View, или FOV — самый важный параметр камеры при ее сопоставлении с фотографией. Для точной настройки необходимо очень близко "попасть" в нужную величину FOV, иначе геометрия не будет совпадать с фотографией. Под "близким" попаданием в данном случае имеются ввиду десятые доли градуса — в особенности это касается больших объектов, измеряемых метрами.

Прикинуть стартовое значение для подбора FOV относительно просто — достаточно изучить заведомо параллельные линии на фотографии. Если они остаются почти параллельными на большом отрезке снимка — скорее всего, FOV низкий. Если линии "сходятся" быстро и на небольшом отрезке снимка — FOV достаточно высокий.

Совет #3. Не забудьте заморозить параметры камеры после каждой настройки! Испортить точно выставленный camera match, если камера доступна для редактирования, слишком просто и обидно, особенно если Undo уже недоступен.

Совет #4. По возможности используйте необходимый минимум изображений. Три снимка, снятых с разных ракурсов, будут хорошим компромиссом между точностью и простотой настройки. Когда изображений становится больше, "связать" их между собой становится значительно сложнее.

Высокополигональная модель

Leclerc_Highpoly_C.jpg

Когда драфт-модель была закончена и утверждена историческими консультантами, началась работа над высокополигональной моделью. Так как базовая геометрия практически полностью могла была быть взята с драфта, я решил использовать SubD поверхности для создания highpoly. Учитывая высокие требования к качеству модели, особое внимание было уделено обеспечению отсутствия артефактов сглаживания и характерных "потяжек" сабдивов.

Leclerc_Highpoly_B.jpg

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

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

Leclerc_Highpoly_F.jpg

Еще одна сфера интересов художника при создании качественного highpoly методом SubD — использование корректной топологии базового меша. В большинстве случаев в пределах одного объекта/тела его фаски имеют одинаковый радиус закругления, т.е. параметры сглаженности должны быть одинаковыми и симметричными на всем протяжении соответствующих ребер. Добиться этого можно путем использования поддерживающих эдж лупов, вершины которых равноудалены от сглаживаемой геометрии.

Leclerc_Highpoly_G.jpg

На данном highpoly, как можно заметить, отсутствуют сварные швы и прочие мелкие детали поверхностей. Они были добавлены позже при помощи Substance Painter — вписаны прямо в карту нормалей при помощи соответствующих кистей. Это сэкономило много времени, избавив от необходимости скульптинга сварных швов.

Leclerc_Highpoly_I.jpg

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

Leclerc_Highpoly_J.jpg

Еще одной интересной задачей стало физически корректное "накручивание" гусениц танка на ведущие звезды. Путем множества мелких изменений мне удалось подобрать корректные параметры размера отдельного звена гусеницы, расстояния между звеньями и углами поворота гусениц в местах изгибов. В конечном счете, гусеницы сели на звезды почти как родные. :)

Leclerc_Highpoly_K.jpg

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

Leclerc_Highpoly_L.jpg

Банальный, но не всегда очевидный нюанс: модель должна быть физически корректной. Например, башня танка должна свободно вращаться на 360 градусов, не допуская проникновения одной геометрии в другую. Чтобы этого добиться, необходимо достаточно точно вычислить опорную точку вращения башни. Погрешность даже на несколько сантиметров может привести к тому, что башня, даже будучи точно смоделированной по camera match, при вращении будет задевать элементы шасси.

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

Leclerc_Highpoly_M.jpg

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

Низкополигональная модель

Leclerc_Low_A.jpg

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

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

Leclerc_Low_B.jpg

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

UV-маппинг и запекание текстур

Leclerc_UV_A.jpg

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

Это несет в себе массу преимуществ, начиная от "читаемости" UV-маппинга до более качественного наложения тайловых текстур, которые не мапятся на каждую модель индивидуально, а используются глобально.

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

Совет: не пренебрегайте возможностью выпрямления (straighten) ваших UV-шеллов. Корректно выпрямленные UV минимизируют алиасинг (появление характерных "лесенок") в текстурах, а также упрощают упаковку. С опытом ко мне пришло понимание, что выпрямлять нужно все, что в принципе можно выпрямить — преимуществ такого подхода гораздо больше, чем недостатков.

Leclerc_UV_B.jpg

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

Leclerc_UV_C.jpg

Хороший UV-маппинг подразумевает последовательность в ориентации UV-шеллов в пространстве текстурного квадрата в контексте их расположения в трехмерном пространстве сцены. Используйте текстуры-чекеры со стрелками, которые иногда называют "gravity checker", чтобы дать себе визуальный ориентир для раскладки и вращения UV.

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

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

Leclerc_Bake_A.jpg

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

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

Leclerc_Bake_B.jpg

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

Низкополигональная модель с картой нормалей

Leclerc_w_Normal_A.jpg

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

Leclerc_w_Normal_B.jpg

Изображение с наложенной поверх сеткой.

Leclerc_w_Normal_C.jpg

Leclerc_w_Normal_E.jpg

Leclerc_w_Normal_F.jpg

Leclerc_w_Normal_J.jpg

Leclerc_w_Normal_K.jpg

LOD и модель повреждений

Leclerc_LOD_A.gif

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

Например, болт может иметь собственную геометрию в LOD0 (исходный объект), но одновременно с этим быть запеченным и в карту нормалей элемента, который находится прямо под ним (например, какая-нибудь панель). В таком случае при создании LOD-объектов геометрия этого болта может быть удалена, но информация о нем сохранится в карте нормалей — и визуальной разницы на определенном удалении практически не будет.

Leclerc_LOD_B.gif

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

Leclerc_Damaged_A.jpg

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

Leclerc_Damaged_B.jpg

Финальный результат

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

https://www.artstation.com/artwork/58lm4w

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

Leclerc_Ingame_B.jpgLeclerc_Ingame_E.jpgLeclerc_Ingame_J.jpgLeclerc_Ingame_L.jpgLeclerc_Textured_B.jpgLeclerc_Textured_I.jpgLeclerc_Ingame_D.jpg

805 0 850 18
14
2019-11-14
Какое интересное название танка )
2019-11-14
Gaetano CaridiКакое интересное название танка )

По факту у танка нет корректного (во всяком случае, известного) названия в принципе. В игре он Leclerc Prototype, но это не совсем верно, т.к. прототипы вышли чуть позже и заметно отличались от этого. В интернете его часто называют Leclerc MSC, но MSC — это название экспериментального шасси, на базе которого танк был собран. Башня, кстати, тоже экспериментальная, и называлась она TSC. Получается, что это Leclerc MSC/TSC.
2019-11-15
Странно, что на лодах не упрощалась модель "тряпочки" у основания ствола (не знаю как называется правильно эта деталь). А так модель - ваще огонь!
2019-11-15
. . (TOTOpulos)Странно, что на лодах не упрощалась модель "тряпочки" у основания ствола (не знаю как называется правильно эта деталь). А так модель - ваще огонь!

Спасибо! Эта тряпочка анимировалась при стрельбе, поэтому в техзадании было указано, что ее трогать при лодировании не нужно :).
2019-11-18
Непонятно в чем моделил
2019-11-18
Очень круто. Сколько времени "от и до" ушло на работу? Почему-то практически никто не указывает время, а зря. Очень помогает осаживать фантазеров, которые "делают такие вещи не напрягаясь за три дня".
2019-11-18
Konstantin Volkov (volfrus)Непонятно в чем моделил

Со временем все больше склоняюсь к мысли, что не так уж важно, где именно. Но вообще - в Maya.
2019-11-18
TurboОчень круто. Сколько времени "от и до" ушло на работу? Почему-то практически никто не указывает время, а зря. Очень помогает осаживать фантазеров, которые "делают такие вещи не напрягаясь за три дня".

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

Часы я не логировал, но конкретно этот танк от начала и до конца, с учетом согласований, проверок историческими консультантами и прочими накладными временными затратами занял ~3 месяца. Чистого времени (не фуллтайм), наверное, ушло месяца 2. Сейчас бы сделал за 1,5.
2019-12-03
Изумительная работа! Один вопрос не дает мне покоя - что за болтовые соединения(если я правильно понял) на стволе? Какие то накладки, или что то вроде композитной брони вокруг ствола? Кто-нибудь знает ответ, мне интересно стало)
2019-12-03
Никита КурбатовИзумительная работа! Один вопрос не дает мне покоя - что за болтовые соединения(если я правильно понял) на стволе? Какие то накладки, или что то вроде композитной брони вокруг ствола? Кто-нибудь знает ответ, мне интересно стало)

Спасибо за высокую оценку. На стволе орудия болтами закреплен термокожух.
2019-12-29
Шикарно! Спасибо!
2020-02-04
отличная статья и крайне полезная! я с большим интересом прочитал ее, вопросов практически не осталось )
2020-03-07
Здравствуйте! Как эффект называется в главном рендере, такое смазывание выделение красного цвета по контуру?
2020-03-07
Sateri RaudanenЗдравствуйте! Как эффект называется в главном рендере, такое смазывание выделение красного цвета по контуру?

Chromatic Aberration.
RENDER.RU