Графический дизайн, арт игры, концепт, персонажи, текстуры, анимации, модели
GameDev.ru / Графический Дизайн / Статьи / Настройка скелета модели человека в Maya.

Настройка скелета модели человека в Maya.

Страницы: 1 2 Следующая

Автор:

Basic human skeleton setup
Advanced human skeleton setup

Basic human skeleton setup

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

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

Встречающиеся в тексте сокращения:
  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.

Изображение

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

Страницы: 1 2 Следующая

12 марта 2005

#Maya, #персонажи, #скелетная анимация

2001—2017 © GameDev.ru — Разработка игр