11.04.2019

Практика: создание скелета в Maya. Автоматическое создание ключей анимации с арматурой. Создание скелета. Вешаем контроллы


Пожалуй, все начинающие «игроделы» в разработке игр сталкивались с анимированием своих персонажей. Перед нами стоит выбор спрайтовой или скелетной анимации. В этой статье я рассмотрю основные принципы работы с плагином 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:

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

Для каждого персонажа необходимо создать скелет, благодаря которому его движения будут максимально правдоподобными. Процесс создания и настройки костей называется риггинг (Rigging ), за ним следует скиннинг (Skinning ) – привязка скелета к его модели.

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

Аналогично со скелетом животного, образец не проблема найти в интернете. Если же речь идет о существе фантастическом, придется помудрить, взяв за основу скелет наиболее похожего из реальных существ. Так или иначе, скелет трехмерного персонажа не будет идентичен натуральному. Местами он отличается, ввиду специфики среды.

Скелет может строиться при помощи классических костей, связанных между собой иерархически. Также 3 ds Max Мах предлагает встроенные модули Biped и CAT (Characters Animation Tools) для создания боле е сложной, специализированной системы костей. Кости скелета пребывают между собой в иерархической связи, что позволяет поделить их на родительские и дочерние. Когда вы обозначаете определенный элемент как «родитель», он получает силу при любых перемещениях и движениях тянуть за собой «детей». Обеспечить органичные движения костей можно двумя типами связи: прямой кинематикой и обратной. Прямая кинематическая связь основывается на зависимости перемещений дочерних объектов от родительского. Обратная опирается на математический алгоритм, который просчитывает движения объектов, независимо от иерархии.

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

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

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

Создавая реалистичную анимацию, очень важно придерживаться 12 принципов, предложенных диснеевцами Олли Джонстоном и Франком Томасом .

Первый. Сжатие и растяжение – необходимо подчеркивать эластичность объектов.

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

Третий. Сценичность – сцену нужно оценив ать с позиции того, как ее видит зритель. Позволить адресатам правильно понять происходящее и акцентировать внимание на главном помогут позы персонажей, выражения их лиц, окружение и положение камеры.

Четвертый. Фазованное движение – в 3 ds Max движение разбивается на кадры автоматически, вам, в свою очередь, необходимо отслеживать, насколько органичен результат.

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

Шестой. Смягчение начала и завер шения движения – поэтому действие должно состоять из большего количества рисунков в конце и в начале.

Седьмой. Дуги – как и в приро де, в анимации многие движения следуют дуговой траектории.

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

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

Десятый. Преувеличение – реалистичная анимация это великолепно. Но местами не помешает утрировать, все же это фантастич еский мир, созданный вами. И вы имеете полное право в собственном мире немного трансформировать законы физики, сделать движения более яркими, чем в жизни, необычными.

Одиннадцатый. Профессиональный рисунок – человек, создающий 3 d -модели для анимации, обязан уметь рисовать, понимать основы анатомии, физики, баланса света и тени.

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


Теперь приступим к созданию скелета для рук. И мы начнем с левой руки. В целом, мы просто будем рисовать по прямой. Я начну с этого сустава, создам ключицу, затем плечо и остальные части руки. Сейчас вы можете заметить, что здесь у нас торчат маленькие вспомогательные кости. Если я посмотрю на них в виде спереди, то вижу, что у нас здесь происходит наложение суставов. И мы не знаем, какой из них мы выбрали – кость позвоночника, или может быть переднюю кость. Когда мы рисуем кость, мы должны быть уверены, что она начинается от сустава Spine03. Давайте нарисуем ее.

Я зайду в Skeleton/ Joint tool и просто кликну на этой кости. Видите, когда я это сделал, я выбрал Spine03, то, что мне нужно. На самом деле, я просто щелкнул немного выше, где пересекаются два эти сустава, так я смог выбрать правильную кость.

Давайте создадим сустав для ключицы. Давайте щелкнем здесь левой кнопкой мыши и все что нам нужно – просто разместить ключицу вот тут, чтобы персонаж мог пожать плечами. Вам может показаться, что это плечо, но это не так. Мы хотим создать сустав здесь, чтобы перемещать всю руку вместе с плечом вверх и вниз. Нужно сказать, что плечо нужно поместить очень точно. У нас есть рука, которая имеет такую вот толщину. Нужно сделать так, чтобы при повороте руки на 90 градусов мы выравнивались с боковой стороной туловища, то есть рука была впритык к боку персонажа.

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

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

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

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

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

