29.03.2019

Создание скелета под анимацию персонажа. Boy


В предыдущих уроках мы ознакомились с методами прямой и обратной кинематики, а также рассмотрели построение иерархий с помощью системы костей Bones. При этом мы убедились, что получение анимации любого персонажа предполагает создание для него иерархической структуры костей Bones, связывание данной костной структуры с моделью и анимирование последней. Выполнение всех их операций требует огромных затрат времени даже в случае самого простого персонажа (то есть персонажа, имеющего простой скелет) и элементарного движения. Очевидно, что при усложнении скелетной структуры персонажа и характера его движения трудоемкость создания анимации возрастает в разы. Поэтому при анимировании реальных существ чаще всего пользуются дополнительными инструментами, самым мощным из которых является модуль Character Studio (ранее существовал как дополнительный модуль, но начиная с седьмой версии интегрирован в пакет). Простым примерам подготовки анимации с участием трехмерного персонажа средствами Character Studio мы и посвятим данный урок. Создание анимации с применением модуля Character Studio требует прохождения четырех шагов: построение скелета, помещение его внутрь модели, связывание скелета с моделью (то есть надевание на скелет оболочки) и анимирование модели.

Построение скелета

За формирование костной структуры в Character Studio отвечает тип объектов Biped (Двуногий) категории Systems (Системы) панели Create (Создать) - рис. 1, обеспечивающий моделирование скелета практически любого персонажа с четырьмя конечностями и определение характера его поведения. Технология формирования скелета напоминает создание сплайнов: нужно щелкнуть левой кнопкой мыши в одном из окон проекций в точке, ограничивающей скелет снизу, а затем, не отпуская левой кнопки мыши, протащить ее вверх до точки, ограничивающей скелет сверху. В итоге будет сгенерирована заданная в программе по умолчанию структура костей типа Skeleton (рис. 2) - при необходимости тип скелета в процессе создания может быть изменен через свиток Body Type .

Рис. 2. Первоначальный вид скелета (тип Skeleton )

Полученная система костей представляет собой скелет двуногого персонажа, то есть персонажа, имеющего некоторое количество шейных позвонков и позвонков торса, две руки и две ноги с определенным количеством суставов и т.д. Анатомическое строение скелета несложно изменить, что и осуществляют сразу после его создания путем корректировки параметров свитка Create Biped (рис. 3). Так, можно удалить кости рук (флажок Arms ), изменить количество позвоночных (Spine Links ) и шейных (Neck Links ) костей, количество костей для ног (Leg Links ). А также установить число пальцев на руках и ногах (Fingers и Toes ), количество фаланг пальцев на руках и ногах (Fingers Links и Toe s Links ) и при необходимости добавить нестандартные типы костей для персонажей с хвостом или гривой (Tail Links , Ponytail 1 Links и Ponytail 2 Links ). Данные параметры могут быть изменены как при создании скелета (то есть сразу после выбора Create =>Systems =>Biped ), так и при его редактировании. Последнее производится на панели Motion (а не на панели Modify ), где вышеназванные параметры костной структуры окажутся доступными через свиток Structure . Данный свиток появляется лишь после включения в свитке Biped панели Motion режима фигуры (Figure Mode - рис. 4), предназначенного специально для настройки скелета. Режим Figure Mode может быть включен после выделения любой из костей скелета.

Рис. 3. Свиток CreateBiped

Рис. 4. Активация режима FigureMode

Помещение скелета внутрь модели

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

Для совмещения скелета с моделью выделяют его Root-объект (он в скелете по умолчанию всегда фигурирует под имением Bip01) и перемещают последний непосредственно на модель, после чего масштабируют скелет обычным образом и подгоняют высоту персонажа, добиваясь того, чтобы пропорции скелета примерно соответствовали сетке персонажа. Затем вручную корректируют размеры (длину и толщину) и положение каждой из костей, исходя из анатомических особенностей существа и добиваясь более точного совмещения скелета с персонажем. Величина каждой из костей изменяется при помощи стандартного масштабирования прямо в режиме Figure Mode , положение и ориентация костей - путем обычного вращения и перемещения, а корректировка длины возможна лишь при активизации дополнительного режима - режима резиновой нити (Rubber Band Mode ) - рис. 5, который может быть выбран только в режиме фигуры. После переключения в Rubber Band Mode перемещение кости вниз будет приводить к ее вытягиванию, а вверх - наоборот, к ее укорачиванию. Обратите внимание на следующие моменты:

  • в процессе совмещения скелета с моделью придется неоднократно включать/отключать режим Rubber Band Mode (сделать это можно только при выделенном Root-объекте) - см. рис. 5. Это необходимо, поскольку изменение длины костей производится лишь при включенном режиме Rubber Band Mode , а вращение, масштабирование и перемещение костей - при отключенном;
  • выделять кости в окнах проекций довольно сложно в силу большого числа объектов в них (вдобавок объекты еще и наложены друг на друга), поэтому, как правило, данную операцию производят в окне Select By Name ;
  • если дважды щелкнуть по любому родительскому элементу Biped , то все его дочерние элементы тоже будут выделены, а значит, таким способом удобно выделять все дочерние элементы в иерархии ног и рук;
  • поскольку скелет симметричен, то многие операции требуется проводить вначале для определенной кости левой части скелета, а потом для соответствующей кости правой (или наоборот). Для ускорения выделения соответствующих костей удобнее использовать кнопки Symmetrical (Симметрично) и Opposite (Противоположный) - рис. 6, находящиеся в свитке Track Selection панели Motion . Нажатие любой из названных кнопок при выделенной кости левой части скелета приводит к выделению соответствующей кости правой части скелета, за исключением того, что в случае кнопки Opposite при этом снимается выделение с исходной кости (то есть кости в левой части скелета);
  • настроив параметры одной из конечностей (например, ее положение), совсем необязательно повторять настройки для второй конечности - гораздо быстрее их скопировать, воспользовавшись операцией Copy /Paste . Для этого выделяют настроенную конечность, затем на панели Motion развертывают свиток Copy \ Paste (Копировать/Вставить) и щелкают на кнопке Create Collection (Создать коллекцию - рис. 7). После этого в свитке Copy Collection s появляется коллекция Col01 (в дальнейшем будет несколько коллекций) и станет активной кнопка Copy Posture (Копировать положение) - рис. 8; если ни одной коллекции не существует, то данная кнопка неактивна. Затем для копирования в буфер обмена позы конечности щелкают по пиктограмме Copy Posture (после этого становятся активными кнопки, расположенные справа от нее), а для наложения позы на вторую конечность - по пиктограмме Paste Posture Opposite (Вставить положение на противоположную кость).

