Blender Basics 4-rd edition/Chapter 16- Armatures
Содержание
Глава 16: Арматура
Автор: James Chronister
Оригинальный перевод: Юлия Корбут aka Balista
Переработка текста: Азовцев Юрий aka gumanoed
Использование арматуры для деформации меша
Все описанные ранее инструменты Blender великолепны для большинства случаев анимации объектов, кроме ситуации с анимацией движений персонажа или дерева, изгибающегося на ветру. Эти случаи требуют изменений формы меша, которые невозможно выполнить с помощью традиционных модификаторов. Мы можем деформировать меш двумя способами. Создать скелет и использовать его для деформации меша (арматура) или изменить положение вершин в режиме редактирования и создать слайдер, регулирующий их положение между начальным и конечным состоянием (ключ положения вершин - vertex keys). Эта глава описывает работу с арматурой. Система арматур в Blender находится в постоянном развитии. Мы поговорим лишь об основных вещах. Более подробную информацию вы сможете найти на b3d.mezon.ru и www.blender.org
Первое, что нам нужно сделать - создать меш с несколькими группами вершин в местах, где он будет сгибаться. Подойдет любой меш. Для получения дополнительного количества вершин вы можете экструдировать (extrude) или подразделить (subdivide) его. Но будьте осторожны, не создавайте вершин слишком много. Это может замедлить работу компьютера и, соответственно, скорость моделирования. Давайте используем цилиндр для создания руки. Я использую цилиндр с количеством образующих вершин по умолчанию - 32. Затем я переключаюсь в ортогональный вид спереди и, с помощью инструмента выделения прямоугольником ("B"), выбираю вершины верхней части цилиндра и экструдирую их вверх. Я предпочитаю использовать экструдирование вместо подразделения (subdivide) для минимизации количества вершин в меше. После экструдирования я немного масштабирую и уменьшаю диаметр получившейся части руки. | 100px |
100px | Теперь поместите курсор в самый низ созданной вами формы. Нажмите Shift-"A", выберите Add, Armature - Single Bone. Вы увидите кость, появившуюся на месте 3D-курсора. Перейдите в Режим Редактирования, нажмите клавишу "G" для захвата вершины кости и увеличьте ее длину до нужного размера. Для создания следующей кости нажмите "E" и экструдируйте ее из конца предыдущей. Если вы вышли за пределы 3D-окна, просто щелкните в любом места и затем еще раз нажмите "G" для перемещения конца кости в нужное место. Как и в случае с другими объектами для редактирования костей вы должны находиться в Режиме Редактирования. При работе с арматурой убедитесь, что у вас выделен конец одной из костей, а не вся арматура. После завершения расположения кости, нажмите Tab для выхода из режима редактирования. Проверьте арматуру еще раз и убедитесь, что все кости размещены именно так, как нужно. Для добавления дополнительных костей снова нажмите Tab, и перейдите в Режим Редактирования. Вы сможете экструдировать дополнительные кости из окончаний уже имеющихся. |
Следующим шагом будет создание связи Потомок-Родитель между мешем и арматурой, где меш будет потомком, а арматура - родителем. Удерживая клавишу "Shift", первым выберите меш, затем арматуру. Нажмите Ctrl-"P" для создания связи. В появившемся меню выберите опцию "Armature Deform" и "With Automatic Weights". Компьютер автоматически определит какие вершины какой костью будут деформироваться. Если автоматическое определение связи вершин с костями будет неверным - вы сможете позже это исправить. | 250px |
Для проверки работы только что созданной арматуры, выделите только арматуру и переключитесь с Объектного режима в режим "Pose". Выберите верхнюю кость и вращайте ее. Мешь будет деформироваться вместе с движением кости. Вращая нижнюю кость, вы будете вращать весь меш целиком.
|
200px |
Создание Сложных Цепочек Костей:
250px | Экструдирование костей, как мы это только что делали, хорошо работает для простых арматур. Если вам понадобится создать более сложный скелет, вам нужно освоить еще несколько вещей, кроме экструдирования одной кости из конца предыдущей. Наверняка, вы заметили, что первая созданная кость является Родителем для всех остальных костей системы и вы можете экструдировать не только из ее верхнего но и из нижнего конца. Проблема лишь в том, что экструдированная из нижней части кость в режиме Pose не будет связанна с ней родительской связью. Вы можете создавать различные арматуры и объединять их с помощью команды Ctrl-"J". Но в режиме Pose эти цепочки арматур так же не будут связанны родительской связью между собой. Как же это исправить? |
Первое что понадобится - знать название (Name) каждой кости. Вы можете в режиме Pose щелкать ПКМ по костям и имя каждой из них будет отображаться в левом-нижнем углу. Но гораздо удобнее видеть имена сразу всех костей, включив соответствующую опцию в разделе Object Data (теперь закладка выглядит как арматура). Пример на иллюстрации состоит из двух отдельных арматур, которые в объектном режиме были объединены командой Ctrl-"J".
При переходе в режим Pose эти две системы не двигаются совместно. В разделе Object Data на панели Display вы видите опцию Names - отображение имен костей на экране. Также здесь присутствуют опции формы отображения костей в сцене. Для исправления поведения двух арматур перейдите в раздел Bone, переключитесь в Режим Редактирования, определите название кости, которую хотите сделать Основным Родителем для остальных и выберите ее на панели Relations в поле Parent. Возможно вам понадобиться активировать опцию Connected.
Подсказки для Анимации:
При анимации арматуры есть несколько приемов, которые упростят вашу жизнь. Они обсуждались в главе об анимации, но мы еще раз вспомним их. При анимации вам нужно будет работать с большим количеством костей, имеет смысл воспользоваться инструментом Автоматического Создания Ключей Анимации (Automatic key-framing). Также будет полезным использование графического виджета вращения и шкалы времени для перехода между кадрами. Возможно, будет полезным еще раз просмотреть главу об анимации. Ниже на иллюстрации указаны основные инструменты, которые будут использоваться при анимации арматуры:
Создание Групп Вершин Костей
Использование опции автоматического назначения весов влияния перемещения кости на меш (Automatic Weights) отлично работает для простых цепочек костей и простых форм меша. Но когда кости или вершины меша расположены близко друг к другу либо очень далеко, у Blender могут возникнуть сложности с решением какие кости на какие вершины должны влиять. На примере справа вы можете видеть, как вершины меша на одном пальце были связаны с костью из другого. Мы можем избежать этого, используя Группы Вершин. | 200px |
150px |
Включите отображение названий костей, чтобы можно было видеть для какой кости вы создаете эффект на меше. Выделите меш и перейдите в режим редактирования. Редактирование групп вершин для костей похоже на работу с обычными группами вершин, отличие лишь в уже имеющихся названиях каждой группы и их связи с соответствующей костью. Все это было сделано автоматически при создании связи между мешем и арматурой. Если вы перейдете в раздел Object Data (мы все еще находимся в Режиме Редактирования меша), то увидите на панели Vertex Groups список всех имеющихся групп вершин на меше. Вы также увидите стандартные кнопки "Assign" (назначить) и "Remove" (снять назначение) под списком групп вершин.
Для исправления проблемы с нашем мешем, сначала нужно выделить проблемные вершины, затем выделить группу вершин, к которой они ошибочно были назначены и нажать кнопку "Remove". После этого данные вершины больше не будут связанны с этой группой вершин. В моем случае они были ошибочно связанны с костью "Bone.004". Я выбираю группу вершин, с которой они в действительности должны быть связаны (Bone.010) и нажимаю кнопку "Assign". Выйдите из режима редактирования, выберите арматуру и включите режим Pose для проверки работы системы арматур после изменений. | 400px |
Вершины, расположенные близко к месту соединения пальцев, могут принадлежать сразу нескольким группам. Вы можете использовать слайдер "Weight" для определения степени влияния кости на деформацию меша, но обычно используется значение 1.000.
Вам нужно вернуть арматуру из некоторого положения в изначальное? В разделе Object Data на панели Skeleton вместо "Pose Position" нажмите кнопку "Rest Position". | Файл:BlenderBasics 4rdEdition2011-130 4.jpg |
Использование Инверсной Кинематики (IK)
Инверсная Кинематика используется для манипуляции скелетом простым перемещением (G) конечной кости, при этом все остальные связные кости двигаются за ней. Инверсная Кинематика постоянно развивается и имеет большое количество опций в зависимости от необходимых вам параметров поведения скелета. Посетите сайты www.blender.org и b3d.mezon.ru для более подробного знакомства с ней.
300px | Для использования Инверсной Кинематики выберите кость в конце цепочки, перейдите в раздел Bone Constraint и добавьте ограничитель Iverse Kinematics. Вы можете задавать количество костей в цепочке, для которых будет производиться расчет движения (Chain Length), а также можете выбрать Цель (Target), перемещением которой будет задаваться движение скелета (например Пустышку). Здесь есть и другие опции, включая Influence (влияние, количество эффекта). После добавления ограничителя вы можете перемещать ("G") крайнюю кость и остальные кости в цепочке будут следовать за ней. |
РобоЧувак Говорит: Используйте команду Ctrl-"A" для сброса параметров поворота и масштабирования костей. Это поможет при работе с ограничителем Inverse Kinematics! |
Использование Ограничителей Rotation (поворота):
При анимировании объекта (как, например, палец), вам наверняка захочется ограничить направления и углы поворота его частей. Иначе при создании ключей анимации могут получаться неестественные позы. Использование ограничителя Limit Rotation может значительно помочь в этом. На примере справа я добавил ограничитель к двум верхним костям пальца, установив ограничения поворота по осям Y и Z (0 градусов) и установил ограничение поворота от 0 до -60 градусов по оси X. Это отлично работает, потому что я переключил опцию Convert со значения "World Space" в "Local Space". | Файл:BlenderBasics 4rdEdition2011-131 2.jpg |
Ограничитель Copy Rotation (копирование поворота)
Ограничитель Copy Rotation может значительно упростить процесс анимации арматуры. Для примера я создал отдельную арматуру из одной кости (не в составе существующей арматуры) и связал ее с арматурой руки (связь типа Потомок-Родитель). Эта кость может быть расположена где угодно. Я расположил кость над пальцем, которым она будет управлять. Установите и настройте ограничители поворота, как мы это делали чуть раньше. Затем, добавьте ограничитель "Copy Rotation" к каждой кости, которая будет копировать движения управляющей. В поле Taret выберите имя управляющей кости. В моем случае, для правильной работы пришлось инвертировать (Invert) копируемое движение. | Файл:BlenderBasics 4rdEdition2011-131 3.jpg |