Данное повествование довольно долгое и занудное, но если прочитать его внимательно и вдумчиво, то вполне можно научиться создавать и настраивать скелеты персонажей. Наличие опыта работы с программой обязательно, так как многие очевидные вещи не объясняются подробно. Старайтесь не делать лишних кликов и нажатий клавиш. Если ситуация вышла из-под контроля - не пугайтесь. Вы всегда можете откатиться назад с помощью команды 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 .

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

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

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

Чтобы получить завершенную, готовую к оснащению модель, можно либо использовать собственную модель, либо открыть имеющийся на прилагаемом компакт-диске файл MachismoGeo. ma. Машизмо - это массивный и более чем мускулистый персонаж, а по­ тому в процессе привязки геометрической формы к скелету следует обратить особое внимание на области торса и рук. Кроме того, ему необходимо управление отдельными пальцами. Но поскольку он носит обувь, то для каждой его ступни будет достаточно про­ стой цепи, состоящей из одного сустава.

Создание прототипа структуры скелета с использованием кривых

Сразу после определения общего направления компоновки скелета Машизмо можно было бы немедленно приняться за работу и начать его создание. Тем не менее такой ме­ тод создания скелета чреват потенциальными проблемами, наибольшая из которых за­ ключается в.том, что при создании сложного скелета правильно расположить все суста­ вы с первого раза почти невозможно. Когда без перемещения суставов их невозможно правильно подогнать к геометрической форме, возникает проблема осей поворота, при­ водящая впоследствии (при привязке и анимации персонажа) ко всякого рода трудно­ стям. В дополнение при построении скелета запросто можно забыть создать какой-то сустав - и это также в дальнейшем может стать причиной проблем. В Maya существует множество способов предварительного создания скелета; тут будет создан комплект кри­ вых для каждой важной части скелета (ноги, руки, позвоночника и т.д.), используемый в качестве ориентира при построении полнофункционального скелета. Поскольку точки кривой можно свободно перемещать, а расположение кривых можно наблюдать в окне сцены, а также потому, что скелет можно привязать к кривой, выбранный метод преду­ сматривает быстрое и точное создание скелета, как только кривые будут правильно раз­ мещены внутри геометрических форм.

ЕСЛИ оси вращения сустава не совпадают с костью, то при вращении дочерних суставов он не будет вращаться вокруг кости, что приведет к необходимости контроля движения при анимации. Работа специалиста по оснастке заключается в том, чтобы упростить, а не ус­ ложнить анимацию, поэтому следует создавать оснастки без проблем с вращением. Таким образом, дополнительное время, потраченное на создание кривых прототипа скелета, ста­ нет залогом успеха.

Для создания опорного комплекта кривых потребуется всего лишь пара настроек. Сначала выберите пункт меню Create => EP Curv e Tool (Создать => Инструмент кривой ЕР ) и в открывшемся окне параметров инструмента установите переключатель Curve Degree (Степень кривой) в значение 1 Linear (1 , линейная). В этом случае каждый щел­

чок мышью будет одновременно определять точку кривой и контрольную вершину; по­ скольку дальше планируется использовать сценарий, размещающий суставы в кон­ трольных вершинах, то такой первый шаг просто необходим. Для удобства выделения и перемещения кривых из всех установленных масок выделения объектов сцены оставьте только выделение кривых. (Для этого в строке состояния щелкните на черном направ­ ленном вниз треугольнике и в появившемся контекстном меню выберите пункт АLL Objects Off (Отключить все маски выделения объектов)), а затем, чтобы разрешить вы­ деление только кривых, щелкните на пиктограмме Curve s (Кривые).) Возможно, для удобства просмотра кривых внутри тела Машизмо следовало бы установить режим рент­ геновского тонирования (для чего в меню панели выберите пункт Shadin g => X-ra y (Тонирование => Рентген)).

Создать набор опорных кривых так же просто, как выбрать инструмент ЕР Curve

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

ней части руки и ноги были добавлены суставы вращения (roll joint); эти суставы можн о использовать для закручивания кожи вдоль предплечий и икр (они добавлены для пол­ ноты скелета). Эти дополнительные суставы можн о было и не включать. В качестве справки можн о открыть имеющийс я на прилагаемом компакт-диске файл Machismo – SkelCurves .ma. По окончании должен получиться набор кривых, аналогичный пока­ занному на рис. 8.20.

Рис. 8.20. Набор опорных кривых для скелета Машизмо

