3dsMax. Урок № 12. Прямая кинематика

3dsMax. Урок № 12. Прямая кинематика

Объекты могут быть объединены в группы, и тогда они являются подчиненными этой группе и равноправными между собой. Другой способ объединения объектов – это создание иерархий, или иерархических связей. Иерархия – это набор объектов со связями между ними по принципу «предок-потомок» (другое название таких связей: «родительский объект – дочерний объект»). Предок контролирует поведение одного или более потомков. В то же время предки могут контролироваться другими предками, имеющими более высокий уровень иерархии. Потомок, контролируемый некоторым предком, может оказаться предком для других потомков, находящихся по иерархии ниже него. У каждого предка может быть несколько потомков, однако каждый потомок имеет только одного предка. Самый верхний объект иерархии управляет всеми объектами иерархии и называется корневым.

Связывание следует производить от потомкам к предкам, т.е. от младших в иерархии объектов к старшим. Для связывания объектов вначале активизируется инструмент Select and Link (Выделить и связать) . Затем выделяется самый младший в предполагаемой структуре объект и при нажатой левой кнопке мыши указывается объект, который должен стать предком. Затем выделяется второй снизу в структуре объект, и в отношении него выполняется та же самая операция, и так до тех пор, пока не будет установлена связь с корневым объектом. Чтобы разорвать связь, следует выделить объект, связь которого с вышестоящим в иерархии объектом должна быть уничтожена, и щелкнуть на кнопке Unlink Selection (Разорвать связь выделенных объектов) .

Для примера рассмотрим модель настольной лампы, представленной на рис. 1 (файл Table_lamp1.max).

Прямая кинематика - 3d уроки и упражнения
Рис. 1

В этом примере присутствуют две группы — Support и Reflector, однако иерархические связи не установлены. Включите инструмент Select and Link (Выделить и связать) . Щелкните  курсором на объекте Reflector, который должен стать самым младшим объектом иерархической цепочки, и, удерживая мышку нажатой, перетащите курсор к объекту Lever03. При этом за курсором будет тянуться пунктирная линия. Отпустите кнопку мыши. Связь меду данными объектами установлена. Снова щелкните над объектом Lever03 и перетащите мышку к объекту. Повторяйте эти действия, чтобы установить иерархические связи, как показано на рис. 2 (файл Table_lamp2.max) .

Прямая кинематика - 3d уроки и упражнения
Рис. 2

Чтобы отобразить указанную структуру установленных связей, щелкните на кнопке  Select by Name (Выделить по имени)  основной панели инструментов или нажмите клавишу <H>. Это окно позволяет визуально убедиться в правильности создания структуры объекта.

Правила прямой кинематики

Преобразования перемещения и поворота объектов, связанных в иерархические цепочки, происходят по определенным правилам – правилам прямой или инверсной (обратной) кинематики. По умолчанию устанавливаются правила прямой кинематики. Это означает, что преобразования любого предка автоматически распространяются на все его потомки, но не касаются объектов-предков преобразуемого объекта. Выделите объект Hinge02 и поверните его на произвольный угол. Вместе с ним на тот же угол повернутся  его дочерние объекты, имеющие более низкий приоритет в иерархической цепочке (рис. 3).

Прямая кинематика - 3d уроки и упражнения
Рис. 3

Восстановите сцену в прежнем положении. Теперь выделите Lever03 и сместите его вниз. Вместе с ним переместится отражатель Reflector, но не сдвинутся с места объекты, имеющие более высокий иерархический уровень (рис. 4 ).

Прямая кинематика - 3d уроки и упражнения
Рис. 4

Объекты, имеющие самый низкий уровень иерархии (в данном случае – это объект Reflector), наследуют преобразования всех объектов-предков, однако преобразования этих объектов не влияют ни на один другой объект.

Обеспечение целостности конструкции

Восстановите сцену. Выделите объект Lever02 и установите локальную систему координат (Local). Поверните выделенный рычаг на произвольный угол (рис. 5).

Прямая кинематика - 3d уроки и упражнения
Рис. 5