Рис. 5. Активация режима RubberBandMode

Рис. 6. Свиток Track Selection с выделенными рамкой кнопками Symmetrical и Opposite

Рис. 7. Создание коллекции для операции Copy /Paste

Рис. 8. Кнопка СоруPosture в активном состоянии

По окончании скелет желательно сохранить, открыв в режиме Figure Mode свиток Biped , щелкнув на кнопке Save File (Сохранить файл) и указав имя файла. В итоге скелет окажется сохраненным в файле с расширением *.fig и может быть задействован для других моделей.

Рассмотрим простой пример. Создайте предусмотренный по умолчанию скелет, активировав категорию Systems панели Create , щелкнув на кнопке Biped , нажав левую кнопку мыши в произвольной части одного из окон проекций и протащив (при нажатой левой кнопке) мышь вверх (рис. 9). Сформируйте рядом со скелетом обычный цилиндр, размеры которого должны немного превышать размеры скелета (рис. 10). Совместите цилиндр со скелетом: выделите цилиндр, щелкните по кнопке Align и в качестве образца для выравнивания укажите Root-объект скелета (объект Bip01), воспользовавшись кнопкой Select by Name (рис. 11). Существенно увеличьте радиус цилиндра (рис. 12). На этом будем считать этап совмещения скелета с оболочкой завершенным. Сохраните сцену, так как позже мы к ней вернемся.

Усложним задачу и попробуем разместить скелет внутри простого объекта, смоделированного из примитивов, - пусть это будет кубик, дополнительно имеющий некую имитацию рук с кистями, ног со стопами и головы с шеей (рис. 13). Смоделируйте соответствующую сцену, а затем создайте костную структуру, нажав на кнопку Biped и сформировав в окне Front скелет нужного размера (рис. 14).

Теперь требуется грубо подогнать форму скелета к модели. Перейдите в режим редактирования скелета: выделите объект Bip01, активируйте панель Motion и включите режим Figure Mode . Начнем с изменения длины бедренных костей ног, поэтому включите режим резиновой нити (Rubber Band Mode ). В окне Front выделите кость Bip01 R Thigh, на панели Motion разверните свиток Track Selection и нажмите кнопку Symmetrical - это приведет к выделению соответствующей кости другой ноги. Активируйте инструмент Select and Move и переместите мышь вверх так, чтобы длина выделенных костей уменьшилась нужным образом (рис. 15). Проведите аналогичные операции в отношении голеней (рис. 16). Уменьшите количество позвоночных костей до одной, указав соответствующее значение в поле Spine Links свитка Structure (рис. 17).

Рис. 17. Уменьшение значения параметра SpineLinks

Займемся совмещением скелета с моделью персонажа. Это удобнее всего сделать за два шага: вначале провести грубое совмещение путем применения выравнивания, а затем более точно расположить Root-кость скелета уже вручную. Но вначале назначьте всем объектам оболочки полупрозрачные цвета, что позволит при совмещении наблюдать за положением костей внутри оболочки не только в ортогональных проекциях, но и в проекции Perspective . Отключите режим Rubber Band Mode . Выделите объект Bip01 и воспользуйтесь операцией Allign , указав куб (имитирующий в нашем случае туловище) в качестве объекта, по которому будет производиться выравнивание (рис. 18). Увеличьте масштаб и в проекции Front переместите скелет за кость Bip01 так, чтобы тазовая часть скелета совпала с предполагаемой тазовой частью оболочки (рис. 19).

Перейдем к плечам. Выделите единственную позвоночную кость Bip01 Spine и масштабируйте ее так, чтобы плечевые кости скелета оказались в оболочке на нужном уровне (рис. 20). Теперь нужно изменить положение ног так, чтобы соответствующие кости оказались внутри конечностей, при этом работать придется параллельно в проекциях Front и Left . Выделите правую бедренную кость (кость Bip01 R Thigh) и в проекции Front поверните ее относительно оси Z примерно на –11 позиций (рис. 21), а затем в проекции Left также относительно оси Z примерно на –8 позиций (рис. 22). Щелкните на кнопке Opposite (свиток Track Selection панели Motion ) - окажется выделенной левая бедренная кость. Выполните по отношению к ней те же самые преобразования, но вращая кость в противоположном направлении. Выделите в проекции Left правую голень (кость Left Bip01 R Calf) и поверните ее относительно оси Z примерно на 8 позиций (рис. 23). Повторите операцию поворота (но в противоположном направлении) для левой голени.

Рис. 21. Вращение правой бедренной кости в проекции Front

Рис. 22. Вращение правой бедренной кости в проекции Left

Рис. 23. Вращение правой голени в проекции Left