Для того чтобы ускорить дальнейший рабочий процесс, кривым следует подобрать подхо­ дящие имена. Поскольку инверсная кинематика всего тела может быть построена исходя из имен суставов, очень важно точно называть кривые (а следовательно, и суставы). (В качестве альтернативы перед применением к скелету инверсной кинематики всего тела, суставам мож­ но присвоить метки (label).) Назовите кривые следующим образом: SpineCurve (Кривая позвоночника), LeftLegCurve (Кривая левой ноги), rightLegCurve (Кривая правой но­ ги), LeftFootCurve (Кривая левой ступни), right Foot Curve (Кривая правой ступни), LeftArmCurve (Кривая левой руки), rightArmCurve (Кривая правой руки), Left- HandThumbCurve (Кривая большого пальца левой руки), LeftHandlndexCurve (Кривая указательного пальца левой руки), LeftHandMiddleCurve (Кривая среднего пальца левой руки), LeftHandringCurve (Кривая безымянного пальца левой руки), LeftHand- PinkyCurve (Кривая мизинца левой руки), rightHandThumbCurve (Кривая большого пальца правой руки), rightHandlndexCurve (Кривая указательного пальца правой руки), rightHandMiddleCurve (Кривая среднего пальца правой руки), rightHandringCurve (Кривая безымянного пальца правой руки), rightHandPinkyCurve (Кривая мизинца пра­ вой руки) и JawCurve (Кривая челюсти). Удостоверьтесь, что имена введены точно, как здесь (включая верхний и нижний регистр): эти имена будут использованы в сценарии, который в следующем разделе проделает большую часть работы по созданию скелета.

Важность именовани я элементо в

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

joint143 и почему он расположен именно там, где расположен. Но если назвать его leftupArm (верхний сустав левой руки), то будет точно известно предназначение этого сус­ тава, а также, почему он занимает свое место. Вдобавок именование всех элементов оснастки является способом ее самодокументации: выделение любого узла оснастки уже только по од­ ному его имени позволит узнать назначение узла. Такая самодокументация бесценна как для специалиста по оснащению в конце работы над оснасткой, так и для анимации персонажа.

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

Сейчас есть два способа создания скелета. Можно выбрать инструмент Joint

(Сустав), включить привязку к кривым (щелкнув в строке состояния на кнопке Snap To Curve s (Привязка к кривым)), разместить суставы на кривых, а затем присво­ ить им имена, руководствуясь табл. 8.1. Но зачем же тратить столько времени и усилий на то, что может выполнить сценарий MEL? На прилагаемом к книге компакт-диске найдите файл сценария drawBase.me l и загрузите его (в окне редактора сценариев Script Editor выберите пункт меню File => Sourc e Script (Фай л => Загрузить сценарий)). За­ тем выделите все кривые, введите в командной строке команду drawBas e и нажмите клавишу . Вуаля! По большей части созданный и правильно именованный ске­ лет готов к использованию (рис. 8.21). Если при выполнении процедуры drawBas e воз­ никли какие-то ошибки, то наиболее вероятная их причина кроется в неправильных именах кривых; поэтому загляните в предыдущий раздел и еще раз проверьте их, чтобы удостовериться в правильности именования (не забывайте, что в языке MEL регистр имеет значение). При желании создать скелет вручную, добавить или изменить какой-то из его суставов, воспользуйтесь приведенным в табл. 8.1 полным списком имен суставов, поддерживаемых постановкой FBIK.

Рис. 8.21. Применение сценария drawBase. mel позволило создать скелет автоматически!

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

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

неправильными. Перейдите к первому суставу шеи и переименуйте его в Neck. Второй сустав шеи (если таковой имеется) должен стать Neckl, третий - Neck2 и т.д. Первый сустав головы должен получить имя Head, второй - Headl и т.д. (Постановка FBIK рас­ познает только первый сустав головы Head, но в области головы их можно разместить сколько угодно.) Во-вторых, используя подчинение, из отдельных частей скелета необ­ ходимо собрать полный иерархический скелет. Например, выделите сустав LeftUpLeg, нажав клавишу , выделите сустав Hip s и, чтобы подчинить первый выделенный сустав второму, нажмите клавишу <Р> . Продолжайте обход скелета, связывая его не­ подчиненные разделы. В конце процесса при выделении сустава Hip s должны подсвечи­ ваться все кости скелета (т.е. сустав Hip s должен стать старшим суставом иерархии). (Если этого не произошло, подчините зависший раздел основному скелету.) В конце скелет должен принять вид, показанный на рис. 8.22. В качестве справочной информации можно обратиться к имеющемуся на компакт-диске файлу MachismoSkeleton. та.

Рис. 8.22. Полный иерархический скелет

Как видно в табл. 8.1, в Майя система построения FBIK может идентифицировать об­ рабатываемые части тела по именам их суставов. Кроме того, в процессе построения FBIK для обозначения создаваемых частей тела можно использовать не только имена суставов, но и метки (label). Преимущества и недостатки, связанные с каждым методом идентификации суставов, таковы: именование суставов предусматривает намного боль­ ший диапазон суставов (например, leftArmroll), чем метки суставов; но если у студии уже есть определенная система именования суставов, то использование меток вместо имен суставов позволит продолжить рабочий процесс, не нарушая текущие соглашения по именованию.