Как видите, конструкция разрушилась. Чтобы обеспечить целостность этой конструкции при вращении ее звеньев, следует перенести их точки опоры (Pivot) в центры вращения. Проделаем это с объектом Lever02. Восстановите сцену. Выделите объект Lever02, перейдите в закладку Hierarchy (Иерархия) , щелкните там на кнопке Pivot (Точка опоры), а затем ниже на кнопке Affect Pivot Only (Воздействовать только на опорную точку). После этого щелкните на кнопке Align (Выровнять), а затем на объекте Hinge02. Выровняйте положение объектов по координатам X, Y, Z и опорным точкам (Pivot Point) и снова щелкните на кнопке Affect Pivot Only (Воздействовать только на опорную точку), чтобы отключить действие этой команды. Теперь вращение объекта Lever02 не будет приводить к разрушению конструкции. Аналогичные действия проделайте с другими рычагами, а опорную точку объекта Reflector совместите с концом рычага Lever03 (файл Table_lamp3.max).

Ограничение перемещения объектов в иерархической цепочке

Перемещение объектов в иерархической цепочке может быть ограничено. Для примера выделите рычаг Lever02 и в командной панели Hierarchy (Иерархия) щелкните на кнопке Link Info (Информация о связях) . Появятся свитки Locks (Блокировки) и Inherit (Наследование) (рис. 6).

Прямая кинематика - 3d уроки и упражнения
Рис. 6

Установите локальную систему координат (Local). Для блокировки вращений, которые могут быть применены к выделенному объекту, в свитке Locks (Блокировки) в области Rotation (Вращение) установите флажки для осей X и Y. Включите команду Select and Rotate (Выделить и повернуть)  и попробуйте повернуть рычаг Lever02 вокруг разных осей. Во всех случаях рычаг будет поворачиваться только вокруг оси Z локальной системы координат. Теперь выделите рычаг Lever01 и поверните его вокруг разных осей. Вместе с ним будет поворачиваться и рычаг Lever02. Это означает, что блокировка (Locks) действует только в том случае, если вы перемещаете тот объект, для которого эта блокировка установлена, и она не распространяется на преобразования дочернего объекта вместе с родительским.

Наследование преобразований

В свитке Inherit (Наследование) указываются преобразования, которые наследуются дочерним объектом от объекта-предка. По умолчанию установлены флажки всех преобразований по всем осям координат. Если, например, для рычага Lever02 сбросить флажок в области Rotation (Вращение) для оси Y, то при вращении рычага Lever01 вокруг оси Z его локальной системы координат рычаг Lever02 будет перемещаться поступательно, всегда оставаясь параллельным своему первоначальному положению (рис. 7).

Прямая кинематика - 3d уроки и упражнения
Рис. 7

Трансформацию цепочки объектов можно анимировать. Восстановите сцену. Войдите в режим Auto Key (Автоматическая установка ключей анимации) создания анимации с автоматической генерацией ключей, переместите ползунок на 50 кадр и в окне Front (Вид спереди) поверните рычаг Lever03 по часовой стрелке на угол в 30º . Затем переместите ползунок к  кадру с номером 75 и поверните Lever02 в ту же сторону еще на 30º. Выделите Lever02 и скопируйте 0-ой кадр в кадр с номером 50.  Переместите ползунок к кадру 100 и поверните Lever02 в обратную сторону. Отключите режим Auto Key (Автоматическая установка ключей анимации) и проиграйте анимацию.

Пример с настройками блокировок и наследований

Рассмотрим еще один пример с настройками блокировок и наследований. Создайте сцену с механическим манипулятором (рис.8, файл Manipulator.max).

Прямая кинематика - 3d уроки и упражнения
Рис. 8

Последовательно, начиная с объекта Hand, свяжите все детали друг с другом в соответствии со структурной схемой, приведенной на рис. 9.

Прямая кинематика - 3d уроки и упражнения
Рис. 9

Выделите объект VShaft и поверните его вокруг оси Z локальной системы координат. Вместе со всеми своими дочерними объектами он развернется соответствующим образом (рис. 10).

Прямая кинематика - 3d уроки и упражнения
Рис. 10

Чтобы избежать возможных ошибок и не допустить перемещений объекта VShaft ни по одной из осей координат, а также вращений вокруг осей X и Y, можно установить ограничения на эти движения. Для этого выделите объект VShaft, на панели Hierarchy (Иерархия) раскройте закладку Link Info (Информация о связях)  и в свитке Locks (Блокировки) установите флажки для перемещений (Move) относительно всех трех осей и вращений относительно осей X и Y. Не лишним будет также установить запрет на масштабирование этого объекта вдоль всех осей (рис. 11).

