Главная Новости

Урок по смене одежды 3D модели персонажа. Модульные персонажи или как переодеть своего героя. Мультиматериалы в Blender и Unity 3D. Как заменить часть 3D модели персонажа. Мультитекстуры (несколько текстур) в Blender и Unity3D

Опубликовано: 28.09.2018

видео Урок по смене одежды 3D модели персонажа. Модульные персонажи или как переодеть своего героя. Мультиматериалы в Blender и Unity 3D. Как заменить часть 3D модели персонажа.  Мультитекстуры (несколько текстур) в Blender и Unity3D

UNITY MINI #1 || НОВОСТИ || СОЗДАЕМ НОВУЮ ОДЕЖДУ FUSE

В данной статье рассказывается, откуда появляется несколько материалов у 3D модели, импортированной в Unity 3D, и как их превратить в один. Также описывается создание мультиматериалов в Blender’е для использования в игровых движках. Во второй части статьи описываются модульные статичные и анимированные игровые 3D объекты на примере персонажей,  где модульность позволяет быстро переодеть персонажа и заменить части игровых объектов, например, элементы одежды или конечности, на лету в процессе игры.



Как известно, все дороги ведут в Рим, а к использованию мультиматериалов, как минимум, две. Первая дорога берет свое начало с вопроса «Импортировал 3D модель в Unity 3D, а для нее вместо одного материала создались два (три, четыре и так далее).» Действительно, откуда взялись несколько материалов? Появление нескольких материалов связано с: а) экспортом из 3D редактора за один раз нескольких 3D моделей (или 3D моделей, состоящей каждая из нескольких 3D моделей), каждая из которых имеет свой материал и б) назначением различным частям 3D модели своего материала.


Unity3d. Создание игры. Урок 1. Создание персонажа.

Игровой объект (экспортированный из 3 D редактора и/или импортированный в игровой движок) представлен несколькими 3D моделями

Чтобы понять, как переодеть персонажа, начнем с простого. Данный случай более-менее понятен: 3D дизайнер (моделлер) создаёт 3Д персонажа, состоящего, например, из двух 3D моделей: тела 3Д персонажа и глаз. Или 3D моделлер создает 3D модель, части которой разрознены.

На рисунке показан игровой объект, 3D модель sci-fi устройства, состоящего, на самом деле, из одиннадцати 3D моделей (всего объектов на сцене 16, вычитаем 4 источника света и одну камеру и получаем 11).

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

На рисунке показана та же sci-fi 3D модель в Unity 3D

В редакторе сцены в Unity я специально выбрал 3 верхних излучателя, чтобы продемонстрировать, что им всем назначен один и тот же материал (если выбрать несколько моделей с разными материалами, то они не будут отображаться  в окне Инспектора, как на рисунке выше, в моем случае – в правой части интерфейса GUI Unity 3D).

Общее количество созданных в Unity3D материалов равно пяти — все логично.

Рассмотрим еще один объект – 3D персонажа, созданного в утилите для создания 3D персонажей Makehuman , обзор и использование которого описан в статье Быстрый старт из MakeHuman в Unity3D. Создание low poly и high poly модели 3D персонажа. Запекание карты нормалей в Blender .

На рисунке показан персонаж, созданный в MakeHuman, который состоит из двух 3D моделей: глаз и тела. Карта нормалей запечена с high poly модели на lowpoly 3D модель, а сам процесс описан в упомянутой выше статье про Makehuman

Как видно на рисунке, тело и глаза 3Д персонажа выполнены отдельными 3D моделями (каждая из которых может состоять из нескольких мешей, например, глаза, как в данном случае, но об этом чуть позже) и привязаны к арматуре/скелету 3Д персонажа. По умолчанию при экспорте из MakeHuman глазам назначается свой материал (в данном случае, с именем Eye_brown), а телу – свой материал (young…).После импорта в Unity также будут созданы два материала. Все просто и не вызывает недоумения, откуда взялся еще один материал, верно?