В связи с отсутствием соглашения об именовании будем использовать схему с име­ нами суставов. Если же более предпочтительно использование меток суставов, то выде­ лите некий сустав (например, сустав leftArm), выберите пункт меню Skeleto n => Joint Labelling => Ad d FBIK Labels => Label Left (Скелет => Разметка сустава => Добавить метки FBIK => Разметить левую часть). Таким образом, далее будут ставиться метки для левой стороны персонажа, а потому этот этап (или аналогичный для правой стороны или цен­ тра) достаточно выполнить для стороны персонажа только один раз. Затем из того же

меню Skeleton => Joint Labelling => Ad d FBIK Labels выберите пункт Label Shoulde r (Отметить плечо). В качестве альтернативы можно выделить сустав, открыть редактор атрибутов, раскрыть раздел Joint (Сустав), а затем раздел Joint Labelling (Разметка сус­ тава) и из раскрывающегося списка Side (Сбоку) выбрать вариант Left (Левая), а из рас­ крывающегося списка Тур е (Тип) - вариант Ar m (Рука).

Таблица 8 .1 . Корректные имена для всех возможных суставов в постановке FBIK

Любой способ даст одинаковый результат; выбирайте тот, который наиболее эффек­ тивен в конкретной ситуации. Процедура drawBas e из сценария drawBase.me l при­ сваивает каждому суставу не только правильное имя, но и правильную метку, так что в следующем разделе можно использовать каждый из приведенных способов создания реализации системы инверсной кинематики всего тела. Если хотите использовать метки суставов, измените метки в области шеи и головы скелета так же, как это делалось ранее для переименования суставов вручную.

Хотя это может быть и не столь очевидным, но многие из только что созданных суставов имеют обратную (inverted) или безосевую (off-axis) ориентацию: ось Y отдельных суставов может быть направлена в непредсказуемом направлении, не согла­ суясь с другими суставами. Возможно, это и не покажется большой проблемой, но отсут­ ствие однообразия ориентации суставов приведет к трудностям при оснащении и анима­ ции, поэтому сейчас необходимо устранить эту проблему. К счастью, был написан сцена­ рий MEL, который показывает ориентацию сустава (его локальных осей вращения) и предоставляет несколько удобных способов решения всех трудностей, связанных с ориента­ цией. Запустите имеющийся на прилагаемом компакт-диске сценарий jointFlip.mel (в окне редактора сценариев выберите пункт меню File => Sourc e Script (Фай л => Загрузить сценарий)). Затем, чтобы выполнить определенную в сценарии процедуру jointFlip, интерфейс которой приведен на рис. 8.23, введите в командной строке команду jointFli p и нажмите клавишу . Если пользователь предпочитает использовать

встроенные инструменты Майя, то он может использовать инструмент Orient Joint (Ориентация суставов), доступный после выбора в наборе меню Animatio n (Анимация) пункта Skeleto n => Orient Joint (Скелет => Ориентация суставов), который работает ана­ логично сценарию jointFlip. Фактически, поскольку каждый инструмент имеет эле­ менты, отсутствующие у других, используя сразу оба средства, можно решить даже наи­ более трудные проблемы ориентации суставов.

Рис. 8.24. Вращение цепи суставов (а) с различной ориентацией (б) и с оди­ наковой ориентацией (в)

Выделив скелет Машизмо, выполните из командной строки процедуру jointFlip . Эта процедура позволяет выделить в окне сцены => целый скелет или только какой-то его раздел (например, руку), отобразить оси вращения, перемещаться вверх и вниз по ие­ рархии и изменить ориентацию любого сустава. Дл я каждой цепи суставов (спины, руки, ноги и т.д.) важно расположить оси Y и Z в одном направлении, как на рис. 8.25. Обрати­ те внимание на то, что ориентация последнего сустава цепи (например, последнего сус­ тава пальца) несущественна, так как его вращение ни на что не влияет. Когда все оси вращения различных частей скелета обращены в одном направлении, скелет готов к ос­ нащению и созданию оболочки.

Рис. 8.25. Корректировка локальных осей вращения суставов Машизмо для обеспече­ ния совместимости ориентации всех частей

Добавление к скелету инверсной кинематики всего тела

