- •Введение в реактор
- •Rigid Bodies (Жесткие тела)
- •Получение коллекции
- •Основы имитации
- •Типы геометрии
- •Геометрия имитации
- •Построение жесткого тела
- •Создание покачивания
- •Другой подход
- •Точность имитации
- •Сборка имитации
- •Использование тел с анимацией
- •Подготовка вывода
- •Уменьшение размера файла
- •Тряпичная кукла
- •Настройка сцены с куклой
- •Придание объектам физических свойств
- •Соединение конечностей
- •Использование ограничителей Hinge
- •Настройка суставов (Knees, Elbows, Ankles, Wrists)
- •Применение ограничителейRagDoll
- •1. Предок
- •2. Потомок
- •1. Twist Min.
- •Создание анимации
Соединение конечностей
Персонаж распался, поскольку каждая кость является независимым объектом и не связана с другими костями. Ничто не удерживает кости от своего движения. В этом уроке для удержания персонажа от распада будут применены ограничители. Ограничители (Constraints) являются вспомогательными объектами в 3ds Max.
Обзор всех доступных в реакторе вспомогательных объектов:
Панель Create > Helpers > Reactor.
Среди объектов реактора видны некоторые доступные типы ограничителей от Hinge (шарнир) до Prismatic. В этом уроке будут рассмотрены ограничители Hinge и Rag Doll, с их помощью персонаж будет предохранен от разрушения.
Использование ограничителей Hinge
Первым будет использован ограничитель Hinge (шарнир). Дверь дает простой пример такого ограничителя. Дверь может только поворачиваться в точках соединения с рамой. Эта ось поворота фиксирована точками связи. Поворот относительно оставшихся осей невозможен.
Фактически, дверь является особым типом ограничителя с ограничением поворота. Он не может делать поворот на 360о, мешает стена. Угол поворота может быть около 120о. Более того, шарниры в двери с рамой должны иметь умеренное напряжение, иначе дверь будет бить, как кузнечный молот. Реактор позволяет такую имитацию.
Добавление hinge
Панель Create > Helpers > reactor > Hinge. Возникает свиток Properties.
В этом пособии в Hinge важны параметры Parent, Child, и Limited. Кнопки Parent и Child позволят указать объекты, которые будут в сцене компонентами связи типа плечо и предплечье. Параметры группы Limited управляют границами движения в шарнире.
Настройка суставов (Knees, Elbows, Ankles, Wrists)
Назначение ограничителя походит на создание коллекцию твердых тел, но в сцену должен быть добавлен решатель (Constraint Solver).
Затем можно назначать ограничители объектам и добавлять их в решатель. Решатель вычисляет наилучшее поведение объектов в заданных условиях (тело A привязано к телу B, тело B привязано к телу C и т.д.).
Продолжение или загрузка файла character01.max из папки \tutorials\reactor\ragdoll.
Добавление в сцену решателя:
Панель Create > Helpers > reactor > CSolver.
Щелчком в любом месте окна создание Constraint Solver.
Примечание: Решатель Constraint Solver действует, если все твердые тела, которые связаны ограничителем, принадлежат одной коллекции.
Теперь будет указана коллекция, которой назначается решатель.
Выделен решатель. В свитке Properties на панели Modify щелчок кнопки с надписью None ниже RB Collection.
Клавишей H вызов диалога Pick Object и выбор из списка RBCollection01.
Все готово для связывания костей. Будет использован ограничитель Hinge для связывания костей персонажа. Сначала будут связаны кости правой стопы и икры, имитируя лодыжку.
Создание ограничителей Hinge для лодыжек:
On the Create panel > Object Type rollout, click Hinge.
Click anywhere in a viewport to create a Hinge constraint.
Теперь будут указаны объекты, которым назначен этот ограничитель.
В свитке Properties на панели Modify щелчок кнопки с ярлыком None рядом с Child.
Клавишей H вызов диалога и выделение RFoot в диалоге Pick Object и щелчок Pick
На кнопке Child теперь значится RFoot.
В свитке Properties на панели Modify включение Parent.
Это указывает, что ограничение свяжет объект с объектом, а не объект с пространством.
Щелчок кнопки с ярлыком None рядом с Parent.
Клавишей H вызов диалога и выделение RCalf в диалоге Pick Objects и щелчок Pick
На кнопке Parent теперь значится RCalf, а сцена должна выглядеть, как на рисунке.
Пока стопа персонажа может делать поворот в шарнире на 360о, а это больно! Требуется ограничение. Необходимо ограничить поворот в ограничителе Hinge.
В свитке Properties включение Limited.
В группе Limited ввод Min Angle = –20.0 и Max Angle = 30.0.
Повторение этих действий для костей Lfoot и Lcalf.
Ограничители Hinge для колен (knees), Локтей (elbows) и запястий (wrists):
Настройка ограничителей Hinge для оставшихся пар костей идет тем же порядком, отличаются только предельные углы. Ниже приведена таблица для настройки суставов.
-
Constraint Name
Child
Parent
Min Angle
Max Angle
RAnkleJoint
RFoot
RCalf
-20.0
30.0
LAnkleJoint
LFoot
LCalf
-20.0
30.0
RKneeJoint
RCalf
RThigh
-85.0
0.0
LKneeJoint
LCalf
LThigh
-85.0
0.0
RWristJoint
RHand
RForeArm
-35.0
35.0
LWristJoint
LHand
LForeArm
-35.0
35.0
RElbowJoint
RForeArm
RUpperArm
-85.0
0.0
LElbowJoint
LForeArm
LUpperArm
-85.0
0.0
После настройки сцена выглядит так:
Для имитации остальных костей будет использованы ограничители Rag Doll с более сложным движением. В конце все ограничители должны быть добавлены в Constraint Solver.
Добавление ограничителей Hinge в Constraint Solver:
Клавишей H вызов диалога Object Select и выбор CSolver01.
В свитке Properties на панели Modify щелчок Add.
Выделение в диалоге ограничителей и щелчок Select.
Свиток Properties для CSolver должен выглядеть так:
Теперь следует посмотреть в окне preview изменение поведения персонажа.
Панель Utility > reactor > Preview & Animation > Preview in Window.
Снова пропуск сообщения о взаимопроникновении жестких тел. Хотя вообще это не лучший выход. Позже в этом пособии этому сообщению будет уделено внимание.
В просмотре связаны шарнирами кости движутся вместе. Это ожидалось, однако они продолжают скакать и плясать при ударе о пол.
Это потому, что реактор замечает проникновение костей друг в друга и пытается отделить их. В то же время решатель Constraint Solver пытается удержать их вместе. Поскольку они конкурируют в определении положения костей, продолжаются беспорядочные отскоки.
Решение проблемы в указании реактору не опасается проникновения связанных костей.
Запрет столкновений конечностей:
Панель Utility > reactor > Collisions > Global Collisions, щелчок Define Collision Pairs.
Возникает диалог:
Имеется три окна: окно для всех объектов сцены (Entities), окно для разрешенных столкновений (Enabled Collisions) и окно один для запрещенных столкновений (Disabled Collisions). По умолчанию разрешены все столкновения всех объектов, так что требуется запретить столкновения только костей персонажа. При запрете столкновения стопы с полом, стопа пройдет сквозь пол.
Выделение всех костей в первом столбце (Это отображает список enabled collisions во втором окне) и щелчок кнопки >>.
Все пары запрещенных столкновений выбранных тел возникают в третьем столбце и OK.
Note: Вместо запрета всех столкновений всех конечностей можно было бы запретить столкновения только соседних костей сустава. Для этого следовало бы начать с разрешения всех столкновений, затем выбрать связанные пары (LHand и LForeArm, Spine3 и Head и т.д.) и щелчком >> запретить столкновения.
Щелчок OK to принимает изменения.
Просмотр анимации с запретом столкновений:
Панель Utilities > reactor > Preview & Animation, щелчок Preview in Window.
Окно Preview должно открыться без предупреждений, поведение должно соответствовать ожиданию (нет отскакивающих конечностей).
Сохранение сцены: Save as my_character02.max.