3dsMax. Урок № 12. Прямая кинематика
Объекты могут быть объединены в группы, и тогда они являются подчиненными этой группе и равноправными между собой. Другой способ объединения объектов – это создание иерархий, или иерархических связей. Иерархия – это набор объектов со связями между ними по принципу «предок-потомок» (другое название таких связей: «родительский объект – дочерний объект»). Предок контролирует поведение одного или более потомков. В то же время предки могут контролироваться другими предками, имеющими более высокий уровень иерархии. Потомок, контролируемый некоторым предком, может оказаться предком для других потомков, находящихся по иерархии ниже него. У каждого предка может быть несколько потомков, однако каждый потомок имеет только одного предка. Самый верхний объект иерархии управляет всеми объектами иерархии и называется корневым.
Связывание следует производить от потомкам к предкам, т.е. от младших в иерархии объектов к старшим. Для связывания объектов вначале активизируется инструмент Select and Link (Выделить и связать)
Для примера рассмотрим модель настольной лампы, представленной на рис. 1 (файл Table_lamp1.max).
В этом примере присутствуют две группы — Support и Reflector, однако иерархические связи не установлены. Включите инструмент Select and Link (Выделить и связать)
Чтобы отобразить указанную структуру установленных связей, щелкните на кнопке Select by Name (Выделить по имени) основной панели инструментов или нажмите клавишу <H>. Это окно позволяет визуально убедиться в правильности создания структуры объекта.
Правила прямой кинематики
Преобразования перемещения и поворота объектов, связанных в иерархические цепочки, происходят по определенным правилам – правилам прямой или инверсной (обратной) кинематики. По умолчанию устанавливаются правила прямой кинематики. Это означает, что преобразования любого предка автоматически распространяются на все его потомки, но не касаются объектов-предков преобразуемого объекта. Выделите объект Hinge02 и поверните его на произвольный угол. Вместе с ним на тот же угол повернутся его дочерние объекты, имеющие более низкий приоритет в иерархической цепочке (рис. 3).
Восстановите сцену в прежнем положении. Теперь выделите Lever03 и сместите его вниз. Вместе с ним переместится отражатель Reflector, но не сдвинутся с места объекты, имеющие более высокий иерархический уровень (рис. 4 ).
Объекты, имеющие самый низкий уровень иерархии (в данном случае – это объект Reflector), наследуют преобразования всех объектов-предков, однако преобразования этих объектов не влияют ни на один другой объект.
Обеспечение целостности конструкции
Восстановите сцену. Выделите объект Lever02 и установите локальную систему координат (Local). Поверните выделенный рычаг на произвольный угол (рис. 5).
Как видите, конструкция разрушилась. Чтобы обеспечить целостность этой конструкции при вращении ее звеньев, следует перенести их точки опоры (Pivot) в центры вращения. Проделаем это с объектом Lever02. Восстановите сцену. Выделите объект Lever02, перейдите в закладку Hierarchy (Иерархия)
Ограничение перемещения объектов в иерархической цепочке
Перемещение объектов в иерархической цепочке может быть ограничено. Для примера выделите рычаг Lever02 и в командной панели Hierarchy (Иерархия)
Установите локальную систему координат (Local). Для блокировки вращений, которые могут быть применены к выделенному объекту, в свитке Locks (Блокировки) в области Rotation (Вращение) установите флажки для осей X и Y. Включите команду Select and Rotate (Выделить и повернуть)
Наследование преобразований
В свитке Inherit (Наследование) указываются преобразования, которые наследуются дочерним объектом от объекта-предка. По умолчанию установлены флажки всех преобразований по всем осям координат. Если, например, для рычага Lever02 сбросить флажок в области Rotation (Вращение) для оси Y, то при вращении рычага Lever01 вокруг оси Z его локальной системы координат рычаг Lever02 будет перемещаться поступательно, всегда оставаясь параллельным своему первоначальному положению (рис. 7).
Трансформацию цепочки объектов можно анимировать. Восстановите сцену. Войдите в режим Auto Key (Автоматическая установка ключей анимации) создания анимации с автоматической генерацией ключей, переместите ползунок на 50 кадр и в окне Front (Вид спереди) поверните рычаг Lever03 по часовой стрелке на угол в 30º . Затем переместите ползунок к кадру с номером 75 и поверните Lever02 в ту же сторону еще на 30º. Выделите Lever02 и скопируйте 0-ой кадр в кадр с номером 50. Переместите ползунок к кадру 100 и поверните Lever02 в обратную сторону. Отключите режим Auto Key (Автоматическая установка ключей анимации) и проиграйте анимацию.
Пример с настройками блокировок и наследований
Рассмотрим еще один пример с настройками блокировок и наследований. Создайте сцену с механическим манипулятором (рис.8, файл Manipulator.max).
Последовательно, начиная с объекта Hand, свяжите все детали друг с другом в соответствии со структурной схемой, приведенной на рис. 9.
Выделите объект VShaft и поверните его вокруг оси Z локальной системы координат. Вместе со всеми своими дочерними объектами он развернется соответствующим образом (рис. 10).
Чтобы избежать возможных ошибок и не допустить перемещений объекта VShaft ни по одной из осей координат, а также вращений вокруг осей X и Y, можно установить ограничения на эти движения. Для этого выделите объект VShaft, на панели Hierarchy (Иерархия) раскройте закладку Link Info (Информация о связях) и в свитке Locks (Блокировки) установите флажки для перемещений (Move) относительно всех трех осей и вращений относительно осей X и Y. Не лишним будет также установить запрет на масштабирование этого объекта вдоль всех осей (рис. 11).
Выделите теперь объект Arm и разрешите ему поворачиваться относительно оси X локальной системы координат, запретив все остальные варианты преобразований (рис. 12).
Поверните объект Arm относительно оси Х его локальной системы координат, и он повернется вместе со всеми его дочерними объектами (файл Manipulator1.max).
Анимация манипулятора
Продолжим работу с той же сценой и анимируем движения манипулятора. Вначале его горизонтальная рука должна опуститься ниже (с нулевого до 20-го кадра), чтобы захватить предмет, затем она снова поднимается (до 30-го кадра), поворачивается (до 100-го кадра), опускается вниз (в 120-м кадре), чтобы поставить предмет, затем снова поднимается (в 150-м кадре) и в последнем кадре возвращается в исходное положение.
Чтобы выполнить эти перемещения, установите манипулятор в исходное положение, перейдите в нулевой кадр и включите режим создания ключей анимации Set Key (Режим ручной установки ключей анимации)

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

Выделите Box001. На вкладке Motion выделите Parameters и раскройте свиток Assign Controller (Назначить контроллер). Внутри окна выделите строку Transform:Position/Rotation/Scale. Затем чуть выше нажмите кнопку Assign Controller
0 World
20 Hand
120 World
Воспроизведите анимацию, манипулятор переместит Box001 (рис. 15, файл Manipulator3.max).

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