Появление системы инверсной кинематики всего тела чрезвычайно упростило созда­ ние скелета, движение которого напоминает движение человека. Инверсная кинематика всего тела является прямым наследием программного обеспечения Motion Builder. Те­ перь система Motion Builder интегрирована в Майя в виде первоклассного дополнения, а не автономной программы (хотя, конечно, систему Motion Builder можно приобрести

как отдельное приложение компании Autodesk). Дл я тех, кто оснащал персонажи в Майя раньше, инверсная кинематика всего тела стала изменением парадигмы: система инверс­ ной кинематики всего тела (FBIK) основана на новом исполнительном элементе hikEffector (сокращение от human IK effector - исполнительный элемент инверсной кинематики человека), способном поддерживать несколько узлов. В то время как все ос­ тальные исполнительные элементы и маркеры IK допускают только один вход, исполни­ тельный элемент hikEffecto r в одном узле размещает все исполнительные элементы (стопы ног, кисти рук и т.д.). Эта новая схема данных делает возможным автоматическое реагирование элементов тела на манипулирование персонажем в окне сцены. Например, перемещение вверх и вниз тазобедренных суставов персонажа с FBIK приводит в соот­ ветствующее движение позвоночник, руки и ноги, чем не только создает реалистичную вторичную анимацию, но и упрощает работу аниматора.

Используя систему инверсной кинематики всего тела, можно создать оснастку четвероно­ гих животных, а также "нестандартную" оснастку человека (например, с дополнительными пальцами рук или ног). Хотя тут основное внимание сосредоточено на создании стандарт­ ной двуногой оснастки, в документации Майя описывается создание и других типов оснасток. Если выбрать пункт меню Skeleton => Full Body IK => Get FBIK Example (Скелете Инверсная кине­ матика всего тела => Получить пример FBIK), то вполне можно получить типичную оснастку для четвероногого животного (или двуногого существа). Примеры содержат оснастки верблю­ да и человека.

Как только суставы будут правильно названы или получат правильные метки, созда­ ние системы инверсной кинематики всего тела не составит особого труда. Однако для достижения желаемого поведения системы, после ее создания, обычно приходится вы­ полнять несколько дополнительных действий. Дл я создания системы FBIK выделите корневой сустав скелета, а затем в наборе меню Animatio n (Анимация) выберите пункт меню Skeleton => Full Bod y IK => Ad d Full Bod y IK (Скелет => Инверсная кинематика всего тела => Добавить инверсную кинематику всего тела ) . В окне параметров для переклю­ чателя Identify Joint s (Идентифицировать суставы) выберите значение By Nam e (По имени), а для параметра Posture (Поза) оставьте значение Biped (Двуногая). Щелкните на кнопке Ad d (Добавить), и через несколько секунд появится оснащенный скелет, как показано на рис. 8.26.

Сразу после создания системы FBIK опробуйте работу с исполнительными элементами: захватите любую из прямоугольных оболочек или больших ок­ ружностей скелета (расположенных в кистях рук, ступнях ног, шее, голове и т.д.) и переместите их. Тело персонажа должн о реагировать на это более ил и менее естест­ венными движениями. Обратите внимание, что при выделении исполнительного элемента FBI K все суставы, на которые он воздействует, становятся пурпурными. (Таким образом, при выделении исполнительного элемента HipsEf f пурпурным становится весь скелет.) В качестве справки можно открыть прилагаемый на ком­

пакт-диске фай л MachismoFBlKStart.ma .

Настройка инверсной кинематики всего тела

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

чит правильную анимацию переката ступни. Чтобы создать вторичный исполнительный элемент для левой ступни, выделите узел LeftFootE f f (прямоугольную оболочку во­ круг левой щиколотки) и из набора меню Animatio n (Анимация) выберите пункт Skeleton => Full Body IK => Ad d Secondar y Effector (Скелет => Инверсная кинематика всего тела => Добавить вторичный исполнительный элемент). В результате вокруг щиколотки появится сфера, соответствующая узлу LeftFootEffPivo t (этот узел можно переиме­ новать, например в LeftFootEffHeel). Переместите этот исполнительный элемент к пятке левой ноги, как показано на рис. 8.27.

Рис. 8.26. Добавление инверсной ки­ нематики всего тела к скелету Машизмо

Рис. 8.27. Правильно располо­ женный вторичный исполни­

тельный элемент пятки

Также можно уменьшить масштаб исполнительного элемента, чтобы привести его в соответствие с размерами остальных исполнительных элементов персонажа. Далее, пока выделен узел LeftFootEffHeel, для выбора исполнительного элемента выберите пункт меню Skeleton => Full Body IК => Activate Secondar y Effector (Скелет => Инверсная кинематика всего тела => Активизировать вторичный исполнительный элемент). Повто­ рите этот процесс для правой ноги и при этом следите за тем, чтобы в виде сбоку испол­ нительные элементы находились, насколько это возможно, на одной линии. Теперь при повороте вторичного исполнительного элемента будет видно, что каждая ступня враща­ ется вокруг пятки, обеспечивая тем самым корректное движение при ходьбе от пятки.