На рисунке показан 3D персонаж, созданный в Makehuman импортированный в Unity. Персонаж все также состоит из двух 3D моделей, а для глаз и тела 3В персонажа созданы собственные материалы (показано только для глаз)

Помимо модели глаз отдельными моделями может быть создан язык, элементы одежды, зубы и т д. В Blender’е такие отдельные 3D модели можно выделить Правой Кнопкой Мыши в режиме объекта. Выделенный 3D объект будет обведен желтой линией. Однако, как было сказано выше, модель языка, волос и т.д. могут быть добавлены к 3D модели тела персонажа, добавившись к нему в виде меша, в этом случае при клике на них правой кнопкой мыши будет выделена вся 3D модель целиком, которой принадлежит данный меш.

Игровой объект представлен одной 3D моделью

Но откуда появляются «лишние» материалы, если в Blender’е или Unity выделяется  сразу весь 3Д персонаж, а не отдельные его части (в Blender’е — Правой Кнопкой Мыши, а в Unity — Левой Кнопкой Мыши).

Все дело в том, что если различным частям 3D модели назначен свой материал, как было показано выше, а в Blender’е объединить эти 3D модели в одну 3D модель, то у результирующей модели будет назначено несколько материалов, так называемые, мультиматериалы.

На рисунке показано объединенное в одну 3D модель sci-fi устройство

Как можно заметить на рисунке, в окне материалов 3D модели назначено пять материалов, которые ранее принадлежали отдельным частям устройства – отдельным 3D моделям.

На рисунке показана 3D модель, все части которой, ранее представленные разрозненными 3D моделями, объединены в одну (выделено оранжевым)

Эти же пять материалов мы видим и в Unity, причем, если раньше, когда модель состояла из нескольких 3D моделей (на рисунке выше выделены зеленым), мы могли выбрать каждую отдельную часть нашего устройства, то теперь модель состоит из одной 3D модели и выбрать ее можно только целиком.

Избавляемся от мультиматериалов, превращаем их в один материал для всего игрового объекта

В случае если 3D персонаж представлен отдельными 3D моделями и вы хотите оставить их разрозненными, но чтобы у всех 3D моделей остался всего лишь один материал (не важно, в Unity3D или Blender’е), то назначьте всем 3D моделям один и тот же материал (остальные материалы можно удалить). Единственным условием использования одного материала является использование одной текстуры для всех 3D моделей. В случае если для отдельных 3D моделей используется одна текстура (сейчас говорим про диффузную карту, но к карте нормалей, карте затенений и т.д. это тоже относится), как это сделано у 3D моделей, созданных в редакторе 3D персонажей Fuse, то проблем с текстурами и их отображением после объединения 3D моделей не будет. Если же каждой 3D модели назначена своя текстура, то необходимо  собрать все текстуры в одну, согласно подготовленной должным образом uv развертке, как описано далее в статье.

В другом случае, когда 3D персонаж представлен одним 3D объектом/3D моделью (как это получилось выше с объединенной моделью на одном из рисунков выше, когда у 3D модели появилось пять материалов), а ее составным частям (группам вершин или мешам целиком) назначены различные материалы, то вы можете назначить всем составным элементам модели один материал. Чтобы это сделать в Blender’е выберите 3D модель Правой Кнопкой Мыши, перейдите в режим редактирования мешей, нажав клавишу ‘Tab’, и нажмите клавишу ‘A’, чтобы выбрать все вершины модели, после чего нажмите кнопку ‘Assign’ в меню материала, который хотите назначить всем выбранным вершинам 3D модели. Остальные материалы можете “заминусовать”, т.е. удалить с 3D модели. Про подготовку текстур и uv развёртки уже упоминалось чуть выше и будет более подробно описано далее.

На рисунке показан процесс назначения материала выбранным вершинам 3D модели (зеленым), а красным показан процесс удаления материала с мешей 3D модели