Займемся плечами и руками. Выделите обе плечевые кости (Bip01 R Clavicle и Bip01 L Clavicle) и масштабируйте их относительно оси X так, чтобы плечевые суставы оказались на подобающем им месте (рис. 24). В проекции Front выделите кость Bip01 R UpperArm и поверните ее относительно оси Z примерно на 42 позиции в отрицательном направлении. Включите режим Rubber Band Mode и удлините обе основополагающие кости руки требуемым образом. Отключите режим Rubber Band Mode и поверните кисть руки (кость Bip01 R Hand) так, чтобы она оказалась внутри оболочки. Теперь все только что проведенные операции необходимо применить к другой кисти. Для ускорения процесса воспользуемся операцией Copy /Paste . Выделите всю правую конечность, дважды щелкнув на кости Bip01 R UpperArm. На панели Motion разверните свиток Copy \Paste и последовательно щелкните на кнопках Create Collection , Copy Posture и Paste Posture Opposite - кости левой руки окажутся расположенными так же, как и кости правой руки (рис. 25). По окончании поверните стопы обеих ног (кости Bip01 R Foot и Bip01 L Foot) так, чтобы они тоже располагались внутри оболочки, а затем масштабируйте кости шеи и головы, добиваясь желаемого положения их внутри скелета (рис. 26). Сохраните сцену - она нам еще не раз понадобится.

Рис. 26. Вид скелета, помещенного в оболочку в окне Perspective

Пожалуй, все начинающие «игроделы» в разработке игр сталкивались с анимированием своих персонажей. Перед нами стоит выбор спрайтовой или скелетной анимации. В этой статье я рассмотрю основные принципы работы с плагином Puppet2D для скелетной анимации.

1. Установка

Итак, работа начинается с покупки и установки самого плагина с Asset Store:

2.Создание скелета. Подготовка

Перед созданием скелета, выстраиваем спрайты на сцене и создаем Layer для персонажа (куда поместим спрайты, я назвала его «Player»):

И Sorting Layer для костей и контроллеров (тут «Bones» и «Controllers»). Попутно выставляем слоя для костей и контроллеров в самом Puppet:

3.Создание скелета

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

Создание начинается с кнопки «Create Bone Tool» (1)

Нажимаем ЛКМ на нужных местах, по окончании - ПКМ или «Finish Bone» (2). Если сначала нажмем на уже существующую кость и создадим от нее еще одну, то та станет костью-родителем.

Для хребтов людей и животных существует кнопка «Create Spline Tool»(3). Помечаем начальную и конечную точку, а показатель (4) - количество костей между данными точками. На концах этих точек автоматически появятся контроллеры. Завершаем сплайн кнопкой «Finish Spline»(5).

В итоге должен получится примерно такой скелет:

4.Создание скелета. Вешаем контроллы

Далее все просто - на конечности вешаем контроллы:

(1) - Контроллер для конечностей (рук, ног)
(2) - Контроллер-родитель
(3) - Контроллер только для поворотов (например, головы)

5.Создание скелета. Привязка спрайтов к скелету

Существует 2 способа привязки:

  • если одному спрайту соответствует одна кость;
  • если одному спрайту соответствуют 2 и больше костей.
В первом случае все очень просто: выбираем нужные кости, выбираем нужный спрайт и жмем кнопку «Parent Object To Bones»:

Во втором придется немного заморочится, ибо нужно конвертнуть спрайт в мэш. Выбираем спрайт и жмем кнопку «Convert Sprite To Mesh»:

Показатель «Type of Mesh»(1) (От 0 до 4) указывает на количество треугольников в полигоне. Чем выше тип, тем их больше.

Следующим шагом будет привязка этого мэша к костям. Выбираем его, выбираем кости и жмем «Bind Smoth Skin»:

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

6. Создание скелета. Корректировка весов

Если объяснить упрощенно, то веса показывают, какая кость гнет какой мэш. Выбираем нужный мэш, затем редактируем, начиная с кнопки «Paint Weights»:

Выбираем нужную кость и там где белый цвет - кость гнет мэш, там где черный - нет:

Выбираем толщину и жесткость кисти и закрашиваем веса с помощью ЛКМ:

Shift + ЛКМ = Смяхчение переломов
Ctrl+ ЛКМ = Стирание весов

Заканчиваем редактирование кнопкой «Finish Edit Skin Weights».

7. Анимация

Заключитальным этапом конечно же будет анимация. Тут уже ваша фантазия неограничена. Двигаем контроллы, выставляем позы и, вуаля, вот наш скелетик уже бегает:

Напоследок добавлю туториал с оффициального YouTube-канала Puppet2D:

Глава 16: Арматура

Использование арматуры для деформации меша

Возможности Blender великолепны для большинства случаев анимации объектов, кроме ситуации с анимацией движений персонажа или дерева, изгибающегося на ветру. Эти случаи требуют изменений формы меша которые невозможно сделать с помощью традиционных модификаторов. Мы можем деформировать меш двумя способами. Создать скелет и использовать его для деформации меша (арматура ) и изменить положение вершин в режиме редактирования и создать слайдер контролирующий положение вершин между начальным и конечным положениями (ключ относительного положения вершин ). Эта глава описывает способ с созданием арматуры. Система арматур в Blender находиться в стадии постоянной разработки. Мы поговорим с вами о базовых вещах. Более подробную информацию вы можете найти на www.blender.org и www.blenderartists.com.