Чтобы организовать шаг с правильным переходом с пятки на носок, необходимо создать еще по одному вторичному исполнительному элементу в подъеме каждой стопы. Следуя предыдущим этапам, добавьте вторичный исполнительный элемент к каждой ступне (переименуйте добавленные элементы в LeftFootEffBall и rightFootEffBall), рас­ положите каждый из них в подъеме соответствующей ступни и выберите. По окончании ступни должны выглядеть примерно так, как на рис. 8.28. После добавления этих двух исполнительных элементов при повороте первичного исполнительный элемента ступня будет перемещаться правильно.

По умолчанию все персонажи с FBIK должны контактировать с полом, установлен­ ным на уровне сетки сцены (значение 0 по оси Y). Поскольку в настоящий момент ступ­ ни персонажа расположены именно на данном уровне, эти параметры корректировать не надо; но на них полезно взглянуть на тот случай, если когда-нибудь придется изменить уровень пола для создаваемого, персонажа. Чтобы увидеть контактные маркеры пола (floor contact marker), зачастую называемые просто контактными маркерами (contact marker), выделите узел HipsEff (корневой узел персонажа), а затем в панели каналов

для узла hikFloorContactMarker l установите параметр Feet Contac t (Контакт ступ­ ней) в значение On (Включено). (Убедитесь, что параметр Draw Feet Contact (Отображать контакт ступней) также имеет значение On (Включено).) В результате во­ круг каждой ступни должен появиться ряд прямоугольных оболочек, как показано на рис. 8.29. (Отображение контактных маркеров с полом для рук задает параметр Hand s Contact (Контакт кистей).) Каждый набор из шести прямоугольных оболочек должен непосредственно окружать каждую ступню, определяя область, в которой ступни сопри­ касаются с полом.

Рис. 828. Добавление к ступням Рис. 829. Отображение мар- Машизмо вторичных исполни- керов контакта с полом тельных элементов пятки и

подъема

Для настройки контактных маркеров не следует непосредственно манипулировать прямоугольными оболочками; вместо этого в панели каналов следует откорректировать значения атрибутов узла hikFloorContactMarkerl . Параметр Foot Height (Высота ступни) позволяет устанавливать высоту, на которой происходит контакт с полом; уве­ личение этого значения придаст скелету такой вид, как будто он стоит на более высоком основании. Другие параметры регулируют место расположения контактных маркеров вокруг ступни. Параметры Foot Back (Задняя часть ступни), Foot Middle (Средняя часть ступни) и Foot Front (Передняя часть ступни) устанавливают расположение задней, средней и передней пар контактных маркеров, a Foot In Side (Внутренняя часть ступни) и Foot Out Side (Наружная часть ступни) регулируют расположение трех внутренних и внешних маркеров каждой ступни.

Для хорошо сконструированного скелета с не слишком необычной геометриче­ ской формой начальные параметры контактных маркеров будут почти правиль­

ными. Не бойтесь корректировать параметры, если они не совершенны, но помните о том, что главное - окружить геометрию ступней маркерами и что маркеры сзади, посе­ редине и спереди ступни должны быть расположены на уровне исполнительных элемен­ тов пятки, подъема и носка ступни соответственно. Если выделить контактные маркеры и открыть редактор атрибутов, то в нем на вкладке hikFloorContactMarker l в раскры­ вающемся разделе Feet То Floor Contac t Attributes (Атрибуты контакта ступней с полом) можно получить доступ к нескольким другим, недоступным в панели каналов, атрибу­ там. Параметр Feet Floor Pivot (Опорная точка ступней на полу) позволяет установить

опорную точку ступни, разрешая выбрать при этом вариант auto (автоматически), ankle (щиколотка) или toes (носок). Для параметра Feet Contact Type (Тип контакта ступней) возможны такие варианты: normal (обычный) (для двуногого персонажа), ankle (щиколотка), toe base (основание носка) и hoof (копыто). По умолчанию значение пара­ метра Feet Contact Stiffness (Жесткость контакта ступней) равно о, но для придания сус­ тавам ступней большей жесткости его можно увеличить. После корректировки параметров

контактного маркера пола отображение этих маркеров можно отключить, сбросив фла­ жок Draw Feet Contac t (Отображать контакт ступней); после этого маркеры будут скры­ ты, но останутся на сцене. Для Машизмо конкретные значения параметров приведены в имеющемся на компакт-диске файле MachismoFBIKComplete . ma.

Кроме того, на различной высоте от уровня базового пола можно добавить