Прямая кинематика - 3d уроки и упражнения
Рис. 11

Выделите теперь объект Arm и разрешите ему поворачиваться относительно оси X локальной системы координат, запретив все остальные варианты преобразований (рис. 12).

Прямая кинематика - 3d уроки и упражнения
Рис. 12

Поверните объект Arm относительно оси Х его локальной системы координат, и он повернется вместе со всеми его дочерними объектами (файл Manipulator1.max).

Анимация манипулятора

Продолжим работу с той же сценой и анимируем движения манипулятора. Вначале его горизонтальная рука должна опуститься ниже (с нулевого до 20-го кадра), чтобы захватить предмет, затем она снова поднимается (до 30-го кадра), поворачивается (до 100-го кадра), опускается вниз (в 120-м кадре), чтобы поставить предмет, затем снова поднимается (в 150-м кадре) и в последнем кадре возвращается в исходное положение.

Чтобы выполнить эти перемещения, установите манипулятор в исходное положение, перейдите в нулевой кадр и включите режим создания ключей анимации Set Key (Режим ручной установки ключей анимации) . Анимируйте перемещение шарнира Hinge вдоль оси Z локальной системы координат, установив значения Z = 72 в нулевом кадре. Для этого выделите объект Hinge и нажмите кнопку Set Keys (Установить ключ анимации) . На треке анимации в нулевом кадре появится метка ключевого кадра. Щелкните на ней правой кнопкой мыши и в раскрывшемся списке выберите ключ анимации Hinge: Z Position. В открывшемся окне введите значение параметра Value = 72 (рис. 13).

Рис. 13

После этого передвиньте ползунок таймера анимации к 20-му кадру и аналогично задайте значение параметра = 50. Шарнир и все его дочерние объекты опустятся на 20 мм. Аналогично задайте для шарнира Hinge значение параметра = 60 в 30-м и 100-м кадрах, = 50 в 120-м кадре и снова = 72 в 150-м кадре. Затем анимируйте вращение объекта VShaft вокруг оси Z его локальной системы координат, сохранив в нулевом и 30-м кадрах его исходное положение, в 100-м и 150-м кадрах пусть он будет развернут на 75°, а в 200-м кадре снова вернется в свое исходное положение. Теперь анимируйте объект Arm,сохранив его исходное положение в нулевом и 30-м кадрах, задайте повернутое вверх положение этого объекта в 70-м кадре и верните в исходное положение в 100-м кадре. Выйдите из режима создания ключей анимации Set Key (Режим ручной установки ключей анимации)  и воспроизведите анимацию (файл Manipulator2.max).

Перенос объекта

Под манипулятором создайте плоскость. На ней поместите объект Box001 так, чтобы его можно было захватить манипулятором (рис. 14).

Рис. 14

Выделите Box001. На вкладке Motion выделите Parameters и раскройте свиток Assign Controller (Назначить контроллер). Внутри окна выделите строку Transform:Position/Rotation/Scale. Затем чуть выше нажмите кнопку Assign Controller . В открывшемся окне Assign Transform Controller (Назначить контроллер преобразований) выделите опцию Link Constraint (Ограничение на вид связи). На командной панели в свитке Link Params (Параметры связи) щелкните кнопкой Link to World (Связать с глобальной системой координат). Там же в окне Frame # Target (Номер кадра — Цель) появится строка «0 World». Переместите таймер кадров анимации к кадру 20. На командной панели нажмите кнопку Add Link (Добавить связь) и укажите на объект Hand, к которому осуществляется привязка. Перейдите к кадру 120 и на командной панели щелкните кнопкой Link to World, связь объекта Box с манипулятором разорвется. В окне Frame # Target появятся строки

0      World

20    Hand

120  World

Воспроизведите анимацию, манипулятор переместит Box001 (рис. 15, файл Manipulator3.max).

Рис. 15

Источники:

  1. Маров М. 3ds Max. Реальная анимация и виртуальная реальность (+CD). — СПб.: Питер, 2005. — 415 с.
  2. Шляхтина С. 3D Studio MAX: первые шаги. Урок 21. Иерархия и прямая кинематика // КомпьютерПресс 2006, № 12. https://compress.ru/article.aspx?id=18343. Дата доступа: 8.06.2019.

Редактор сайта

3dsMax. Урок № 12. Прямая кинематика: 1 комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *