3D Studio MAX: первые шаги. Урок 23. Построение иерархий с помощью системы костей Bones

Светлана Шляхтина

Теоретические аспекты

Понятие системы костей

Создание структуры костей

Связывание структуры костей с моделью

Анимирование модели

Примеры анимации объектов, имеющих кости

Плывущий осьминог

Анимированный семафор

Плывущий дельфин

Связывание структуры костей с моделью

Внедрение в модель структуры костей само по себе никак не скажется на поведении модели — необходимо обеспечить между ними взаимодействие, что возможно путем назначения модели модификатора Skin (Кожа), связанного с системой костей. Данный модификатор может воздействовать на любую Mesh-, Patch- или Nurbs-модель, обеспечивая ее плавную деформацию с учетом смещения при движении костей, причем в качестве костей могут использоваться не только Bones-объекты, но и любые другие объекты геометрии, включая сплайны. Технология работы с ним следующая: сначала создается модель (следует иметь в виду, что после применения модификатора Skin работа с моделью на уровне подобъектов может привести к самым непредсказуемым результатам) и для нее настраивается система костей. Кости нужно максимально подогнать под размер модели и отрегулировать положение их опорных точек, которые обязательно должны располагаться в местах суставов (то есть именно там, где при движении предполагается деформация). Затем к модели применяется модификатор Skin и для каждой кости тщательно настраивается степень ее влияния на модель.

Рассмотрим нюансы назначения модификатора Skin на практике. Создайте новую сцену с цилиндром, имеющим следующие параметры: Radius — 3, Height — 60, Sides — 36. Назовите данный цилиндр armCyl — будем считать его упрощенной имитацией фрагмента руки, состоящей из плеча и локтя. Клонируйте его в режиме Copy и установите у клона параметры Radius и Height равными 0,5 и 30 соответственно. Установите данный цилиндр в нижней части цилиндра armCyl. Клонируйте тонкий цилиндр и поместите клон в верхней части цилиндра armCyl. Назовите эти цилиндры bone01 и bone02 и присвойте им другой цвет для упрощения ориентации (рис. 23) — в нашем примере они будут играть роль костей. Прежде чем переходить к связыванию предполагаемых костей с объектом, нужно настроить положение их опорных точек. Очевидно, что опорные точки цилиндров bone01 и bone02 находятся внизу. В случае верхнего цилиндра такое положение дел нас устраивает, поскольку опорная точка лежит как раз в месте предполагаемого сгиба, а вот опорную точку нижнего цилиндра придется передвинуть. Выделите объект bone01, откройте на панели Hierarchy закладку AdjustPivot (Настройка опорной точки), щелкните на кнопке AffectPivotOnly (Воздействие на центр связывания) и переместите опорную точку так, чтобы она идеально совпала с опорной точкой объекта bone02 (рис. 24).

 

Рис. 23. Первоначальный вид сцены

Рис. 23. Первоначальный вид сцены

 

Рис. 24. Перемещение опорной точки объекта bone01

Рис. 24. Перемещение опорной точки объекта bone01

 

В окне Front выделите объект armCyl, активируйте панель Modify и назначьте объекту модификатор Skin — пока это никак не скажется на цилиндре. В свитке Parameters щелкните на кнопке Add и выберите все объекты в списке (то есть bone01 и bone02) — рис. 25. Для настройки сферы влияния костей на основной цилиндр щелкните на кнопке EditEnvelopes (Редактировать огибающие) и в списке Skin-объектов выделите цилиндр bone01 (рис. 26). Это приведет к появлению вокруг данного цилиндра двух огибающих с маркерами в верхней и нижней частях — двигая данные маркеры и изменяя радиусы огибающих, можно регулировать сферу влияния кости. Степень влияния кости отображается на объекте разными цветами: красный цвет свидетельствует о максимальном контроле (то есть попавшие в эту зону вершины будут деформироваться), синий — о полном отсутствии воздействия кости, оранжевый и зеленый — о промежуточном состоянии. Однако пока такое разбиение на цветовые зоны на объекте незаметно, поскольку масштаб небольшой и радиус огибающих мал.

 

Рис. 25. Вид панели Modify для объекта armCyl после подключения костей

Рис. 25. Вид панели Modify для объекта armCyl после подключения костей

 

Рис. 26. Результат активирования объекта bone01 в режиме редактирования его как Skin-объекта

Рис. 26. Результат активирования объекта bone01 в режиме редактирования его как Skin-объекта

 