Объединение нескольких 3D моделей в одну

Как получить одну 3D модель из нескольких, т.е. превратить разрозненные 3D модели в меши одной 3D модели было показано чуть ранее в данной статье. Например, в Blender’е преобразование разрозненных элементов игрового объекта в одну 3D модель осуществляется путем объединения нескольких 3D моделей в одну 3D модель путем добавления одной 3D модели (или нескольких моделей) к другой. Для того чтобы в Blender’е объединить две модели, необходимо сначала Правой Кнопкой Мыши выбрать одну 3D модель и затем при помощи той же Правой Кнопки Мыши, но с зажатой клавишей Shift, добавить к выбору вторую модель (и так для всех остальных моделей). После чего останется лишь нажать сочетание клавиш Ctrl+J и все модели добавятся к последней выбранной (добавленной к выделенным) 3D модели. Как было сказано выше, все имеющиеся у объединяемых 3D моделей будут назначены мешам или элементам мешей, в частности, вершинам . Если у добавляемых 3D моделей не назначены материалы, то им будет назначен материал 3D модели, которая была выбрана последней (даже если ей был назначен материал по умолчанию не отображаемый в списке материалов в Blender’е). Если материал есть у одной 3D модели (не важно, какой по счету она была выбрана), то всем объединенным моделям без материалов будет назначен единственно существующий материал.

Если в качестве примера рассмотреть модель 3D персонажа/3D модель человека, изначально состоящего из двух 3D моделей (3D модель тела и 3D модель глаз), например, созданного в программе MakeHuman, то, в большинстве случаев, в качестве целевой 3D модели, в состав которой будут добавляться остальные 3D модели, стоит выбрать 3D модель тела 3Д персонажа, т.е. 3D модель глаз следует добавить к 3D модели тела. Следовательно, материал, назначенный телу 3Д персонажа, удалять не нужно, а удалить требуется материал, назначенный 3D модели глаз. Как было сказано выше, удалять материал не обязательно, достаточно его просто не использовать: материалы ,которые не были назначены в Blender’е ни одной вершине или 3D модели не экспортируются вместе с моделью и не отображаются в Unity3D.

Как было сказано выше, если каждому материалу (назначенному отдельной 3D модели) назначена своя текстура, то после комбинирования нескольких 3D моделей и описанного выше удаления материалов, развёртки скомбинированных моделей также будут скомбинированы в одно uv пространство и могут наложиться друг на друга, а вот текстура останется лишь одна — текстура того материала, которая была у 3D модели (целевой модели), к которой были добавлены остальные 3D модели.

После объединения моделей вам понадобится переместить uv развертку присоединенных моделей на свободное место uv пространства целевой 3D модели (к которой они были добавлены) или создать uv развертку для присоединенных 3D моделей заново (а, возможно, и для всех составных мешей 3D новой объединенной модели, например, когда для расположения всех элементов на одной текстуре не хватает места). Посмотреть назначенные 3D модели uv развертки в Blender’е можно во вкладке UV Maps, если в меню свойств выбрать вкладку информации об объекте (Object data).

На рисунке показаны uv развертки объединенных 3D моделей: слева – uv развертка тела, в справа – глаз

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

На рисунке показана откорректированная uv развертка глаз (изменены масштаб и расположение развертки)

Например, если вы добавили глаза и зубы к телу 3D персонажа и на существующей текстуре тела осталось место, чтобы расположить там глаза, то uv развертку глаз вам нужно будет просто переместить, например ,как было продемонстрировано выше, а текстуру глаз перенести из отдельного файла в файл с текстурой тела, в соответствии с расположением uv развертки глаз на объединенной развертке.

На рисунке показаны uv развертки объединенной 3D модели: слева показано наложение двух разверток друг на друга и их пересечение (выделено красным), справа показаны те же развертки (наложенной на текстуру тела), но после корректировки uv развертки глаз 3Д персонажа и добавление текстуры глаз у текстуре тела (обведено зеленым кругом)

