Упражнение. Резиновые гантели.
Создадим упругое тело из гантелей, заставив их отскакивать от предметов окружающей обстановки. Загрузите файл ch13tut03start.mb.
- Выделите гантель и щелкните на квадратике, расположенном справа от команды Create Soft Body (Создать упругое тело) меню Soft/Rigid Bodies (Упругие/ Твердые тела). Выберите в меню Edit (Правка) появившегося окна диалога команду Reset Settings (Сбросить параметры) и нажмите кнопку Create (Создать).
- Выберите в меню Fields (Поля) команду Gravity (Сила тяжести) и введите в поле Magnitude (Величина) окна каналов значение 50. Запустите воспроизведение анимации. Вы увидите, что гантель проваливается сквозь куб.
- Выделите куб и щелкните на квадратике, расположенном справа от команды Make Collide (Заставить сталкиваться) меню Particles (Частицы). Введите в поля параметров Resilience (Упругость) и Friction (Трение) значения 0.8 и 0.1 соответственно и нажмите кнопку Create (Создать). Затем выделите плоский объект, который называется bouncer, и выберите для него команду Make Collide (Заставить сталкиваться) в меню Particles (Частицы), Запустив воспроизведение анимации, вы увидите, что гантель по-прежнему продолжает проваливаться сквозь куб. Дело в том, что вы не установили связь между системой частиц и двумя упомянутыми объектами. Это можно сделать в окне диалога Dynamic Relationship (Динамические связи).
- Выберите команду Window › Relationship Editors › Dynamic Relationships (Окно › Редакторы связей › Динамические связи). В левом окне щелкните на квадратике со знаком "плюс", расположенном слева от имени объекта dumbbell, и выделите строчку dumbbellPartide. Затем установите переключатель Selection Modes (Режимы выделения) в положение Collisions (Столкновения) и выделите в правом окне строчки bouncerShape и boxShape. Эти строки окажутся выделенными, как показано на рис. 13.13. Так же выделите в левом списке объект bouncer и установите для него связь с полем gravityFieldl.
Рис. 13.13. Окно диалога Dynamic Relationships - Выделите объект bouncer и щелкните на квадратике, расположенном справа от команды Create Constraint (Создать ограничитель) меню Soft/Rigid Bodies (Упругие/Твердые тела). Выберите в раскрывающемся списке Constraint Type (Тип ограничителя) вариант Spring (Пружина) и нажмите кнопку Create (Создать). Введите в поле Spring Stiffness (Жесткость пружины) окна каналов значение 2. Затем введите в поле Translate Y (Смещение по оси Y) окна каналов значение 32.6. Запустите воспроизведение анимации, и вы увидите карикатурный результат, больше подходящий для мультфильмов. Так как гантель является упругим телом, она деформируется при ударе о поверхности, но при этом ее частицы проникают друг сквозь друга. Чтобы объект сохранял свою форму, следует добавить пружины.
Внимание
Убедитесь, что в данный момент для параметра Playback Speed (Скорость воспроизведения) выбран вариант Play every frame (Воспроизводить каждый кадр). В противном случае может создаться впечатление, что в процессе своего движения объект внезапно взрывается. Помните, что в процессе имитации динамики должен быть выбран именно этот вариант. И не забывайте устанавливать ползунок таймера анимации на отметку нулевого кадра после каждого воспроизведения. - Откройте окно диалога Outliner (Структура), щелкните на квадратике со знаком "плюс", расположенном слева от имени dumbbell, и выделите строчку dumbbetlParticle. Щелкните на квадратике, расположенном справа от команды Create Springs (Создать пружины) меню Soft/Rigid Bodies (Упругие/Твердые тела). Выберите в меню Edit (Правка) появившегося окна диалога команду Reset Settings (Сбросить параметры) и нажмите кнопку Create (Создать). Гантель окажется окруженной зеленым коконом. Нажмите комбинацию клавиш CTRL + H, чтобы скрыть пружины и не замедлять работу программы.
- Запустите воспроизведение анимации, и вы увидите, что теперь гантель движется так, как будто она сделана из желатина. Чтобы сделать ее более упругой, выделите в окне диалога Outliner строчку Springsl и введите в поля Stiffness (Жесткость) и Damping (Торможение) окна каналов значения 10 и 0.1 соответственно. Теперь движение гантели будет более реалистичным, как показано на рис. 13.14. Уменьшив значение торможения, вы позволили объекту большее число раз отскочить от нижней поверхности куба после столкновения.
- Попытайтесь увеличить значение параметра Stiffness (Жесткость) до 50. Вы увидите, что гантель внезапно резко увеличит свой размер и взорвется. Эту проблему можно решить, выбрав в меню Solvers (Модули просчета) команду Edit Oversampling or Cache Settings (Изменить точность просчета) и введя в поле Oversampling (Избыточная дискретизация) значение 3. Теперь в процессе воспроизведения анимации движение будет хорошо управляемым. Если вы хотите сравнить свои результаты с тем, что получилось у нас, загрузите файл ch13tut03end.mb.
Самостоятельно исследуйте, какое влияние на динамику движения тел оказывают такие параметры, как масса, начальный импульс, момент инерции объекта и трение соприкасающихся поверхностей. Попытайтесь создать анимацию, имитирующую игру в пинбол, в которой на пути катящихся но наклонной плоскости шариков возникают различные препятствия. Исследуйте приемы работы с системами частиц, которые используются для имитации таких эффектов, как фейерверк или стекающая жидкость. Изменяйте все возможные параметры частиц и наблюдайте за производимым эффектом, чтобы понять, как они работают. Создайте NURBS-плоскость и с помощью имитации динамики упругого тела заставьте ее полоскаться, как знамя на ветру.
Рис. 13.14. Скрытые пружины можно выделить в окне диалога Outliner и затем настроить их параметры таким образом, чтобы движение гантели стало более приближенным к реальности