Первая вещь, которую нам нужно сделать - создать меш с несколькими группами вершин в местах, где он будет сгибаться. Подойдет любой меш и для получения дополнительного количества вершин вы можете экструдировать (extrude) или подразделить (subdivide) его. Но будьте осторожны, не создавайте слишком большого количества вершин. Это может замедлить работы компьютера и, соответственно, скорость моделирования. Давайте используем цилиндр для создания руки. Я использую цилиндр со значением количества вершин по умолчанию - 32. Затем, я переключаюсь в вид спереди и с помощью инструмента выделения прямоугольником ("B" ) выберите вершины верхней части цилиндра и экструдируйте их вверх. Я предпочитаю использовать экструдирование вместо подразделения (subdivide) для сохранения количества вершин в меше минимальным. Поле экструдирования я использую масштабирования и немного уменьшаю диаметр получившейся части руки.

Теперь, поместите курсор в самый низ созданной вами формы. Нажмите Пробел , выберите Add, Armature . Вы увидите кость появившуюся на месте 3D-курсора. Нажмите "G" для захвата вершины кости и увеличте ее длину до нужного размера. Для создания следующей кости, нажмите "E" и экструдируйте ее из конца предыдущей. Если вы вышли за пределы 3D-окна, просто нажмите "Esc" и отмените создание следующей кости. Как и в случае с другими объектами для редактирования костей вы должны находиться в Режиме Редактирования. Для размещения последней кости в правильном положении кликните Правой Кнопкой Мыши по вершине кости. Нажмите "G" и перемещайте ее. После завершения расположения кости, нажмите Tab для выхода из режима редактирования. Проверьте арматуру еще раз и убедитесь что все кости размещены именно так как нужно. Для добавления костей, сного нажмите Tab и перейдите в режим редактирования и воспользуйтесь кнопкой Пробел для вызова меню.

Следующим шагом будет создание связи Родитель-Потомок между мешеи и арматурой, где мешь будет потомком, а арматура - родителем. Удерживайте "Shift" и выберите меш, затем арматуру. Нажмите "Ctrl-P" для создания связи. В появившемся меню выберите опцию "Parent to Armature" . Под арматурой подразумеваются обе кости вместе. После этого у вас будет несколко вариантов способа создания групп вершин, которые будут двигаться с каждой костью.

Сейчас воспользуемся опцией "Name Groups" и компьютер сам определит какие вершины объекта связать с каждой из костей и проименует их в соответствии с этим. Иногда такой способ работать не будет. Обычно это происходит когда вершины находятся близко друг от друга (как в случае с пальцами на руке). Вершины одного пальца могут оказаться связанными с костью другого. Мы обсудим вопрос изменения групп вершин чуть позже. А пока это все! Самое время проверить получившуюся модель!

Для создания целого скелета или другой сложной структуры арматуры вы можете сделать следующее:

Анимирование арматуры

Самое время анимировать модель руки. Для этого нам нужно перейти в "Pose Mode" (режим поз). Измените режим в заголовке 3D-окна c Object Mode на Pose Mode. Так же, это можно сделать по нажатию клавиш "Ctrl-Tab" . Выделите кость, с которой вы хотите работать, Правой Кнопкой Мыши. Нажмите "R" и вращайте ее. Если все пойдет хорошо, меш будет вращаться вместе с костью. Сделайте несколько ключей анимации в разных кадрах, как мы это делали при анимации других объектов.

Автоматическое создание ключей анимации с арматурой

Создание ключей анимации для сложной системы костей может оказаться очень длительным процессом. К тому же, очень просто пропустить кость когда в одном кадре нужно сделать вращение для 20 таких же. Именно для этого и была создана опция automatic keyframing , доступная в меню Пользовательских Настроек. Потяните вниз за гранизу заголовка над окном 3D-вида и вы увидите нужные вам настройки. Выберите "Edit Methods" и нажмите кнопку "Auto Keyframing" . Это создаст ключи для каждой кости, перемещенной или повернутой в конкретном кадре. Не забывайте отключать эту функцию при завершении анимации скелета, иначе при неаккуратных действиях ваша анимация может превратиться в "кашу". Если вы столкнулись с какими то сложностями - загляните на страницу 71 в раздел Auto Keyframing.

Создание групп вершин

Как было замечено выше, иногда при расположении вершин слишком близко друг к другу у Blender могут возникнуть затруднения в процессе автоматического создания групп вершин. Вам потребуется определить группы вершин вручную. Сначала, создайте ваш меш и арматуру, затем свяжите их отношением Родитель-Потомок , выберите опцию "Use Armature" и сного выберите "Name Groups" . Компьютер проименует группы вершин самостоятельно и свяжите их с костями. Сейчас мы поговорим о создании собственных групп вершин и их именовании.

Для примера, я создал меш, который мы будем называть Палец . Затем, я создал арматуру и продублировал оба объекта для создания второго пальца. Следующим шагом будет объединение (Ctrl-J ) двух арматур и подобное действие для двух мешей. Создайте связь Родитель-Потомок между Арматурой и Мешем и выберите опцию "Name Groups" .

Теперь, для назначения вершин костям нам нужно видеть названия (имена) костей. Выберите арматуру и перейдите в раздел Edit в Окне Кнопок. Найдите там кнопку "Names" . Ее нажатие приведет к появлению имени каждой кости в 3D-окне. Имена будут расположены на конце костей и иметь вид Bone.001, Bone.002 и т.д. Вам нужно будет использовать имена именно в таком виде.

Теперь, выделите меш и перейдите в Режим Редактирования (Tab). В разделе Edit в Окне Кнопок вы заметите набор кнопок для создания/редактирования Групп Вершин (блок кнопок для работы с Vertex Groups будут видны только если вы находитесь в Режиме Редактирования ). Выберите имя группы (group name ) для кости, с которой вы работаете. Если вам потребуеться создать новую группу вершин - нажмите "New" . Помните что для каждой кости должна быть назначенна группа вершин и имя группы вершин должно совпадать с именем кости (Bone.001, Bone.002 и т.д.).

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