Однако бывают исключения, когда после объединения 3D моделей в одну, uv развертки обновлять не требуется. Примером такого исключения может служить 3D модель персонажа, созданного в конструкторе персонажей Fuse, разработанного компанией Mixamo, ныне принадлежащей компании Adobe.

На рисунке показана программа для создания 3D персонажей Fuse

Созданный в Fuse 3D персонаж представлен отдельными 3D моделями: 3D моделью ботинок, 3D моделью штанов, 3D моделью торса и так далее, но для всех моделей используется только один материал и одна текстура (диффузная карта), одна карта нормалей, одна карта отражений и т.д. При импорте в Unity3D автоматически создается восемь материалов. На рисунке ниже показан описанный выше пример, когда нескольким разным 3D моделям, являющимися частями одного игрового объекта, например, 3Д персонажа, оставляется один назначенный материал.

На рисунке показан 3D персонаж, созданный в Fuse CC от Adobe и импортированный в Unity3D через промежуточный формат Wavefront .obj.

Почему же можно использовать лишь один материал? Все дело в том, что uv развертки элементов 3D персонажа, рассмотренного выше, не перекрывают друг друга, а текстура скомпонована таким образом, что на ней размещаются текстуры всех отдельных элементов модели. Для 3D моделей Adobe Fuse CC процесс объединения 3D моделей в одну может быть проведен наиболее безболезненно, как было описано выше, т.е. необходимо лишь объединить 3D модели в одном из 3D редакторов, например, в Blender’е или 3ds Max. В игровом движке вы вольны использовать один материал или по количеству текстур, частей модели и даже больше.

На рисунке показан персонаж, созданный в Fuse и импортированного в Blender, после чего объединенный в одну 3D модель

При стандартных настройках экспорта из Fuse текстурные карты (диффузные, карта нормалей и т.д.) занимают лишь половину текстуры, что может быть использовано для объединений текстурных карт (диффузной карты — с диффузной, карты нормалей — с картой нормалей и так далее) разных 3D моделей, например, 3D моделей двух (и более) 3D персонажей, одной и той же 3D модели или частей 3D модели, чтобы получить текстурный атлас (АТЛАС текстур).

На рисунке показаны текстуры двух разных 3D моделей персонажа, объединенные в один атлас текстур

Для использования атласа текстуры, такого как на рисунке, необходимо создать для каждого 3Д персонажа свой материал, назначить каждый из них своему персонажу (или всем 3D моделям, относящихся к одному 3Д персонажу), после чего останется лишь назначить объединенную текстуру каждому материалу и выставить соответствующие параметры тайлинга и оффсета в настройках каждого материала.

Более подробно данная возможность описывается в статье От тайлинга и смещения до атласа текстур на примерах смены обложки для книги и текстуры одежды и кожи персонажа .

Сколько использовать материалов, один или несколько?

Использование одного или нескольких материалов для одной модели, но разных ее частей, зависит от того, хотите ли вы придать материалу конкретной части  модели (без ее подразделения на отдельные 3D объекты) определенные свойства, например, отражение или специфический блеск хромированным деталям вашего 3D киборга и т.д. либо хотите использовать для элементов игрового объекта отдельные шейдеры. Необходимость отдельного материала у элемента игрового объекта также позволяет легко и безболезненно замещать один элемент игрового объекта на другой, например, для смены гардероба персонажа или для создания модульного оружия или устройств. Обычно 3D модель персонажа стараются делать единым мешем. Исключение могут составлять, например, глаза персонажа, поскольку обладают свойствами материала, отличного от свойств тела персонажа. Еще к таким исключениям относятся 3D модели, материал которых предполагается перемещать относительно uv развёртки, например, для создания льющейся воды водопада, описываемого в соответствующей статье. Создание водопада в Blender и анимирование воды посредством смещения текстуры и карты нормалей в Unity3D .