контактные плоскости (contact plane). Это может пригодиться, если пер­ сонажу необходимо, скажем, положить руку на стул, в то время как он нагибается, чтобы поднять что-то с пола. Чтобы создать плоскость контакта с полом, выделите исполни­ тельный элемент, к которому следует добавить плоскость, а затем выберите пункт меню Skeleton => Full Bod y IK => Ad d Floor Contact Plane (Скелет => Инверсная кинематика всего тела => Добавить контактную плоскость пола). При этом прямо под исполнительным эле­ ментом появится небольшая плоскость. Однако перед тем как контактная плоскость начнет работать, для параметра Hand s Contact (Контакт кистей) или Feet Contact (Контакт ступней) должно быть установлено значение On (Включено). Например, если для параметра Hand s Contact еще не установлено значение On , выделите узел HipsEf f и установите для него это значение параметра. Теперь кисть руки (или ступня) при пере­ мещении должна остановиться, когда достигнет контактной плоскости. Контактную плоскость можно двигать вверх и вниз, перемещать вдоль плоскости X-Z и благодаря но­ вовведению Майя 8 изменять ее угол, поворачивать. При изменении угла контактной плоскости кисть (или стопа) будет поворачиваться, оставаясь на ее поверхности. При этом для каждой кисти и ступни можно добавить сколько угодно контактных плоскостей пола, что упрощает создание лестницы или другого многоярусного контактного объекта.

Для исполнительных элементов можно также откорректировать закрепление (pinning). Например, для исполнительных элементов ступни закреплено перемещение и вращение, исполнительный элемент бедер не закреплен, а для исполнительных элемен­ тов кистей закреплено только перемещение. Закрепленное состояние задает реакцию конкретного исполнительного элемента на движение тела. При манипуляциях телом вместе с ним будет свободно перемещаться и поворачиваться незакрепленный исполни­ тельный элемент. Исполнительные элементы, для которых закреплено перемещение, ос­ танутся зафиксированными в пространстве (если не будут перемещены непосредствен­ но), но могут свободно вращаться. Исполнительные элементы с закрепленным вращени­ ем будут свободно перемещаться в пространстве, но не смогут вращаться, если их не повернут непосредственно. Исполнительные элементы, для которых закреплено и пере­ мещение, и вращение, могут перемещаться и (или) вращаться только тогда, когда эти действия будут производиться непосредственно над ними. Но из этого правила есть ис­ ключение. Если закрепление должно привести к тому, что растяжение цепи суставов превысит суммарную длину ее костей (например, если вытянуть тазобедренный сустав так далеко, чтобы ноги стали совершенно прямыми), то в этом случае закрепленные ис­ полнительные элементы будут перемещаться так, чтобы кости не растягивались. Попро­ буйте установить и снять закрепление различных исполнительных элементов построен­ ного скелета и посмотрите, как при этом изменяется реакция тела на его перемещение в пространстве.

Различные закрепленные состояния отражают изменение формы исполнительных элемен­ тов: незакрепленные исполнительные элементы отображаются как сферические; исполни­ тельные элементы с закрепленным перемещением отображаются в виде прямоугольных оболочек; исполнительные элементы, для которых закреплено вращение, имеют вид полу­ сфер; а исполнительные элементы, для которых закреплено перемещение и вращение, ото-

бражаются как прямоугольные оболочки с полусферами. Такое визуальное отражение со­ стояния позволяет с первого взгляда определить тип поведения исполнительных элементов. В главе 10, "Нелинейная анимация", будет рассмотрено применение закрепленных и неза­ крепленных исполнительных элементов, а также подчиненных персонажей для анимации оснастки с инверсной кинематикой всего тела.

И наконец, чтобы настроить поведение использующей инверсную кинематику всего тела оснастки при манипулировании ею в окне сцены и анимации, многие атрибуты можно откорректировать в редакторе атрибутов. Выделите узел HipsEff, а затем от­ кройте редактор атрибутов. Вкладка HipsEff предоставляет доступ к основным парамет­ рам управления, таким как закрепление исполнительного элемента, параметру Pivot Offset (Смещение опорной точки) (определяющем точку, вокруг которой поворачивает­ ся исполнительный элемент) и параметру radiu s (Радиус) (размер исполнительного элемента).

На вкладке узла hikHandl e в разделе HIK Handle Attributes (Атрибуты маркера ин­ версной кинематики человека) находится множество управляющих параметров, которые позволяют точно настроить постановку FBIK. Главный элемент управления - это фла­ жок Activate (Активизировать), определяющий, будет ли функционировать FBIK. Пара­ метр Posture Тур е (Тип позы) может быть установлен в одно из двух значений: biped (двуногая) или quadrupe d (четвероногая). Параметр Hip Translatio n Mod e (Режим пере­ мещения тазобедренного сустава) может принимать значение worl d rigid или body rigid; корректируйте этот параметр, только если для узла HipsEff были созданы отдельные узлы перемещения и вращения. (Это сделано в параметрах создания использующей FBIK оснастки.) Параметр realisti c Shoulde r Solving (Реалистичное плечо) определяет, будет ли при поднятии руки над плечом поворачиваться ключица (clavicle bone). Значение 1 задает вполне реалистичное движение плеча (с полным участием ключицы), а значение 0 фиксирует сустав ключицы на месте. В зависимости от персонажа (например, мультипликационного или фотореалистического) можно либо использовать крайние зна­ чения, либо искать значение где-то посередине. Параметр Solve Fingers (Рассчитывать пальцы) управляет тем, будет ли вычисляться отдельное движение каждого пальца. По­ скольку пальцы имеют столько же суставов, сколько и остальная часть стандартного ске­ лета, сбросив флажок Solve Fingers и одновременно заблокировав анимацию, можно ус­ корить взаимодействие персонажа со сценой.

При установленном в разделе Pull (Усилие) флажке Expert Mode (Квалифицированный режим) становятся доступными для изменений раскрывающиеся разделы (Pull , Left Ar m Pull (Усилие левой руки), righ t Ar m Pull (Усилие правой руки), Left Leg Pull (Усилие левой ноги) и righ t Leg Pull (Усилие правой ноги)), определяющие усилие. В них можно корректировать, насколько сильно каждая часть тела (голова, грудь, левая нога и т.д.) притягивается к движению тела как единого целого. Чем выше значение каждого усилия, тем меньшее влияние оказывает перемещение других частей тела на эту конкретную часть тела. (Значения параметров reac h Translatio n (Достижимость перемещения) и reac h rotatio n (Достижимость вращения) каждого отдельного исполнительного эле­ мента умножаются на значение атрибута Pull; поэтому если значение достижимости равно 0, то даже значение 1 атрибута Pull не будет иметь никакого эффекта.) Каждое раскрывающееся меню раздела Pull (Усилие) предоставляет более детальный контроль над работой функций. Можно, например, откорректировать, как работает левый локоть или как кисть воздействует на бедра.

Раздел rol l Attributes (Атрибуты вращения) позволяет распространить некоторый вра­ щающий поворот руки или ноги (вращение вокруг продольной оси кости) на вращающие кости (roll bone), если они есть у персонажа. Так как для Машизмо были созданы вращающие суставы, в разделе rol l Attributes (Атрибуты вращения) можно выбрать все или некоторые из них. Если, например, необходимо разделить вращение предплечья 50×50 между вращающими суставами локтя и предплечья, установите флажки Left Forearm rol l Mode (Режим вращения левого предплечья) и righ t Forearm rol l Mode (Режим вращения правого предплечья), чтобы выбрать соответствующие режимы, и установите значения равными 0.5 (т.е. 50%). Чем больше значение, тем большую часть общего поворота берет на себя вращающий сустав. Пока персонаж не привязан к скелету, увидеть влияние этого параметра сложно (привязка геомет­ рической формы к скелету обсуждается в следующем разделе), но это влияние важно для большинства реалистичных персонажей.

Раздел Stiffness Attributes (Атрибуты жесткости), содержащий вложенные разделы параметров жесткости рук, ног и тазобедренного сустава, управляет ускорением каждой части тела во время воспроизведения. (Н а взаимодействие сцены эти параметры не влия­ ют.) Чтобы замедлить движение части тела, скажем ноги, по сравнению со стандартной скоростью, увеличьте значение жесткости (по умолчанию оно равно 0 . 5) . При анимации тела эта нога будет казаться более тяжелой. Чтобы нога выглядела более легкой, устано­ вите для нее жесткость, близкую к 0.

Параметр Kill Pitch (Убить тангаж) как для локтей, так и для колен управляет способ­ ностью сустава вращаться в направлении тангажа (pitch) (по умолчанию это вокруг оси Z). Данный элемент управления используется для устранения нежелательного вин­ тового вращения (pitch rotation) в суставах колена или локтя.

В качестве альтернативы для создания контакта кистей или ступней с полом можно использовать атрибуты разделов Finger Tip Sizes (Размеры пальцев руки) и To e Tips Size (Размеры пальцев ноги). В этом случае решатель hi k вместо контактных маркеров пола вокруг каждой конечности, размером которого управляет соответствующий атри­ бут Tip, создает сферу. Чем больше значение этого атрибута, тем больше этот палец для решателя (и соответственно настраивается контакт ступни и кисти с любой плоскостью пола). Указанные два способа не могут применяться одновременно: при на­ личии контактной плоскости атрибуты размеров пальцев игнорируются.