Корсарская химера и чем её готовят. Тошнотворная рутина нарезания персонажей

Очередной месяц, очередная статья по разработке ремейка корсаров на UE5. Похоже это был самый унылый месяц разработки из всех предыдущих. По сути все это время я только и занимался тем, что экспериментировал с переносом и нарезал одежду персонажей из Character Creator-а для UE. Так еще не забываем про то, что одежду нужно не только перенести, а еще и запечь вершинную анимацию в текстуру, которую затем использовать вместо обычных скелетных мешей во имя оптимизации.

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

Компонентность системы одежды NPC

В прошлой статье я говорил о том, что решил создавать монолитных персонажей, которых можно будет раздевать через opacity в нужном слое материала, менять оттенки и т.д. Частично ситуация была связана с тем, что плагин для VAT анимации не умел в работу слоями. А частично с тем, что я на тот момент не понимал как работать с одеждой в отрыве от самой модельки персонажа. Разраб подшаманил свой плагин, и теперь персонажей можно спокойно собирать как через set master pose в скелетных мешах. Также разумеется можно смешивать между собой статические меши с VAT анимацией и обычные скелетные сетки. Это может понадобится чтобы показывать мимику персонажей на близком расстоянии, ибо сейчас плагин не способен работать с костями и морф таргетами одновременно.

Персонаж собран из разных кусков одежды на статик мешах с вершинной анимацией.

Но разумеется проблема с пересечением части одежды с кожей и другой одеждой никуда не исчезает. Тут уже приходится мучаться со скрытием частей тела.

Как разрезать части тела так, чтобы их можно было соединить с одеждой и они не просвечивали

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

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

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

Особенности импорта персонажа и одежды из Character Creator

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

Сперва одеваем нашего персонажа в части одежды которые нам нужны. В процессе немного подгоняем коллизии, чтобы одежда не просвечивала. Затем экспортируем в формате UE.

Корсарская химера и чем её готовят. Тошнотворная рутина нарезания персонажей

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

Корсарская химера и чем её готовят. Тошнотворная рутина нарезания персонажей

Затем просто заменяю каждый отдельный fbx нужной частью одежды(там просто удалить остальные меши в арматуре), и импортирую в UE. Ну и разумеется после импорта, удаляю ненужные текстуры, чтобы не захламляли место на диске.

Тут важное примечание, блядский блендер какого-то хуя по-умолчанию добавляет дополнительные кости с суффиксом _end в конце каждой цепочки костей. И если несколько раз открывать и сохранять модель, то можно построить неплохую такую пирамиду. А в моем случае, это еще и ломает запись VAT анимаций! Поэтому не забывайте снимать галку leaf bones при экспорте.

Editor Utility Blueprint

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

Первое время я делал все это вот этими вот руками, а теперь это все работает автоматом, что ускорило меня в несколько раз.

Извечные проблемы с женским полом

Вот с добавлением женщин возникла куча гемороя!

Во-первых - их юбка жестко прилеплена к ногам, в итоге когда дама сгибала ногу, то платье соответственно тоже неадекватно сгибалось. Я пробовал фиксануть это в CC, но не особо успешно. Получилось гораздо лучше через блендер, но только костылями. Да и хер с ним!

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

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

Корсарская химера и чем её готовят. Тошнотворная рутина нарезания персонажей

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

Заключение

Сколько уже сделано…
Сколько уже сделано…

Еще нужно где-то найти платья для обычных горожанок, а не зажиточных. Модельки английских военных 17-18 века купить и встроить их в существующую систему. Прически импортнуть. Всякие браслетики. Потом вариации лиц… Ох бля… как же оно за…за…зае….замучало!!

Купил я еще мышку за ~7 бачей, как в старые добрые времена, раньше же устраивало. И попался мне такой дикий мусор, что я психанул и купил другую за ~70 бачей. И у неё спустя пару недель начала самопроизвольно нажиматься боковая клавиша колесика что переключает музыку. Пришлось через софт вырубать. ДА КАК ТАК ТО!?

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

Но это не точно…
Но это не точно…

Бонус

А вы видели ширину платьев женщин середины 18-го века? Ну его нахер…

… Также постоянно использовались панье, которые изготавливали из китового уса. Она была разной формы, и чем шире она была, тем значит богаче или знаменитей была женщина.
… Также постоянно использовались панье, которые изготавливали из китового уса. Она была разной формы, и чем шире она была, тем значит богаче или знаменитей была женщина.
2828
25 комментариев

Про ширину платьев для женских персонажей, просто согни руки в локтях. https://www.youtube.com/watch?v=TuXfGho32fU и ещё можно вопрос, чем запекание анимации в текстуру лучше прямого импорта вертексной анимации в Alembic?

1
Ответить

Хм. Статичные руки это скушновато конечно... надо будет потом подумать как фиксануть.

Насколько я понял, Alembic выгружает движение каждой вершины, и на высокополигональных мешах каждая анимация будет весить очень много. Плагин который я юзаю, сохраняет данные в 4 разных текстуры:
* Положение костей в процессе анимации(размер зависит от кол-ва анимаций)
* Вращение костей в процессе анимации(размер зависит от кол-ва анимаций)
* Веса под каждую кость
* Снимок формы меша(для сохранения формы на логах и наните)

Текстуры с анимациями общие для всех мешей, весят они вместе ~10мб при вшитых в них 15к кадров.
Текстуры весов и формы ~200кб
В итоге добавление нового персонажа почти не вызывает накладных расходов на жесткий диск.

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

Ответить

блядский блендер какого-то хуя по-умолчанию добавляет дополнительные кости с суффиксом _end в конце каждой цепочки костей.

Ha-Ha, Classic! Еще он может поломать джоинт ориентэйшен, если галочки "авто" при импорте профукать. Тогда вообще все сломается.

1
Ответить

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

1
Ответить

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

Ответить

Гришь держу в курсе, а сам на меня не подписался. БАН!

Ответить

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

Ответить