Сделайте это для оставшихся костей. После этого выйдите из режима редактирования и выберите арматуру. Нажмите "Ctrl-Tab" для перехода в Режим Поз (Pose Mode) и проверьте работу вашей арматуры. Если вам нужно изменить группы, выделите меш и перейдите в Режим Редактирования.

Помните, мы обсуждали преимущества использования опции "Name Groups" при создании связи Родитель-Потомок между мешем и арматурой? Это сэкономит нам целый шаг по присвоению имен для каждой группы вершин.


Использование Инверсной Кинематики (IK)

Инверсная кинематика используется для манипуляции скелетом простым перемещением (G ) оконечной кости, при этом все остальные связные кости двигаются за ней. Инверсная Кинематика постоянно развивается и имеет большое количество опций в зависимости от необходимых вам параметров поведения скелета. Посетите сайт www.blender.org для более подробного знакомства с ней.

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

Дальше, переместите 3D-курсор вниз меша и добавьте кость (Пробел-Add-Armature). Используйте "G" для перемещения вершины кости к первой точке перегиба меша. Нажмите "E" и экструдируйте другую кость до второй точки перегиба меш. Повторите операцию еще 2 раза для получения арматуры из 4 костей.

Создайте связь Родитель-Потомок между мешем и арматурой нажав "Ctrl-P" и выберите в появившемся меню "Name Groups" .

Перейдите в Режим Поз (Pose Mode, Ctrl-Tab). Повращайте кости и убедитесь что каждая группа вершин назначена своей кости.

Данное повествование довольно долгое и занудное, но если прочитать его внимательно и вдумчиво, то вполне можно научиться создавать и настраивать скелеты персонажей. Наличие опыта работы с программой обязательно, так как многие очевидные вещи не объясняются подробно. Старайтесь не делать лишних кликов и нажатий клавиш. Если ситуация вышла из-под контроля - не пугайтесь. Вы всегда можете откатиться назад с помощью команды Undo (кнопка «z»). Для более глубокого понимания предмета не лишним будет периодически обращаться к соответствующим разделам Help.

Basic human skeleton setup

Встречающиеся в тексте сокращения:
LMB – левая кнопка мыши
MMB – средняя кнопка мыши
RMB – правая кнопка мыши

Допустим, есть такая модель двуногого существа. Выглядит она не очень привлекательно, но это сделано специально, для наглядности.

Рассмотрим модель по частям.

Общее количество отдельных частей персонажа насчитывает 17. Именно столько костей нам и понадобится, чтобы создать для неё управляющий скелет.

Загрузите файл Dummy_mesh.mb . Если после загрузки модель не стоит ногами на полу, а лежит горизонтально раскинув руки - откройте окно Preferences и поменяйте вертикальную ось мировых координат с “Z ” на “Y ”.

Откройте файл ещё раз.

Joints (кости)

Команда создания костей (Joint Tool) находится в меню модуля Animation , для перехода в который нажмите F2 . С начала проверим правильность опций создания костей, выбрав Option Box команды Joint Tool.

Выставляем опции, как на картинке, и закрываем окно (Close).

Если по каким–либо причинам ваш курсор не в виде крестика (обозначающий режим создания костей) - не пугайтесь. Просто активируйте команду Joint Tool из меню команд:

опции создания костей:
- нажатие LMB создаёт новую кость в позиции клика,
- последующее нажатие LMB создаёт следующую кость иерархии в позиции клика.

изменение позиции костей при создании:
- нажмите и удерживайте LMB, перемещая курсор определите позицию новой кости, отпустите LMB для создания кости.
- нажмите и удерживайте MMB, перемещая курсор измените позицию последней кости иерархии.

Переключившись на вид side создадим кости позвоночника шестью последовательными нажатиями LMB: Hip –>Spine –> Chest –> Neck –> Head –> Head end Joint. Если кости получились слишком большие, то изменить их размер можно с помощью установок в окне Joint Display Scale..

Кость головы нужно выравнивать чётко по горизонтали (так надо для последующей настройки IK (инверсной кинематики)) Просто переместите конечную кость скелета с командой snap to vertex по оси Y .

Также, если вас не устраивают положения остальных костей, можно легко их передвинуть:
- выберите нужную кость
- включите режим перемещения (кнопка “w ”)
- активируйте режим редактирования Pivot Point (нажмите “insert ”)
- переместите кость в нужное положение
- выберите другие кости и переместите их
- нажмите “insert ” снова, чтобы выйти из режима редактирования Pivot Point.

Кости можно двигать и без активации режима редактирования Pivot Point, но тогда будет перемещаться вся выше имеющаяся иерархия от перемещаемой кости. (Попробуйте просто подвигать кости, без активации режима Pivot Point)

Не вращайте кости при редактировании их позиции! Значения Rotate X, Y, Z каждой кости должны быть “0”.

Теперь создадим отдельно кости ног (используйте вид сбоку - side ) и рук (вид сверху - top ). Тут есть один нюанс – нужно выдержать между костями бедра и голени достаточный угол для сгиба коленей (то же самое правило для предплечья и плечевой кости). Угол необходим для того, чтобы определить для IK направление сгиба сустава. Придётся также немного повернуть геометрию - параллельно костям.

Переместите кости рук и ног в центр их геометрии.

Теперь нужно их сдублировать, потому как рук и ног у персонажа – по две штуки.
Ноги дублируются предельно просто:
- выберите бедренную кость,
- проверив опции дублирования жмём Duplicate ,
- перемещаем вновь созданную кость простым добавлением знака «–» в её значение Translate X в окне Channel Box.