Выделите верхние вершины внутренней огибающей и в разделе Envelope Properties (Свойства огибающей) увеличьте значение параметра Radius до 4 (рис. 27). Выделите верхние вершины внешней огибающей и установите радиус равным 12. Затем аналогичную корректировку проведите для нижних радиусов обеих огибающих (рис. 28). Переключитесь в окно Perspective (рис. 29) и обратите внимание, что нижняя часть цилиндра armCyl окрашена красным цветом, а верхняя — синим, то есть зона влияния данной кости ограничена нижней частью цилиндра. Выделите цилиндр bone02 и настройте параметры его влияния аналогичным образом (рис. 30).

 

Рис. 27. Увеличение радиуса внутренней огибающей

Рис. 27. Увеличение радиуса внутренней огибающей

 

Рис. 28. Вид огибающих объекта bone01 после изменения радиусов

Рис. 28. Вид огибающих объекта bone01 после изменения радиусов

 

Рис. 29. Вид цилиндра в окне Perspective после настройки сферы влияния объекта bone01

Рис. 29. Вид цилиндра в окне Perspective после настройки сферы влияния объекта bone01

 

Рис. 30. Вид цилиндра в окне Perspective после настройки сферы влияния объекта bone02

Рис. 30. Вид цилиндра в окне Perspective после настройки сферы влияния объекта bone02

 

Выйдите из режима редактирования костей модификатора Skin,щелкнув на кнопке EditEnvelopes. Выделите один из цилиндров, например цилиндр bone02, и поверните его произвольным образом — цилиндр armCyl деформируется в соответствии с поворотом кости (рис. 31), однако на сгибание гибкого объекта это будет мало похоже. Причин такого положения дел две: во-первых, количество сегментов в данном цилиндре по высоте явно недостаточно, во-вторых, плохо отрегулированы параметры влияния костей. Выделите объект armCyl, на панели Modify подсветите строку Cylinder и увеличьте значение параметра Height Segments, например, до 15 — изгиб станет заметно более гладким (рис. 32). Подсветите строку Envelope, выделите объект bone01 и уменьшите значения внутреннего и внешнего радиусов огибающих примерно до 3,5 и 6 (рис. 33). Аналогичную операцию проведите для объекта bone02 — это заметно улучшит результат (рис. 34). Для получения еще более привлекательного результата назначьте объекту armCyl модификатор Relax (Смягчение) и вручную подберите для него окончательное значение параметра HeightSegments, которое обеспечивает наилучший результат деформации объекта при сгибании (рис. 35).

 

Рис. 31. Результат деформации armCyl

Рис. 31. Результат деформации armCyl

 

Рис. 32. Вид деформации armCyl после корректировки параметра HeightSegments

Рис. 32. Вид деформации armCyl после корректировки параметра HeightSegments

 

Рис. 33. Уменьшение радиусов огибающих для объекта bone01

Рис. 33. Уменьшение радиусов огибающих для объекта bone01

 

Рис. 34. Вид деформации armCyl после повторной корректировки радиусов огибающих

Рис. 34. Вид деформации armCyl после повторной корректировки радиусов огибающих

 

Рис. 35. Окончательный вид деформированного цилиндра

Рис. 35. Окончательный вид деформированного цилиндра

В начало В начало

Анимирование модели

Чтобы анимировать модель, имеющую скелет, достаточно анимировать ее кости. Рассмотрим это на примере нашей рабочей сцены с тремя цилиндрами. Выделите ранее повернутый на некоторый угол цилиндр bone02 и верните его в исходное положение. Убедитесь в том, что активен нулевой кадр, включите режим создания анимации с автоматической генерацией ключей, передвиньте ползунок таймера анимации в 50-й кадр и поверните цилиндр bone01 некоторым образом (рис. 36), переключитесь в последний (100-й) кадр и верните цилиндр в исходное положение. Выйдите из режима создания анимации, проиграйте ролик, и вы сразу увидите, что объект armCyl сгибается и разгибается с учетом настройки параметров влияния костей (рис. 37) — то есть примерно так, как сгибалась бы рука в локте.

 

Рис. 36. Вид сцены в 50-м кадре

Рис. 36. Вид сцены в 50-м кадре

 

Рис. 37. Визуализация одного из промежуточных кадров анимации

Рис. 37. Визуализация одного из промежуточных кадров анимации

В начало В начало

Примеры анимации объектов, имеющих кости

Плывущий осьминог

