Иллюстрированный самоучитель по Maya 4.5 (часть 2)

Динамика упругого тела


Имитация динамики упругого тела в Maya осуществляется за счет создания вокруг объекта системы частиц. Когда эти частицы попадают в зону действия поля или сталкиваются с другими объектами, они перемещают связанную с ними поверхность. Это идеально подходит для моделирования гибких материалов органического происхождения. Имитация динамики упругого тела также применяется для создания таких объектов, как желатин или резина.

По умолчанию упругие тела бесконечно растягиваются или сжимаются практически от любого воздействия. Для получения более реалистичного поведения необходимо создать мишени или пружины. Мишени (goals) предоставляют гибкому объекту форму, которую он стремится принять, примерно как резиновая игрушка, которая после сжатия возвращается в исходное состояние. В отличие от мишеней пружины (springs) позволяют движению одной частицы оказывать влияние на движение других. В этой главе мы познакомим вас со вторым подходом.

Создание упругого тела

Любой объект, созданный на основе NURBS-кривых или сетки полигонов, может быть преобразован в упругое тело. Это осуществляется путем размещения частиц в местах расположения управляющих точек (для NURBS-объектов) или вершин (для полигональных объектов) и управления их положением в соответствии с движением частиц. В окне диалога Soft Options (Параметры упругости), вызываемом щелчком на квадратике, расположенном справа от команды Create Soft Body (Создать упругое тело) меню Soft/Rigid Bodies (Упругие/Твердые тела), указывается, хотите ли вы просто превратить объект в упругое тело или предпочитаете, чтобы оригинал объекта остался в сцене в качестве мишени. Обычно используется второй метод. В результате упругое тело пытается принять форму исходного объекта.

Так как упругие тела основаны на системах частиц, для имитации динамики необходимо настроить столкновения этих частиц с определенным объектом сцены. Для каждого объекта, который должен принимать участие в столкновениях, необходимо проделать следующую операцию: выделить одновременно этот объект и систему частиц и выбрать в меню Particles (Частицы) команду Make Collide (Заставить сталкиваться).

Добавление пружин

Когда нужно создать более упругий объект, чем развевающееся на ветру знамя, к нему можно добавить параметр Springs (Пружины), обеспечив своего рода поддерживающую структуру. В результате между всеми частицами появятся виртуальные пружинки. В зависимости от требуемой степени упругости объекта можно увеличить значение параметра Wire Walk Length (Глубина связи). Если этот параметр равен единице, для каждой частицы связь устанавливается с ближайшими соседями со всех сторон, если двум — связь распространяется на две частицы. Также можно увеличить значение параметра Stiffness (Жесткость), чтобы заставить пружины быстрее возвращаться в исходное состояние. Параметр Damping (Торможение) определяет скорость, с которой они приходят в состояние покоя.

Упражнение. Резиновые гантели

Создадим упругое тело из гантелей, заставив их отскакивать от предметов окружающей обстановки. Загрузите файл ch13tut03start.mb.

  • Выделите гантель и щелкните на квадратике, расположенном справа от команды Create Soft Body (Создать упругое тело) меню Soft/Rigid Bodies (Упругие/ Твердые тела). Выберите в меню Edit (Правка) появившегося окна диалога команду Reset Settings (Сбросить параметры) и нажмите кнопку Create (Создать).


  • Выберите в меню Fields (Поля) команду Gravity (Сила тяжести) и введите в поле Magnitude (Величина) окна каналов значение 50. Запустите воспроизведение анимации. Вы увидите, что гантель проваливается сквозь куб.


  • Выделите куб и щелкните на квадратике, расположенном справа от команды Make Collide (Заставить сталкиваться) меню Particles (Частицы). Введите в поля параметров Resilience (Упругость) и Friction (Трение) значения 0,8 и ОД соответственно и нажмите кнопку 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 и затем настроить их параметры таким образом, чтобы движение гантели стало более приближенным к реальности

    Содержание раздела