Одним из примеров 3D персонажей, состоящих из одной 3D модели (условно), являются 3D персонажи, выходящие с конвейера генератора персонажей Autodesk Character Generator .

В отличие от Fuse, тело персонажей персонажи, созданные в Autodesk Character Generator, (лоуполи и crowd) представлены одной 3D моделью. Также генерируются дополнительные 3D модели для “субпродуктов”: вторая и третья 3D модель – левый и правый глаза, четвертая и пятая модель – слезные железы и шестая и седьмая 3D модели – верхняя и нижняя челюсти.

На рисунке показан сгенерированный в Character Generator 3D персонаж, импортированный в Unity 3D

В данном случае модель сгенерирована сразу в двух версиях – основной и LOD (crowd в терминологии Autodesk), а также включает объект свет (Lights) и скелет(master). LOD можно отключать через mesh Renderer, либо собрать в отдельный LOD в Blender’е (версия 2.76b отлично справляется и импортом моделей из Character Generator, в отличие от 2.75), либо собрать отдельный префаб для основной 3D модели человека и отдельный — для LOD. Также при создании префаба всегда можно удалить объекты света. На рисунке можно видеть, что генератор персонажей генерирует одну текстуру, на которой собраны все элементы персонажа.

На рисунке показана uv развертка тела 3D модели человека, созданного в Autodesk Character Generator (вверху). Внизу на рисунке показана uv развертка всех частей 3D человека, собранных в одну 3D модель

Если объединить uv развертки всех 3D моделей, из которых состоит 3Д модель человека, сгенерированный программой от Adobe, в одну и наложить их на создаваемую генератором текстуру (diffuse map, Albedo), то получится следующая картинка.

На рисунке показаны uv острова различных частей персонажа, скомбинированные на одной uv плоскости и наложенные на диффузную карту

3D

Один материал для всего 3D персонажа и представление 3D персонажа одной 3D моделью  практикуется при создании игровых объектов (не только персонажей) уже давно, однако в играх AAA класса игровые объекты, как правило, имеют несколько материалов, несколько текстур и представлены несколькими 3D моделями, что обусловлено желанием порадовать глаз пользователя отличным рендером основных элементов сцены и главных героев.

Так как переодеть персонажа? Одна 3D модель с единым мешем, 3D модель с несколькими мешами и несколько 3D моделей. Что выбрать?

Так как же правильно моделировать игровые объекты? Делать ли игровой объект состоящим из нескольких 3D моделей или из одной 3D модели, представленной одним целиковым мешем или состоящей из нескольких мешей?

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

Рассмотрим плюсы и минусы таких игровых объектов на примере 3D моделей персонажей.

3D персонажу, состоящему из нескольких 3D моделей, в плюсы стоит записать возможность замены его частей в процессе игры без необходимости загрузки новой 3D модели. Чтобы понять, о чем здесь говорится, возьмем 3D модель персонажа, созданного в Adobe Fuse CC.

Во время игрового процесса, например, в играх жанра RPG (role-playing game, ролевая игра), 3D персонажу зачастую помимо смены оружия предоставляется возможность переодеваться. Если персонаж меняет одну куртку на другую, геометрия которых не сильно отличается друг от друга, то в этом случае можно обойтись лишь сменой материала или текстуры (а также карты нормалей, отражения, затенения и т.д.) для одной из частей модели одежды, например, куртки, как было показано в статье От тайлинга и смещения до атласа текстур на примерах смены обложки для книги и текстуры одежды и кожи 3D персонажа . Если же заменяемые части 3D персонажа значительно отличаются друг от друга, то выходом может стать замена отображаемой в данный момент 3D модели на другую 3D модель. В обоих случаях таким элементам игрового объекта понадобится свой материал, но во втором случае он еще и должен быть выполнен отдельной 3D моделью.

На рисунке показана 3D модель девушки, подготовленная для замены одежды на лету (центральная часть рисунка). В нижней части рисунка, слева, показана та же 3D модель, но с разнесенными по оси x частями, который могут быть заменены, а именно, волосы и куртка

Как можно заметить на рисунке на скомбинированном персонаже 3D модели волос перекрывают друг друга, как и 3D модели курток. Как было сказано выше, управляя компонентом Mesh Renderer, можно скрывать или показывать необходимые элементы одежды 3D персонажа.

На рисунке отображение двух вариантов волос и второй кожаной куртки было скрыто посредством отключения у них компонента Mesh Renderer

Теперь, отключив Mesh Renderer у светло-коричневой куртки, и включив его у одного варианта волос и темно-коричневой куртки, мы получим переодетого 3D персонажа, который еще и сменил прическу.

На рисунке показаны два 3Д персонажа, внешний вид которых был изменен лишь путем быстрой замены одних составных частей (модулей) на другие

В случае со статическими объектами, например, 3Д персонажами без скелета и рига (такие своеобразные люди, превращенные в статуи Медузой Горгоной) все достаточно просто, достаточно лишь поместить одну 3D модель на сцену в позицию существующей 3D модели и скрыть ее. Как было сказано выше, когда наступает время смены модулей модели, остается лишь заменить одну 3D модель на другую.

Итак основы того, как переодеть 3Д персонажа, я надеюсь, вы уже поняли. Давайте рассмотрим проблемы со сменой материалов в Unity3D и способы их решения в Blender.

Модульные 3D персонажи и затенение после разделения на 3D модели

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

На рисунке показаны 3D модели персонажа. Слева направо: неразрезанная модель, разрезанная модель в области поясницы и плеч, она же в режиме редактирования вершин меша (немного удалена от камеры) и последняя — высокополигональная 3D модель

Получается, что применение метода Гуро к разрезанной 3D модели, отличается от неразрезанной модели. Почему? Потому что изменилось направление нормалей у вершин, расположенных на границе разреза модели. Рисунок ниже прекрасно это демонстрирует.

На рисунке показано отображение нормалей для неразрезанной модели (слева) и разрезанной модели (справа)

На рисунке видно, что теперь для каждой из двух вершин-дубликатов, имеющих одинаковые координаты и находящихся в месте разреза, рассчитывается своя нормаль. Обратите внимание, что слева из одной вершины выходит по одной нормали, а справа – в месте разреза – по две нормали. Именно из-за этого и происходит  пересчет затенений для данных участков 3D модели.

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

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

Запекать карту нормалей можно как на уже разделенную модель, так еще и не на разделенную модель на отдельные части (самостоятельные 3D модели).

На рисунке показан процесс запекания карты нормалей с hogh poly модели на составные части человека. Зеленым показаны кнопки включения отображения карт нормалей. Желтым показан флажок, отвечающий за очистку изображения, в которое происходит запекание карт нормали, перед запеканием следующей карты

Теперь запеченные карты нормалей можно применять на соответствующие 3D модели.

На рисунке Показаны 3D моделей персонажей. Слева направо: единая 3D модель с наложенной картой нормалей, снятой для модульного персонажа; единая 3D модель с “родной” картой нормалей; персонаж, состоящий из нескольких 3D моделей (модульный) с картой нормалей, запеченной для целикового персонажа; и последний – модульный персонаж с родной картой нормалей, запеченной по частям с high poly модели на разрезанную на куски 3D модель

  Анимация и модульные 3D персонажи

  Но как быть с анимированными игровыми объектами, например, 3Д персонажами, ведь каждая деталь 3Д персонажа привязана, как минимум,  к одной кости скелета, с назначенными соответствующим вершинам весами? Простая замена одной 3D модели на другую, например, ботинок на сапоги, в большинстве случаев приведет к артефактам во время анимации, а то и к ее отсутствию у замещающей 3D модели. Значит, следует заранее продумать все возможные варианты заменяемых и замещающих элементов 3Д персонажа, привязать их к скелету и сделать для них риг. Одним из способов для достижения данной цели является объединение 3D моделей в одну и применение ко всей модели автоматического рига с последующей доводкой весов для каждого отдельного объекта — как это сделано в Blender – через раскрашивание вершин мешей.

На рисунке показано назначение арматуры (скелета) персонажу в Blender’е с назначением весов, рассчитывающихся автоматически

Для того чтобы назначить 3D модели арматуру, выберите ее Правой Кнопкой Мыши, затем зажмите клавишу Shift и тойж же Правой Кнопкой Мыши добавьте арматуру к выделенной 3D модели. Затем нажмите сочетание клавиш Ctrl+P и выберите в открывшемся меню вкладку “With Automatic Weights”.

Для того чтобы перейти в меню назначения/редактирования весов вершинам меша, выберите арматуру Правой Кнопкой Мыши и нажмите сочетание клавиш Alt+Tab, чтобы перейти в режим редактирования позы персонажа. Теперь выберите 3Д персонажа Правой Кнопкой Мыши и нажмите сочетание клавиш Ctrl+Tab, чтобы перейти в режим раскрашивания весов.

На рисунке показан 3Д персонаж в Blender’е в режиме раскрашивания весов меша

Выбрав одну из костей, вы можете посмотреть и отредактировать вершины, на которые распространяется действие скелета кости. Красный цвет в режиме раскрашивания весов модели указывает на то, что вершине назначен вес, равный единице. Это значит, что окрашенная в красный цвет вершина переместится вслед за костью ровно настолько, насколько переместится сама кость. Синий цвет – вес вершины равен нулю, т.е. на данную вершину кость не оказывает никакого влияния. Для улучшения качества риггинга рекомендуется использовать группы вершин (vertex groups).

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

На рисунке показан 3Д персонаж после возращения независимости каждой его части, т.е. после выделения частей 3Д персонажа в отдельные 3D модели. Здесь я выгнул 3Д модель персонажа далеко назад, как это произошло с профессором Хьюбертом Фарнсвортом в одном из эпизодов Футурамы, чтобы продемонстрировать присутствие риггинга и скиннинга после разделения частей персонажа на отдельные 3D модели

Как разделить 3D модель, состоящую из единого меша?

Для того чтобы в Blender’е отделить часть 3D модели, например, набор вершин/полигонов или меш целиком, необходимо выделить их в режиме редактирования (клавиша ‘ Tab ‘) в Blender’е и нажать клавишу ‘ P‘, что приведет к выделению выделенных элементов меша в отдельную 3D модель.

Теперь, работа с анимированным 3D персонажем (или любым другим игровым объектом) ничем не отличается от работы с описанным выше статичным 3D персонажем.

Человек-невидимка

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

В данной статье не рассматривается способ назначения/привязки составных частей игрового объекта, например, робота, автомобиля или боевого меха, костям скелета, непосредственно в Unity. Это – тема для отдельной ///статьи.

 

Плюсы и минусы

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

Использование нескольких материалов для 3D моделей или их составных частей не всегда является плюсом, ведь  разработчик может быть ограничен ресурсами и вычислительными мощностями устройств, на которые нацелен его проект/игра. Да и использование отдельных 3D моделей для одного игрового объекта также может привести к сильной загрузке CPU и GPU, особенно, если таких объектов очень много, а оптимизацей в проекте и не пахнет. Не хотелось бы заканчивать статью не негативной ноте, так что скажем так: если железо позволяет, то персонажей стоит создавать модульными, чтобы иметь возможность заменять его части и части его одежды не только через смену текстуры и материала, а еще и через смену соответствующей части 3D персонажа, которая в отличие от предыдущего способа, может иметь отличную от замененной части геометрию. Так можно заменить даже голову персонажу, сделав его совсем другим человеком. ???? Или не человеком вовсе…

Набор 3D персонажей, созданных из частей всего лишь трех персонажей, включая зомби

Автор Максим Голдобин (aka MANMANA)

[email protected]

Post Views: 18 289

rss