С руками немного сложнее, будьте внимательны, не делайте лишних «телодвижений»:
- выберите плечевую кость руки,
- создаём её дубликат (горячая клавиша дублирования Ctrl+d),
- группируем дубликат (Ctrl+g),
- изменяем атрибут группы Scale X «1» на Scale X «–1».

Получили зеркальный дубликат руки, по которому мы создадим новые (свежие) кости. Дубликат не годится, потому как имеет отрицательные значения локальных осей Scale и Rotate, что в дальнейшем будет мешать настройке IK и управляющих локаторов.

Используя snap to vertex (нажмите и удерживайте “V”) создаём кости правой руки.

Кликайте не точно во «вспомогательные» кости, а рядом, на некотором расстоянии. Snap сам совместит позиции костей. Иначе новые кости будут создаваться как иерархическое продолжение той кости, в которую вы кликните.

Удалите группу с дубликатом костей - они нам больше не понадобятся.

Теперь нужно присоединить руки/ноги к туловищу. Для этого используем команду Parent (горячая клавиша - "p")
- выбираем обе ноги (бедренные кости) + тазовую кость, жмём “p”,
- выбираем обе руки (плечевые кости) + кость грудной клетки и снова “p”.

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

Скелет готов, пришло время прицепить «мясо» к костям. Используем для этого команду Parent . Прикрепите каждую часть модели к соответствующей кости (сначала выбираем объект Mesh , затем соответствующую кость и жмём «p»). Если вы по ошибке прикрепили Mesh к другой кости – выберите Mesh объект и нажмите SHIFT + «p» (Unparent) - это отсоединит его от кости, затем прикрепите к нужной. Повращав кости (hot-key «e»), проверьте правильность привязки объектов к костям.

На этом работы с Mesh закончены, и чтобы сетка нам не мешала, назначим её в Layer, которому выставим тип отображения Reference. Это сделает Mesh «невидимым» для курсора, что позволит избежать ненужного выделения сетки при дальнейшей работе.
- создайте новый слой (Layer) кликнув по кнопке,
- двойным кликом на появившемся леере открываем окно Edit Layer
- меняем имя слоя
- цвет (помогает быстрее ориентироваться, когда слоёв много)
- тип отображения (Reference)
- нажимаем Save

Выбираем все Mesh объекты модели

Просто «рамочкой» выбрать все объекты не получится, потому как приоритет выделения у костей выше, чем у Mesh объектов. Поэтому последовательно, используя Shift «накликайте» все объекты один за другим. Другой (и более простой) метод решения данной проблемы - отключить на время отображение костей из меню Show –> Joints, и после этого спокойно воспользоваться «рамкой».

Назначаем выбранные Mesh объекты в наш Layer с помощью команды из, либо из меню по нажатию RMB на слое.

Режимы отображения слоя (Template, Reference, Normal) можно поменять в любой момент кликнув в квадратик рядом с цветом. При каждом клике один режим будет сменять другой (R - reference, T - template, blank - normal). Также легко можно включить/выключить видимость (Visibility) слоя (и соответственно всех объектов в нём находящихся) кликнув в квадратик с буквой V.

IK (инверсная кинематика)

Добавим в скелет немного инверсной кинематики для управления ногами и рукам,.но для начала убедимся что:
- режим “IKFK control” выключен, (галочка отсутствует),
- режим отображения точек Pivots включён (галочка присутствует).

Откройте окно опций создания инверсной кинематики, нажмите Reset Tool, Close.

Начнём с IK для ног: курсором-крестиком кликните в бедренную кость левой ноги, затем в кость ступни. Появившаяся зелёная линия с «усами» в области ступни, проходящая через кости ноги, и есть IK handle . Сразу переименуем его в L_Leg_ikHandle .

Розовый цвет сетки означает, что объект находится в непрямой зависимости от выбранного объекта. Так и есть – IK handle влияет на кости, а кости в свою очередь определяют положение Mesh объектов. Получается что между IK и Mesh не прямая зависимость, а через кости .

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

Locators (локаторы)

Для управления скелетом (и персонажем в конечном итоге) мы будем использовать локаторы . В принципе, можно использовать и другие объекты (mesh, curves, selection handles и так далее), но после нескольких экспериментов, локаторы были признаны аниматорами как наиболее удобные.
- Создаём локатор командой Create -> Locator,
- уменьшаем его огромные размеры до приемлемых (Scale - «r ») и перемещаем в кость Hip (используйте snap to vertex для точного позиционирования, отключите отображение слоя с геометрией, чтобы не попадать в вершины mesh объектов).

Дублированием нашего локатора создаём остальные локаторы для всех ключевых костей.

Локатор головы расположите немного впереди скелета, но точно напротив кости головы (смотрите рисунок внимательно).

Добавим ещё 4 вспомогательных локатора, которые будут определять направление коленей и локтей (по сути, продольное вращение рук и ног). И ещё один – для макушки головы. Используя snap to vertex поместите их напротив коленей, локтей и точно над костью головы.

Аккуратненько переименовываем локаторы.

Выбрав все локаторы, делаем им Freeze Transform, исключая Scale. В дальнейшем это поможет быстро восстанавливать начальную позу скелета простым обнулением всех атрибутов управляющих локаторов.

Constraints (привязка)

Для того, чтобы локаторы приобрели силу управления, соединим их с костями и IK посредством констрейнов :

Point (hot-key Alt + p) - привязка по перемещению (Translate),
Orient (hot-key Alt + o) - привязка вращения (Rotate),
Pole Vector (hot-key Ctrl + p) - направление вектора инверсной кинематики.

Небольшое отступление:

Каждый тип объекта в сцене имеет своё значение приоритета выделения (Selection Priority). Например, IK имеет приоритет 4, а локаторы 3. Поэтому, если два объекта визуально перекрывают друг друга то при клике (или селекции рамкой) будет выбран тот (те), у кого приоритет больше. Будьте внимательны, пользуйтесь окном Outliner. Изменить настройку приоритетов можно в окне Preferences.

Итак, приступим. Точно соблюдайте порядок выделения объектов:

HIP (таз)
выбираем Hip_locator + Hip (joint).
не снимая выделения, последовательно назначаем Point constrain и Orient constrain.

Получили зависимость позиции и вращения тазовой кости от локатора "Hip_locator". Попробуйте подвигать и повращать его, чтобы посмотреть результат: вместе с локатором вращается и перемещается весь скелет. Это нормально, потому как IK рук и ног пока не прикреплены к своим локаторам. Идём дальше, скоро всё будет в ажуре!

SPINE (позвоночник)
Spine_locator + Spine (joint) >> Orient constrain.

Установили зависимость вращения кости спины от локатора Spine_locator. Теперь повращайте Hip_locator - кость спины смещается, а её локатор остаётся на месте, что не совсем удобно. Исправим это, добавив зависимость перемещения локатора спины от положения кости спины:

Spine joint + Spine_locator >> Point Constrain.

Повращайте Hip_locator снова. Теперь всё правильно - Spine_locator движется вместе с костью спины. Также настроим локатор грудной кости:

CHEST (грудная клетка)
Chest_locator + Chest (joint) >> Orient constrain - зависимость вращения грудной кости от её локатора.
Chest (joint) + Chest_locator >> Point constrain - привязка позиции локатора к грудной кости.

Ноги, руки и голова потребуют немного больше внимания, потому как для их управления используется по два локатора.

LEGS (ноги)
L_Leg_locator + L_Leg_ikHnadle >> Point Constraint – привязка позиции IK к локатору ноги.
L_Leg_locator + L_Foot joint >> Orient Constraint – зависимость вращения кости ступни от вращения локатора.
L_Knee_locator + L_Leg_ikHnadle >> Pole Vector Constraint – теперь коленный локатор определяет вращение ноги.

Те же настройки для правой ноги сделайте самостоятельно.

HANDS (руки)
L_Hand_locator + L_Hand_ikHnadle >> Point Constraint - привязка позиции IK к локатору руки.
L_Hand_locator + L_Hand joint >> Orient Constraint - зависимость вращения кости руки от вращения локатора.
L_Elbow_locator + L_Hand_ikHnadle >> Pole Vector Constraint - вращение руки при перемещении локтевого локатора.

То же самое - для правой руки.

HEAD (голова)
Head_locator + Head_ikHnadle >> Point Constraint - направление головы.
Head_Top_locator + Head_ikHnadle >> Pole Vector Constraint - наклон головы в стороны.

Если теперь включить отображение Mesh, то можно наблюдать неестественно свёрнутую на бок голову. Исправить это очень просто: выберите IK головы (Head_ikHandle) и измените значение атрибута Twist с нуля на 90 .

Эту проблему можно было бы совсем избежать, если прикреплять Mesh к костям после всех настроек скелета.

NECK (шея)

Последняя не задействованная кость в скелете – шейная. Для её управления добавим локатору макушки головы два дополнительных атрибута, которые будут наклонять шею вперёд/назад и вправо/лево.

Выберите Head_Top_locator, открываем окно редактора дополнительных атрибутов из меню Modify > Add Attribute...

Добавляем два атрибута Neck RX (наклон шеи вперёд/назад) и Neck RZ (наклон шеи в стороны).

Теперь нужно связать эти атрибуты с вращением шейной кости по соответствующим осям X и Z.

Для этого:
- из меню открываем Connection Editor,

Выбрав Head_Top_locator, загружаем его атрибуты в левую часть окна (кнопка Reload Left),
- выбираем шейную кость Neck (joint) и загружаем в правую часть (кнопка Reload Right),

Находим в левом столбце наши дополнительные атрибуты (в самом низу), а в правом разворачиваем атрибут Rotate нажав на плюсик напротив,
- соединяем соответствующие атрибуты - сначала выбирается атрибут в левом окне, затем атрибут в правом окне.

Не пугайтесь, если вы случайно соединили не те атрибуты. Повторное нажатие на атрибут в правом окне отсоединит атрибуты.
Проверим настройку на деле - выберите локатор макушки головы, левым кликом выберите атрибут Neck RX , и средним кликом подвигайте в окне проекции. Также проверьте работу второго атрибута - Neck RZ .

Ну вот, теперь можно подёргать за различные локаторы Вашего скелета.

С настройкой покончено, осталась парочка косметических моментов для удобства работы - и всё!

Hide IK handles.

В окне Outliner выбираем все объекты инверсной кинематики (ikHandles), и делаем их невидимыми с помощью команды Hide Selection (hot-key Ctrl + h)

Hide all Joints

Из меню Show снимите галочку напротив объекта joints . Это выключит отображение костей скелета в текущем окне проекции. Скрыть кости командой Hide Selection нельзя, потому как вместе с ними пропадёт отображение Mesh объектов модели.

Таким образом, мы убрали все объекты, мешающие выбору управляющих локаторов.

Lock unused locator’s attributes.

«Залочим» лишние атрибуты локаторов, которые не используются в управлении скелетом. Lock означает запрет на изменение значений атрибута.

Scale - абсолютно бесполезный атрибут для всех локаторов . Выбираем все локаторы в окне Outliner и «лочим» атрибут Scale X, Y, Z. Для этого проведите LMB по атрибутам Scale в Channel box, и в меню команд выберите Lock Selected.

Rotate – этот атрибут не понадобится локаторам . Также «лочим» атрибуты вращения этих локаторов с непринуждённой лёгкостью.

