моделирование одежды для персонажа
Создание костюма От и До
Раскрываю Величайший НЕсекрет создания образа! В этой статье описан мой способ создания гардероба для персонажа. У каждого художника он свой, но принципы зачастую похожи.
Шаг 1. Поиск референсов
Отправляйтесь в Интернет на поиски вдохновения. Прошерстите каждый закуток информационного пространства и сохраните в отдельную папку всё, что вам понравилось. Позже выберите те изображения, которые больше всего вам приглянулись или наиболее сочетаются с вашим персонажем.
Шаг 2. Выбор фасона
На данном этапе вам необходимо придумать фасон вашей одежды. Будет ли это вечерний костюм или спортивное платье? Что-то открытое или по-зимнему теплое? Всё ограничивается вашей фантазией!
Шаг 3. Распределение текстур
Откройте изображения, которые вы выбрали ранее. Выделите наиболее интересные для вас детали. Решите для себя, как вы хотите разместить текстуры на выбранном ранее фасоне. Не бойтесь экспериментировать. Кто знает, куда может привести ваше воображение?
Шаг 4. Выбор палитры
Подберите цвета для вашего костюма. Если палитра для вашего персонажа уже определена — смело воспользуйтесь ею. Или же поищите что-то новое, необычное.
Шаг 5. Рендер
Настало время для финальной проработки деталей. Вы уже выбрали референсы, фасон, цвет и уже знаете, как выглядит каждый элемент одежды. Покажите эти детали.
Шаг 6. Вперёд!
Дизайн не ограничивается только костюмом. По тому же принципу можно разработать и важные для вашего персонажа предметы: реликвии, артефакты, орудия и пр. Вложите в работу всё своё вдохновение.
Творчество — это бесконечный процесс. Не забывайте об этом.
Моделирование 3D-одежды в Marvelous Designer
CG-художник JH Park рассказывает о процессе создания одежды в Marvelous Designer.
Это очень простенький прототип для тестирования Marvelous Designer. Кроме одежды я создал в Marvelous Designer поясную сумку, шарф и микро-ткань, отвечающую за морщины и складки.
Использование Marvelous Designer для создания тряпок персонажа
Шаг №01: Импорт файлов
Модель, импортированная в Marvelous Designer
Шаг №02: Моделирование рубашки
Затем я перешел к созданию нижней, нательной рубашки персонажа.
Marvelous Designer изначально был разработан для того, чтобы облегчить фэшн-дизайнерам процесс создания превизов, что подразумевает знание основ кройки и шитья, хотя, на самом деле, это совершенно необязательно для успешной работы в программе.
Финальный вариант нательной рубашки
Шаг №03: Образцы паттернов (выкроек)
Образцы паттернов я нашел на Google. В Интернете можно легко найти необходимые выкройки рубашек, брюк, платьев и пр. В процессе создания паттернов я также воспользовался этой ссылкой.
Красным на изображении выделены места расположения швов. Marvelous Designer работает с шириной этих надрезов, вместо вертексов, с которыми работают 3ds Max или Maya.
Использование паттернов в процессе создания одежды
Шаг №04: Работа с паттернами
Для создания рукавов-фонариков необходимо создать швы разной длины, как показано на рисунке ниже. Красные и желтые линии показывают, как будут сшиты различные части юбки. При этом излишки ткани на рукаве как раз и формируют необходимую форму фонарика.
Рукав-фонарик, сформированный с помощью различных швов
Шаг №05: Финальный вариант рубашки
Далее я применил карту цвета к финальному варианту юбки. Так, UV-развертка обычно создается автоматически на основании формы паттерна. При желании UV-развертку можно изменить в любом 3D-редакторе.
Рубашка с текстурой
Шаг №06: Моделирование юбки
Юбка создавалась по тому же принципу, что и рубашка, при этом число складок настраивалось с помощью длины паттернов юбки.
Шаг №07: Финальный вариант юбки
Затем я применил карту цвета к финальному варианту юбки. Так, UV-развертка обычно создается автоматически на основании формы паттерна. При желании UV-развертку можно изменить в любом 3D-редакторе.
Назначение текстуры на юбку
Шаг №08: Моделирование жилетки
Далее я перешел к жилетке. Я «зафризил» все, кроме нее, чтобы облегчить процесс работы. Затем я сдублировал те же паттерны, чтобы использовать их для завершения построения жилетки с помощью padding-техник, при этом необходимый участок выделен красным на изображении ниже. С помощью инструментов Marvelous Designer очень легко создавать любые объемы. Также я создал несколько паттернов и крючков, которые разместил по центру жилетки, при этом необходимый участок выделен желтым на изображении ниже.
Шаг №09: Финальный вариант жилетки
Затем я применил карту цвета к финальному варианту жилетки, как показано на изображении ниже. С помощью ZBrush я спроектировал органические текстуры на финальный вариант меша. Так, UV-развертка обычно создается автоматически на основании формы паттерна. При желании UV-развертку можно изменить в любом 3D-редакторе.
Финальный вариант жилетки
Шаг №10: Моделирование сумки
Сумку я также создал в Marvelous Designer путем клонирования паттернов с помощью padding-техник.
Создание сумки с помощью padding-техник
Шаг №11: Финальный вариант сумки
Далее я назначил на сумку карту цвета. Так, UV-развертка обычно создается автоматически на основании формы паттерна. При желании UV-развертку можно изменить в любом 3D-редакторе.
Текстурирование финального варианта модели сумки
Шаг №12: Создание шарфа
Последним я создал шарф, поскольку это самая верхняя деталь одежды. При этом я создал его с помощью тех же техник, которые я использовал при создании сумки.
Использование padding-техник для создания шарфа
Шаг №13: Формирование шарфа
С помощью Multi-pin (отмечено зеленым на изображении) я зафиксировал форму меша, после чего завязал остальные части вокруг Multi-pin-участка.
Использование Multi-pin для фиксации определенных частей меша, из которых затем формируются складки
Шаг №14: Финальный вариант шарфа
Далее я применяю карту цвета к финальной модели шарфа. Так, UV-развертка обычно создается автоматически на основании формы паттерна. При желании UV-развертку можно изменить в любом 3D-редакторе.
Финальный затекстуренный вариант шарфа
Шаг №15: Назад в ZBrush
Далее процесс завершается в ZBrush и 3ds Max. С помощью инструментов ZBrush создается более высокая детализация мешей одежды, из которых затем запекаются Normal и Displacement-карты.
Работа над детализацией текстур в ZBrush
Шаг №16: Вперед в MARI
MARI обычно используется для текстурирования, поскольку она обладает мощным набором инструментов, что в сочетании с V-Ray в 3ds Max значительно улучшает качество текстур. В V-Ray V3 улучшена трассировка лучей, что значительно помогает в процессе рендера.
Повышение качества текстур с помощью MARI и V-Ray
Шаг №17: Карты и разные рендер-пасы
Карты и разные рендер-пасы, готовые к композу
Шаг №18: Выводы
Я, будучи 3D-дженералистом, был крайне впечатлен мощнейшими возможностями моделирования Marvelous Designer. На мой взгляд, многие CG-художники вполне могут разобраться в функционале программы и оценить ее достоинства.
Marvelous Designer был разработан, чтобы художники могли достаточно быстро создавать внушительные объемы качественной виртуальной одежды. Описанные выше подходы можно использовать как для создания одежды, так и для симуляции драпировок, складок и пр.
основы моделирования брони, одежды и т.д.
severus616
Локализатор
—>
В интернете множество статей и роликов по адаптации и ретекстуированию всего ванильного!
Ну вот от нечего делать решил жахнуть такую небольшую статью, про моделирование, каких мало!
Выделяем модель тела на которую нужно сделать броню, в моем случае наплечник, но это может быть что угодно (чтобы выделить просто тыкаем на нее левой кнопкой мыши).
Далее нажимаем F4 на клавиатуре, чтобы отобразить полигональную сетку. так нам будет удобнее работать.
Идем во вкладку модификаторов, нажимаем на + рядом с edit mesh.
Разворачивается список, в котором выбираем polygon (красный квадрат)
Далее выделяем область где нам нужно сделать броню, в моем случае наплечник.
С зажатой клавишей Ctrl выделяем полигоны.
Но проще, с зажатой левой кнопкой мыши обводим, потом отпускаем кнопку, и вот выделено несколько, если больше чем нужно, не страшно.
Потом уже с зажатой кнопкой Ctrl выделяем недостающие полигоны.
Далее в edit mesh ищем edit geometry и нажимаем detach, обязательно ставим галочку detach as clone, потому что мы не будем отделять в нашем случае от основной модели, таким образом мы просто клонируем выделенный участок.
У нас получилась еще одна модель. выделяем ее,
Немного отдалим ее от основной, но это не обязательно! Я так не делаю, но может кому то будет удобнее так работать, для этого идем в список модификаторов и ищем push
(push value 0.03 больше не нужно.)
Теперь поменяем цвет, зададим материал для удобства, идем в редактор материалов, если у вас вылезло табло slate material editor, то в вкладке modes нажмите compact material editor.
В итоге у вас вылезет такое табло.
specular level примерно 120, и перетаскивайте материал мышью на наплечник.
Теперь нам будет приятно и удобно работать с будущей моделью, теперь она отличается по цвету и по блеску.
Далее кликаем правой кнопкой мыши на модель наплечника и в открывшемся свитке конвертируем в edibatle mesh.
Теперь работаем в editmesh
Удаляем ненужные нам полигоны, если такие у вас имеются, выделяем их и нажимаем delete на клавиатуре. (Для тех, кто не знает, где кнопка del/delete на клавиатуре,
Можете экспериментировать. Всегда можно вернуть действие назад на несколько шагов. Далее не все действия вам пригодятся, но если вы хотите работать в 3dmax то исследуйте их для ознакомления.
Теперь ровняем таким способом. в editmesh выбираем vertex, выделяем вершины (синие точки на модели), во вкладке edit geometry, внизу нажимаем collapse
Теперь нам нужно придать форму, такую какую мы хотим. способов может быть несколько, но в этом уроке только один из них.
Выделяем вершины, там где нам к примеру нужно поднять его, нажимаем soft selection (мягкое выделение), в falloff меняем значение на ваше усмотрение, чем выше значение, тем больше соседних полигонов будет задействовано.
Далее вы можете перетаскивать стрелками по направлениям, развернуть, и так далее.
Если к примеру где то у вас получилось не ровно. и надо поправить. в edit geometry нажмите make planar. неровно оно скорее всего не получится, но свойство make planar вам в будущем пригодится.
Также можно выделить несколько полигонов, и выровнять их и можно даже весь объект.
О том как выделить весь объект (сейчас это вам не нужно, но мало ли потом пригодиться), (ну как бы так сказать целый элемент объекта). В edit mesh нажмите на element и кликните на модель. Если нажать на make planar, то он станет ровной плоскостью.
Теперь поработаем с объемом, во вкладке модификаторов ищем shell.
В параметрах модификатора по умолчанию в outer amount всегда стоит значение 1,0 но нам к примеру надо толщину меньше, меняем значение на такое, какое вас наглядно устроит. Я поставил 0,5. Значение в inner amount увеличит с внутренней стороны.
В самом низу параметров модификатора shell есть 4 пункта, можно выделить поставив галочку внутренние, внешние стороны, и т.д. поставьте галочку где-нибудь, все равно.
В edit mesh (в самом модификаторе, не в моделе) нажмите на polygon, при этом выделится та группа полигонов которую вы выделили в shell, такая же особенность работает везде в 3dmax с любыми модификаторами.
Теперь в editmesh в параметрах где selection поставьте галочку ignore visible edges и кликните по внешней стороне модели, видите, выделился не один полигон, а вся лицевая сторона.
Также можно выделить и внутреннюю и боковую, с зажатой Ctrl любые несколько.
Теперь еще одна интересная функция в edit mesh. Очень нужная в моделировании. Выделите любую группу полигонов или полигон, и нажмите в вкладке edit geometry «Extrude», потом на выделенных полигонах нажмите и не отпуская кнопку мыши немного потяните в сторону.
Тут я сделал дополнительную площадь, затем уменьшил ее, и оттянул вглубь. могу выдвинуть еще площадь.
Удобно то что вы можете вернуться назад к editmesh поправить что то, добавить, не убирая meshsmooth сверху, в 3д максе эти модификаторы, это как слои в фотошопе.
Вот я вернулся в editmesh, и сделал еще 2 площади через extrude, вторую уменьшил.
Если модель готова, то можно приступать к созданию развертки UV, сделать это будет удобнее до модификатора meshsmooth.
Далее накидываем модификатор Unwrap UVW, он у нас оказывается сверху editmesh и ниже meshsmooth. В его свитке выбираем polygon, полигоны у нас уже выделены и нажимаем на кнопку с молнией, далее нажимаем Open uv Editor
У нас открывается такое вот табло, там нажимаем на яйцо с молнией и координаты выбранной части UV разглажены и качественны, а следовательно текстура на них ляжет хорошо.
Вот тут по кругу я выделил, то что не выделил до этого на лицевой стороне, потратил на это секунд 30.
Далее я нажимаю на яйцо с молнией(quick peel) и то что было выделено обрезается, зажимаю Ctrl и выделяю часть лицевой стороны что была выделена ранее.
Далее в модификаторе чикаю по quick planar map (квадрат с молнией) и в окне UV опять кликаю по яйцу с молнией, вот что получилось.
Забрали кусок лицевой стороны у задней планки, и добавили его к лицевой планке.
Так как внутренняя сторона нам не нужна, ее не видно, поэтому ее можно сделать меньше, чем лицевую. Выделяем ее и уменьшаем, затем раскладываем на Uv карте
Заключительный этап. возвращаемся к meshsmooth, если модель брони делается для игры, то полигонов нужно как можно меньше, потому в meshsmooth настраиваем параметры subdivision amount, interations стоит 1. но можно поставить 0, при этом модель не будет сглажена в полигонах, только нормали останутся сглаженными. показывать не буду, так как пример неудачный, настолько низко-полигональную модель придется конечно сгладить как надо.
Вот основные принципы моделирования, наплечник конечно, просто учебный, для данного урока, сделан просто за 5 минут.
Но вот по такому принципу был сделан этот наруч, хотя он еще в стадии разработки.
Менять одежду на персонажах из MakeHuman в Unity3d
Для этого нам понадобится Makehuman, Blender3d, Unity3d и его плагин UMA (они все бесплатные). Статья написана по мотивам этого ютуб канала, повторяя за автором я набил много шишек, и теперь готов изложить своё видение.
Этап 1: Создание персонажа в Makehuman
Это самый легкий и приятный этап, тут необходимо смоделировать персонажа. Makehuman довольно простая программа, поэтому не буду описывать, как в ней работать.
Несколько дополнительных моментов
Не надо менять позу персонажа.
Одежду можно экспортировать по частям. То есть не надо напяливать все шмотки сразу, можно, например, сначала сохранить персонажа, у которого только штаны с рубашкой. В блендере экспортировать их, затем вернуться в makehuman, снять старую одежду и повторить операции экспорта, например, для шляпы и ботинок.
Единицы измерения метры, значит что десять клеточек в makehuman будут означать условный метр
Этап 2: Обработка его в Blender3d
Тут нам нужно сделать три вещи:
Добавить глобальную кость
Нарезать части тела
Грабля на которую я наступил
Первый раз когда, потратил время на создание персонажа makehuman, в блендере нажал на экспорт вместо импорта (в результате в мой fbx файл записалась пустая сцена, и пришлось заново создавать персонажа). Тоже самое касается импорта.
Нормализация
Очищаем трансформацию позы
Переходим в блендере в режим позы
Переход в режим позы
Выделяем всё, (клавиша a)
Очистка трансформации
Чтобы проверить, что трансформации очищены, можно перейти в режим редактирования. Модель не должна при этом измениться.
После этого персонаж развернулся на 90 градусов, нужно вернуть его обратно
Вращение персонажа в блендер
Сначала нужно перейти в объектный режим.
Переход в объектный режим
И наконец, нужно очистить внутреннее масштабирование и вращение всех мешей.
Очистка масштабирования и вращения
Для модели нашего персонажа нам нужно добиться чтобы все его меши имели вращение 0° и масштабирование 1.000 (без изменения формы самих мешей естественно).
Для этого нужно, в объектном режиме выделять каждый меш (включая арматуру ) нажимать на ctrl + a, и выбирать пункт rotation & scale.
Добавление глобальной кости
Теперь нам нужно добиться, чтобы скелет был совместим с UMA. Для этого нужно добиться такой иерархии костей.
Пошаговая инструкция как этого добиться
Выделим Root кость и переименуем её в Position. Затем выставляем у неё характеристики Transform так же как на картинке.
У нас появится кость с именем bone, и её нужно переименовать в Global и выставить в ней те же характеристики, что и для кости Position.
Далее нужно сделать Global кость предком кости Position. Для этого нужно сначала свернуть список дочерних костей у кости Position.
Далее выделить кость Global, затем зажав shift, выделить кость Position. Перевести мышь на экран с 3d моделью и нажать на ctrl + p, в выпадающем меню выбрать keep offset.
Нарезка персонажа
В этом туториале мы разобъём персонажа на следующие слоты
Первом делом нам нужно создать сетку швов (seams mesh). Для того чтобы можно было менять те части, которые идут единой сеткой (например чтобы голова выглядела приделанной к туловищу, а не как отдельная моделька). Для этого нам нужно продублировать главную сетку.
Создание seams mesh
Выделяем главную сетку (в моём случае она выглядит вот так). Прочие сетки (глаза, волосы и одежду) я скрыл.
seams mesh
Нажимаем shift + d, затем RMB
В результате она должна продублироваться.
И называем её seams mesh (либо любым другим названием).
Теперь осталось добиться того, чтобы вместо старого меша были отдельные части.
Переходим в режим редактирования нашей главной сетки (не seams mesh).
В подрежим редактирование поверхностей.
Зажимаем alt и нажимаем на какой нибудь из прямоугольников на шее чтобы выделить полоску как на рисунке ниже (стараемся кликнуть ближе к вертикальному ребру чем к горизонтальному, иначе выделится вертикальная лента).
UPD: раньше выделял голову при помощи кругового выделения (клавиша c) и рентгеновского вида, но пользователь ValeryIvanov подсказал более удобный способ:
Нужно скрыть это кольцо (клавиша h), далее навести курсор на голову и нажимаем L (должна выделиться вся голова), затем снова показываем полосу на шеи, нажав на Alt + L. Далее нажимаем на P и в выпадающем меню выбираем SПelection. Всё, голова отделена.
Не забудем переименовать получившийся меш.
Теперь такую же операцию нужно проделать с другими частями. В результате у меня получилась вот такая картина. Тут поменял ракурс и выделил торс и ступни чтобы было лучше видно меши на которые я разбил модель.
Ещё я нарезал одежду и переименовал части тела.
Таким образом, мы имеем seams mesh и множество мешей если собрать которые получиться модель персонажа. Каждый с одинаковой арматурой.
Теперь экспортируем персонажа в формате fbx (желательно в ту же папку куда экспортировали из makehuman потому что там должны лежать текстуры к нему)
Этап 3: Создание UMA расы
Подготовка сцены
Импорт персонажа
Создаём папку в юнити в которой будем работать, я назвал её characters. Перетаскиваем туда папку с нашим персонажем (fbx и текстуры). Возможно появиться сообщение о том, что некоторые текстуры не помечены как карты нормалей. Можно нажать fix now.
Для удобства при работе с UMA я закидываю всё в одну папку (в characters), потому что при создании и настройки ассетов постоянно приходиться указывать в них ссылки на друг друга. А каждый раз лазить по папкам не всегда удобно. В любом случае, после того как мы всё настроем можно будет навести порядок.
Выделяем в менеджере проекта нашу fbx модельку, в инспекторе снимаем галочку Convert Units, и нажимаем Apply. Далее переходим во вкладку rig в animation type, выбираем Humanoid и так же нажимаем Apply.
Создание слотов и оверлеев
Теперь перетаскиваем части которые должны выглядеть единым мешем в панель automatic Drag and Drop porcessig. Это голова, торс, ноги и ступни (но не глаза и волосы). После того как закончили, в seams mesh выберите None и подобным образом перетащите глаза, волосы и одежду.
То же самое проделайте для глаз, волос и одежды. По завершении, оверлеи лучше перенести в рабочую папку.
Результат
Откройте Global Library
Перенесите рабочую папку в панель «Drag indexable assets here to Add them to the index»
Создание TextRecipe и RaceData
Теперь нужно назначить Wardrobe Slots, это что-то типа ячейки инвентаря, куда можно надеть шмотку. В них помещается Wardrobe Recipe. Wardrobe Recipe по сути это сама шмотка. В чем же его отличие от обычный слотов? Слот это сменяемая одна из частей модели, вардроп рецепт это информация о том как этот слот (шмотка) будет надеваться на тело. Например если есть шляпа, то слот шляпы будет содержать меш шляпы, (и информацию о том, оверлеи с каким материалом с ним совместимы). А Wardrobe Recipe будет содержать ссылку на этот слот, нужные оверлеи, и информацию о том что нужно убрать волосы (и другую шляпу если она есть), и ещё скрыть часть головы, если её части проходят сквозь шляпу. Поэтому в Wardrobe Slots можно создать примерно вот такой список:
Я назвал их MaleRace и BaseRecipe соответственно
Перемещаем BaseRecipe
Перенеситье т-позу, и введите название расы
Задаём Wardrobe Slots
Укажите ссылку на расу (и, при необходимости, добавте её в глобальную библиотеку)
Переносим слоты тела
Если не добавляли слоты в индекс, нажмите на «Add to Global Index (Recommended)».
Перенесём соответвующие оверлеи (и, если попросят, также добавим их в глобальную библиотеку)
В резуьлтате должно получить вот так
Добавление персонажа на сцену
Всё что мы до этого делали было подготовкой к этому шагу. Настраиваем сцену (например добавляем плоскость, играющую роль земли). Перетаскиваем префаб UMA/Getting Started/UMADynamicCharacterAvatar в сцену (можно переименовать его). В инспекторе в компоненте Dynamic Character Avatar в поле Active Race выбираем нашу расу.
У меня по умолчанию не запустилась анимация (для базовых рас тоже, поэтому подозреваю что это недоработка). Глубоко этот вопрос пока не изучил, но сумел добиться чтобы она воспроизводилась. Для этого под спойлером Race Animation Controllers в списке Race Animators удаляем все элементы и добавляем новый, в Race указываем нашу расу, в Animator выбираем IdleTest-w-head.
Нажимаем на Play. У вас должен появиться персонаж которого мы собрали.
Добавление одежды
На всякий случай скажу что если надеть их не в игре, а в режиме редактирования, то их не нужно будет каждый раз заново надевать.
Сетка тела, может в некторых местах проступать через одежду. Есть два варанта как поступить: назначить в wardobe recipe слот (слоты) которые будут скрываться при применение этого рецепта. Или можно добавить сетку сокрытия.
В случае на скриншоте можно просто скрывать весь слот
Указываем вардроп-слот, связанные с котором слоты должны скрыться.
Но если одежда покрывает не весь слот (то есть скрыть слот не варант) то на помощь придет сетка сокрытия.
Создаём сетку сокрытия
Выбираем расу
Выбираем слот, и нажимает Begin Editing
Альтернативный способ, это сразу перенести слот части тела, которую нужно скрывать этой сеткой сокрытия, в поле Slot Data Asset, в моем случае это ноги (не шатаны).
Выделяем те части слота, которорые будем скрывать. Завершив, нажимаем на «Save & Return»
И в нашем вардро рецепте назначам нашу сетку сокрытия
Запускаем игру
Запустив игру и надев нужную деатль одежды (в нашем слчае штаны), мы теперь увидим что они не просвечивают.
Добавление и удаление одежды программно
Для этого нужно использовать методы компонента DynamicCharacterAvatar. Для добавления SetSlot и ClearSlot для удаления, после этого нужно вызвать метод BuildCharacter. Первый аргумент SetSlot это имя слота куда необходимо надеть шмотку. Полный список доступных слотов можно посмотреть в файле расы. Второй аргумент это имя файла нашего Waredrop Recipe. В ClearSlot нужно использовать только имя слота.
Первый аргумент в SetSlot излишен (имхо)
На мой взгляд, информация о том куда мы надеваем шмотку излишняя. По сути, значение первого аргумента SetSlot всегда совпадает с полем Waredrop Slot соответствующего Waredrop Recipe.