Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособия_Tutorials / Рус / Ввеление в реактор_(39) .doc
Скачиваний:
52
Добавлен:
25.04.2015
Размер:
1.37 Mб
Скачать

Соединение конечностей

Персонаж распался, поскольку каждая кость является независимым объектом и не связана с другими костями. Ничто не удерживает кости от своего движения. В этом уроке для удержания персонажа от распада будут применены ограничители. Ограничители (Constraints) являются вспомогательными объектами в 3ds Max.

Обзор всех доступных в реакторе вспомогательных объектов:

Панель Create > Helpers > Reactor.

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

Использование ограничителей Hinge

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

Фактически, дверь является особым типом ограничителя с ограничением поворота. Он не может делать поворот на 360о, мешает стена. Угол поворота может быть около 120о. Более того, шарниры в двери с рамой должны иметь умеренное напряжение, иначе дверь будет бить, как кузнечный молот. Реактор позволяет такую имитацию.

Добавление hinge

  1. Панель 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.

Добавление в сцену решателя:

  1. Панель Create > Helpers > reactor > CSolver.

  2. Щелчком в любом месте окна создание Constraint Solver.

Примечание: Решатель Constraint Solver действует, если все твердые тела, которые связаны ограничителем, принадлежат одной коллекции.

Теперь будет указана коллекция, которой назначается решатель.

  1. Выделен решатель. В свитке Properties на панели Modify щелчок кнопки с надписью None ниже RB Collection.

  2. Клавишей H вызов диалога Pick Object и выбор из списка RBCollection01.

Все готово для связывания костей. Будет использован ограничитель Hinge для связывания костей персонажа. Сначала будут связаны кости правой стопы и икры, имитируя лодыжку.

Создание ограничителей Hinge для лодыжек:

  1. On the Create panel > Object Type rollout, click Hinge.

  2. Click anywhere in a viewport to create a Hinge constraint.

Теперь будут указаны объекты, которым назначен этот ограничитель.

  1. В свитке Properties на панели Modify щелчок кнопки с ярлыком None рядом с Child.

  2. Клавишей H вызов диалога и выделение RFoot в диалоге Pick Object и щелчок Pick

На кнопке Child теперь значится RFoot.

  1. В свитке Properties на панели Modify включение Parent.

Это указывает, что ограничение свяжет объект с объектом, а не объект с пространством.

  1. Щелчок кнопки с ярлыком None рядом с Parent.

  2. Клавишей H вызов диалога и выделение RCalf в диалоге Pick Objects и щелчок Pick

На кнопке Parent теперь значится RCalf, а сцена должна выглядеть, как на рисунке.

Пока стопа персонажа может делать поворот в шарнире на 360о, а это больно! Требуется ограничение. Необходимо ограничить поворот в ограничителе Hinge.

  1. В свитке Properties включение Limited.

  2. В группе Limited ввод Min Angle = –20.0 и Max Angle = 30.0.

  3. Повторение этих действий для костей 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:

  1. Клавишей H вызов диалога Object Select и выбор CSolver01.

  2. В свитке Properties на панели Modify щелчок Add.

  3. Выделение в диалоге ограничителей и щелчок Select.

Свиток Properties для CSolver должен выглядеть так:

Теперь следует посмотреть в окне preview изменение поведения персонажа.

Панель Utility > reactor > Preview & Animation > Preview in Window.

Снова пропуск сообщения о взаимопроникновении жестких тел. Хотя вообще это не лучший выход. Позже в этом пособии этому сообщению будет уделено внимание.

В просмотре связаны шарнирами кости движутся вместе. Это ожидалось, однако они продолжают скакать и плясать при ударе о пол.

Это потому, что реактор замечает проникновение костей друг в друга и пытается отделить их. В то же время решатель Constraint Solver пытается удержать их вместе. Поскольку они конкурируют в определении положения костей, продолжаются беспорядочные отскоки.

Решение проблемы в указании реактору не опасается проникновения связанных костей.

Запрет столкновений конечностей:

  1. Панель Utility > reactor > Collisions > Global Collisions, щелчок Define Collision Pairs.

Возникает диалог:

Имеется три окна: окно для всех объектов сцены (Entities), окно для разрешенных столкновений (Enabled Collisions) и окно один для запрещенных столкновений (Disabled Collisions). По умолчанию разрешены все столкновения всех объектов, так что требуется запретить столкновения только костей персонажа. При запрете столкновения стопы с полом, стопа пройдет сквозь пол.

  1. Выделение всех костей в первом столбце (Это отображает список enabled collisions во втором окне) и щелчок кнопки >>.

Все пары запрещенных столкновений выбранных тел возникают в третьем столбце и OK.

Note: Вместо запрета всех столкновений всех конечностей можно было бы запретить столкновения только соседних костей сустава. Для этого следовало бы начать с разрешения всех столкновений, затем выбрать связанные пары (LHand и LForeArm, Spine3 и Head и т.д.) и щелчком >> запретить столкновения.

  1. Щелчок OK to принимает изменения.

Просмотр анимации с запретом столкновений:

  1. Панель Utilities > reactor > Preview & Animation, щелчок Preview in Window.

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

  1. Сохранение сцены: Save as my_character02.max.