Translate – чтобы случайно не сдвинуть локаторы спины и грудной клетки - «залочим» у них атрибуты перемещения по всем трём осям. Не переживайте - это не повлияет на Point constrain этих локаторов и их костей. Просто «ручками» подвинуть эти локаторы больше нельзя.

Make Unused Attributes Non Keyable.

Теперь уберём все залоченные атрибуты локаторов из отображения в Channel Box, сделав их Non Keyable .
- Выберите все локаторы ,
- откройте окно редактора Channel Control.

Убедитесь, что присутствует галочка в опции “Change all selected objects of the same type” (это позволит изменять атрибуты сразу у всех выбранных локаторов).
- Выбираем атрибуты Scale и Visibility,
- «перекидываем» выбранные атрибуты в раздел Non Keyable нажатием кнопки «Move >>».

Не снимая выбора с локатором, смотрим на Channel Box - атрибуты Scale и Visibility пропали из Channel Box.

Тут может возникнуть вопрос - почему мы не «залочили» атрибут Visibility также как остальные? А потому, что тогда мы не смогли бы выключать/включать отображение локаторов в окне проекции. А убрали из Chanel Box, потому что данный атрибут никак не используется в управлении скелетом.

Выберите только локаторы коленей, локтей, макушки головы, и направления головы , и уберём у них атрибут Rotate .

И последнее, у локаторов Spine и Chest сделайте Non Keyable атрибуты Translate .

Ну вот, если вы сделали всё правильно, то можно проверить удобство работы с моделью на деле – например, попробуйте выставить одну из поз на картинке.

Если же вы дочитали всё до конца, но сами ничего не делали - загрузите проект Dummy_skeleton.mb .

Архив с проектами для этой части: .

Решила заново "с нуля" пройти путь создания скелета.
(для закрепления материала)

Проверяем, чтобы персонаж смотрел на Z.

Поехали!

Меню Animation -- Sceleton -- Joint Tool

Выбираем инструмент и начинаем создавать скелет, начиная с Root-- первый joint (обычно находится в месте таза)
(я начинаю создавать скелет из Front View)

Двигаясь от Root-а вверх по позвоночнику ставим джоинты (на рисунке от 1 до 7)

Нажав Enter, мы обрываем нашу связь с инструментом.
Выбрав снова инструмент Joint Tool продолжаем делать скелет для левой половины нашей модели.
Я решила продолжить с ноги.

Нажимаем на Root и продолжаем "наращивать" кости вниз по ноге. (при этом не забывайте переходить в разные view окна, чтобы посмотреть правильно расположение joint-ов.)
подвинуть joint можно нажав клавишу D в режиме перемещения (Move)

Затем наращиваем кости руки.


Нам осталось сделать кости для запястья. Тут я посоветую начинать со среднего пальца. (в этом случае, ось будет смотреть в центр кисти руки и нам не нужно будет переназначать её локальную ось в будущем для правильного поворота)

Для этого лучше всего перейти в TOP View.



Сделаем теперь кости и для остальных пальцев.



Подвинем joints на свои места, используя для этого разные View панели.



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

Называть все джоинты с левой стороны скелета лучше начиная с "L_"
Позже вы поймёте для чего мы это делали.

Теперь займёмся не менее важным процессом. Нам нужно проверить направление всех локальных осей для joints в созданной половине скелета.

Для более удобной работы с осями, включим их отображение.

Выделим всю иерархию нашего скелета


И вызовем отображение локальных осей вращения.

Меню Display -- Transform Display -- Local Rotation Axes


Наша главная сейчас задача -- проверить правильность направления локальных осей для joints.
Лично мне потребовалось время, чтобы понять, что значит -- Правильно!?

Ответ нашла только когда начала вращать джоинты. Главное, чтобы они вращались по осям, по которым анатомически правильно должна двигаться геометрия персонажа.


Если вы заметили, что оси располагаются неправильно, вы можете исправить это двумя способами:
1. Команда Orient Joint (выбрать нужную ориентацию в опциях)
2. Вручную. Для этого нужно перейти в режим выделения компонентов (нажав клавишу F8) и нажать иконку с вопросительным знаком (Select miscellanious components).


Установите локальную ось нужного вам джоинта так как вам нужно. (помните, что при этом вы не должны находиться в Gimbal, иначе вы не сможете двигать оси)

Теперь направление локальных осей джоинтов проверено, все джоинты переименованы.
Мы можем сделать вторую половину скелета.

Для этого выделите один родительский джоинт левой половины (например, для руки)


Затем зайдите в опции команды Mirror Joint. Выберите оси, относительно которых будет происходить отзеркаливание скелета.

Здесь чуть подробней остановимся на опциях Mirror Function .
Принципиально важно понимать, как образуется другая сторона скелета, выбрав Bihavior или orientation.

Итак, Bihavior.
Применим его и посмотрим на результат.

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


Повращаем joint (откуда растёт рука). Вращение правильное.

Сделаем откат назад (Ctrl/Z) и поставим галочку теперь в Orientation


И повращаем снова joint. А вот теперь он вращается не так как нам нужно.

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

Поэтому остановимся на Behavior.

В строке Search for укажите начало названия всех ваших джоинтов для левой половины скелета "L_" (вот где пригодилось переименование джоинтов!)
и в строке Replace With впишите "R_"

В этом случае, все ваши новые отзеркаленные джоинты для правой стороны создадутся с правильными именами, которые будут начинаться на R (right), и в будущем вам будет легко найти их при необходимости в Outlinere.

То же самое проделайте для ноги

Готово! Мы создали с вами скелет для персонажа для дальнейшей анимации.

И ещё, пока не забыла.. После создания скелета перед настройкой setup-а оси вращения всех джоинтов должны быть в нуле.


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