Воспользуемся системой костей для получения имитации плывущего осьминога. Вначале создайте самого осьминога с одним щупальцем, в роли которого можно задействовать примитив Spring из группы Dynamics Objects (рис. 38). Активируйте инструмент построения костей (флажки Assign to Children и Assign to Root в свитке IK Chain Assignment должны быть отключены) и в проекции Left, открытой на весь экран, создайте Bones-структуру, Root-объект которой должен располагаться в основании щупальца (рис. 39). Старайтесь размещать кости очень аккуратно и делать их небольшими и равного размера, чтобы данная структура в дальнейшем обеспечила максимальную гибкость щупальца. Вернитесь к работе с четырьмя проекциями, и вы убедитесь, что, несмотря на все старания, кости размещены не в самом щупальце (рис. 40). Поэтому активируйте проекцию Top и последовательно, начиная с Root-кости, откорректируйте положение каждой косточки, чтобы созданный ими костный хребет действительно был внутри щупальца (рис. 41 и 42).

 

Рис. 38. Исходная сцена

Рис. 38. Исходная сцена

 

Рис. 39. Появление системы костей

Рис. 39. Появление системы костей

 

Рис. 40. Первоначальное положение Bones-системы и щупальца

Рис. 40. Первоначальное положение Bones-системы и щупальца

 

Рис. 41. Один из этапов корректировки положения костей

Рис. 41. Один из этапов корректировки положения костей

 

Рис. 42. Окончательный вид Bones-системы и щупальца

Рис. 42. Окончательный вид Bones-системы и щупальца

 

Назначьте системе костей IK-контроллерHISolver, применив команду Animation=>IKSolvers=>HISolver и указав в качестве конечного эффектора последнюю в цепочке кость (рис. 43). Убедитесь в том, что при перемещении перекрестия вся Bones-система соответствующим образом видоизменяется. Создайте объект Dummy и свяжите перекрестие IK-цепи с данным объектом-пустышкой (рис. 44). Попробуйте переместить Dummy-объект, и вы убедитесь, что система костей шевелится — если это не так, то проверьте созданные связи в окне Select by Name и вновь проведите связывание.

 

Рис. 43. Появление перекрестия, свидетельствующего о создании IK-цепи

Рис. 43. Появление перекрестия, свидетельствующего о создании IK-цепи

 

Рис. 44. Появление Dummy-объекта

Рис. 44. Появление Dummy-объекта

 

Выделите щупальце (объект Spring01), активируйте панель Modify и назначьте объекту модификатор Skin. В свитке Parameters данного модификатора щелкните на кнопке Add и выберите в списке все Bones-объекты вместе с объектом-пустышкой (рис. 45). После этого при перемещении Dummy-объекта шевелиться будет уже само щупальце. Для большей гладкости деформирующихся щупалец назначьте объекту Spring01 модификатор Relax (рис. 46). Размножьте щупальце, применив операцию Array (команда Tools=>Array — Инструменты=>Массив) с такими параметрами, как на рис. 47. Это приведет к получению целого массива щупалец (рис. 48).

 

Рис. 45. Подключение костей и Dummy-объекта в списке объектов модификатора Skin

Рис. 45. Подключение костей и Dummy-объекта в списке объектов модификатора Skin

 

Рис. 46. Вид панели Modify для объекта Spring01 после назначения ему модификатора Relax

Рис. 46. Вид панели Modify для объекта Spring01 после назначения ему модификатора Relax

 

Рис. 47. Параметры настройки операции Array

Рис. 47. Параметры настройки операции Array

 

Рис. 48. Вид осьминога с восемью щупальцами

Рис. 48. Вид осьминога с восемью щупальцами

 

Анимируйте осьминога и объект-пустышку так, чтобы создавалось впечатление, что осьминог плывет, слегка шевеля щупальцами. Войдите в режим создания анимации с автоматической генерацией ключей, переместите ползунок на 50-й кадр, выделите все объекты, входящие в состав осьминога, и в окне Front переместите его произвольным образом. Перейдите в следующий ключевой кадр, еще раз сместите осьминога и т.д. Потом вновь вернитесь в 50-й кадр, выделите Dummy-объект и тоже переместите его (а при необходимости еще и поверните), добиваясь желаемого вида щупалец. Аналогичные операции проведите и в отношении других ключевых кадров. Отключите режим автоматического создания ключей и проиграйте анимацию — осьминог поплывет, шевеля щупальцами (рис. 49).

 

Рис. 49. Плывущий осьминог

Рис. 49. Плывущий осьминог

В начало В начало

КомпьютерПресс 2'2008

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует