Работа с полями и импульсами  Maya

Движением  активного  твердого тела можно управлять несколькими  способами.  Как будет продемонстрировано  далее в  этой главе, можно непосредственно  установить  зна­ чения импульса, начальной  скорости  и   свойств   вращения  твердого тела.  Движением можно также  управлять косвенно, по  пути  взаимодействия  с  другими  активными  или пассивными  телами.

Кроме того,  на перемещение активных  жестких тел  воздействуют  поля,  прилагая к ним определенную силу. Например,  если  выстрел вызывает рассеивание частиц пыли  по сцене, можно использовать  воздушные силы для создания  динамической  модели. Поля полезны тем, что они  по характеру очень похожи  на  силы, которые воздействуют на пе­ ремещение объектов  в  реальной жизни.  Выше  уже было показано, насколько полезным является гравитационное  поле.

Всеми  полями  управляют одинаковые  первичные атрибуты: Magnitud e  (Величина), Attenuation (Затухание),  Use  Ma x  Distance (Использовать  максимальное  расстояние), Max  Distance (Максимальное  расстояние) и   Volum e  Shape (Форма объема). Атрибут Magnitude (Величина) определяет силу, с которой поле влияет на объект (или объекты), а атрибут Attenuation (Затухание) является коэффициентом, который определяет, насколько уменьшается сила поля по мере увеличения расстояния  между полем и объектом.

Атрибуты Magnitud e (Величина)  и  Attenuatio n (Затухание) определяют,  насколько сильно поле  непосредственно влияет   на  динамические   объекты.   Свойства Use  Мах  Distance (Использовать  максимальное  расстояние),  Max  Distance (Максимальное  рас­ стояние) и  Volum e Shap e (Форма объема)  определяют максимальную область влияния поля. Эти  три  атрибута позволяют  осуществлять  динамические изменения в  определен­ ных зонах трехмерного  пространства.

Если используется  атрибут Use Max Distance (Использовать максимальное расстоя­ ние), то параметр Max Distance (Максимальное расстояние) указывает, насколько близ­ ко к полю должен быть расположен объект, чтобы поле начало  оказывать на него влия­ ние. Поле  не  воздействует на  объекты,  которые  находятся  на  большем  расстоянии  от расположения поля, чем указано атрибутом Ma x Distance (Максимальное расстояние).

Параметр Volum e Shap e (Форм а объема) упрощает управление  областью  влияния поля, он задает для поля определенный объем. Сила поля воздействует  на те динами­ ческие  объекты, которые находятся в  пределах этого объема.  Параметр Volum e Shap e (Форма объема) позволяет визуально  отобразить  область влияния   и допускает преоб­ разование.  Чтобы определить размеры  влияни я  поля,  гораздо проще представить  его объем визуально,  а не с помощью  значения параметра Ma x  Distanc e (Максимальное расстояние).

Давайте посмотрим,  как работают поля.

1.       На новой сцене создайте пассивную  твердую плоскость поля по всей сетке,  а  затем создайте восемь сфер.

2.       Разместите сферы  в  два   ряда  по  четыре  друг  напротив   друга,  как   показано   на рис. 18.10. Один ряд должен быть ближе к краю, чем другой.

Рис. 18.10. Восемь сфер, выстроенных в ряды друг напротив друга

3.        Выделите сферы и  создайте гравитационное поле.

4.       Выделите  сферы   снова  и     создайте   радиальное  поле.   Установите его   атрибут magnitud e равным -1, а для атрибута volum e   shap e установите значение  Spher e (Сфера). На первом кадре установите ключевой  кадр и задайте масштаб 1,1,1.

5.       Перейдите к кадру 80 и  увеличьте объем поля примерно до размера плоскости  осно­ вания.

При  воспроизведении  анимации  можно заметить, что радиальное поле воздействует на сферы, находящиеся в  середине ряда, ближайшего к краю плоскости. По мере увели­ чения объема поля оно начинает также воздействовать  и  на другие сферы.  Попробуйте изменить  значение атрибута volum e    shap e  на цилиндр   или  куб  и  перезапустите про­ цесс    моделирования. Также    можно    попробовать   изменить  свойство  Magnitud e (Величина) радиального  поля так, чтобы некоторые сферы отскакивали  от объема поля, как только они попадали в  него.

Теперь рассмотрим, как  использовать  твердые тела для реалистичного  моделирова­ ния пули, выстреливаемой из  действительно большой пушки. В качестве пули  будет ис­ пользован небольшой цилиндр, а в  качестве планеты — большая сфера. Но читатель мо­ жет заменить эти  объекты практически любыми  собственными.

1.       Создайте сферу радиусом 500 единиц, переместите  ее вниз  на 500 единиц по оси  Y и назовите ее planet (планета). Измените масштаб так, чтобы увидеть верхнюю  часть планеты.

Из-за большого размера этой сферы камера отсекает ее часть, поэтому сферу не видно  полно­ стью. Для решения этой проблемы выделите  камеру обзора, выбрав  в  меню View  (Просмотр) пункт Select Camera (Выбор камеры). Нажмите  комбинацию клавиш < Ctrl + А >, чтобы открыть окно Attribute Editor (Редактор атрибутов),  и  в  разделе Camera Attributes (Атрибуты камеры) уве­ личьте значение параметра Far Clip Plane (Дальний план) примерно до 10000.

2.        Создайте цилиндр  (с названием bulle t (пуля)) и  измените  его масштаб так, чтобы он выглядел, как  на рис. 18.11. Для большей четкости  окраску пули  можно  сделать

отличающейся от окраски  планеты. (Попробуйте смоделировать  пушку,  которая  вы­ стреливает пулю). В действительности  размер пули  не имеет значения,  главное,  чтобы она хорошо смотрелась. (Авторы повернули ее боком и немного растянули.)  Убедитесь в  том, что пуля размещена немного выше поверхности  планеты, иначе может произой­ ти ошибка взаимопроникновения твердых  тел, что затруднит процесс моделирования.

Рис. 18.11. Создание изогнутой поверхности планеты и пули

3.        Сделайте сферу пассивным твердым телом (пункт меню Soft/rigi d Bodies => Create Passive rigi d Body (Мягкие/Твердые тела => Создать пассивное твердое тело)), а ци­ линдр преобразуйте в активное твердое тело (пункт меню Soft/rigi d Bodies => Create Active rigi d Body (Мягкие/Твердые тела => Создать активное твердое тело)).

Для этих объектов  можно создать простое гравитационное  поле, но гравитация  при­ тягивает   все  в одном направлении.  Однако в  данном случае необходимо поле,  центр ко­ торого   будет   располагаться   в    центре   планеты.   Поэтому   используем   поле  Newto n  (Ньютон), названное в  честь сэра Исаака  Ньютона (Sir Isaac  Newton)).  Поле  Ньютона имеет источник гравитации  в  центре планеты, который  притягивает  к себе все активные твердые тела. Сила этого источника  зависит от  расстояния между планетой и  объектом. Этот чуть  более сложный  вариант  гравитации  создаст  баллистическую  дугу  для  пули, которая движется вдоль  поверхности  планеты.

4.       Выберите в меню Fields (Поля ) пункт Newto n (Ньютон), а затем, удерживая нажатой клавишу <Shift>,  выделите сферу  и   выберите в   меню  Fields  (Поля)   пункт  Use  Selecte d As Source Of Field (Использовать выделенное как источник поля). Теперь в окнах Outliner (Иерархическая структура) и  Hypergrap h  (Гиперграф)  появилось по­ ле Newto n (Ньютон), связанное с планетой.

5.       Выделите цилиндр,  затем  выберите в   меню  Windo w  (Окно)  пункт  relationshi p  Editors => Dynami c relationship s (Редакторы взаимосвязей => Динамические взаимо­ связи), чтобы открыть окно Dynamic relationship s (Динамические взаимосвязи).

6.       Чтобы выбрать поле Newto n (Ньютон), щелкните на нем. В результате рядом  с ним появится  конус.

7.       Установите значение  длины кадра равным 1000 или  больше и  воспроизведите  ани­ мацию.

Если  выделить  поле, а затем, нажав  клавишу < Shift>, выделить  объект и  выбрать в  меню Fields (Поля) пункт Use Selected As Source Of Field (Использовать выделенное  как источник поля), то объект будет использован  в  качестве источника  силы поля.  Поле  будет переме­ щаться вместе со своим источником  и  может быть использовано для создания возмущений или турбулентности  при  пересечении  им твердого тела или  частиц.

Пуля  должна  упасть  на  поверхность планеты,  немного  подпрыгнуть  и  остаться  на месте или немного покрутиться на поверхности  сферы. Если этого не произойдет, можно

попробовать    установить    значение    свойства   Magnitud e    (Величина)    поля   Newto n

(Ньютон) равным шести или семи и  проверить, поможет ли это.

А сейчас смоделируем  гравитацию планеты (чуть не упустили из виду импульс,   кото­ рый используется пушкой для выброса пули  из  ствола). При  выделенной пуле обрати­ тесь к разделу rigidBody2 панели Channe l Box (Панель каналов) и установите для пара­ метра пули  impulse X значение, равное примерно пяти. (В зависимости  от  направления, в  котором повернута пуля, это может быть параметр impulseZ. ) Теперь  пуля будет вы­ летать из  пушки  с большим ускорением, однако вполне очевидно,  что  это не слишком реалистично.  Для более точного соответствия  выстрелу необходимо  смоделировать  ко­ роткий импульс от взрыва пороха в  пороховой камере. Для имитации  импульса можно использовать  один или  два   ключевых кадра,  расположенных на  первых  кадрах  начала мультфильма.

1.    Выберите импульс X (или  Z), переместите  ползунок времени  на первый кадр, уста­ новите  для  параметра  Impulse  (Импульс)  значение 20,  а  затем,  щелкнув  правой кнопкой  мыши, выберите   в  появившемся  контекстном  меню  пункт  Key  Selecte d  (Установить ключевой кадр для выбранного).

2.    Перейдите к третьему кадру и  установите  значение атрибута impulse X равным ну­ лю. (Импульс уменьшится с 20 до 0 на протяжении двух промежуточных кадров.)

Атрибу т   Impulse  или    Ini tia l       Velocity?

Чтобы  придать пуле  ускорение и    избежать применения ключевых  кадров   для  канала Impulse, можно воспользоваться  атрибутом Initial Velocity. Начальные  атрибуты (Initial Velocity по координатам X, Y и  Z, а также  Initial Spin по  координатам X, Y и  Z) придают твердому телу только начальное ускорение, но не  обеспечивают  постоянного ускорения в  отличие   от атрибута impulse. Следовательно,  атрибут Initial Velocity лучше подходит для тех твердых тел,  которые должны  иметь ускорение только  в  начале анимации, а атрибут Impulse можно использовать для  задания ускорения в любой момент времени  на протяжении анимации.

После запуска анимации пуля вылетит, пролетит по дуге над планетой, а затем упадет и  пройдет сквозь ее поверхность! Не совсем тот результат, который ожидался. Проблема заключается в  следующем: разбиение  (способ, которым процессор моделирования  Майя разделяет сферу на фрагменты) слишком мало для размера сферы. Эту проблему  можно решить четырьмя способами. Первый заключается в  использовании  атрибутов  решателя твердого тела. В данном случае наиболее полезны первые  два элемента управления: Step Size (Величина шага), который задает периодичность вычисления уравнений решателем (в долях секунды), и  Collision Toleranc e (Точность взаимодействия), определяющий,   как точно  рассчитываются   взаимодействия.  Чем  меньше  значения обоих параметров, тем точнее результаты, но соответственно тем больше  времени  занимает  моделирование. Та­ ким образом, желательно устанавливать  как можно большие значения, но которые будут соответствовать требованиям  заданного сценария.

Второй способ заключается в  усилении  разбиения сферы за счет увеличении  количе­ ства промежутков между изопараметрическими линиями  в  направлениях  U и  V. Однако это потребует создания новой сферы для твердого тела.

Третий способ заключается в  увеличении  коэффициента  разбиения  самого твердого тела. Выделите сферу, откройте редактор атрибутов, перейдите  на вкладку rigidBody l  и

прокрутите вниз  панель  Performanc e Attributes (Атрибуты производительности).   По умолчанию  коэффициент  разбиения имеет значение  200 , но его можно увеличивать   и  до более  высокого значения, пока  пуля  не  перестанет  проваливаться  сквозь  поверхность планеты.  Однако  необходимо отметить, что чем выше значение  коэффициента  разбие­ ния, тем дольше будет длиться процесс обработки анимации.

Четвертый способ заключается в  использовании  вместо планеты упрощенного  объекта (proxy object). Под панелью Performance Attributes (Атрибуты производительности) рас­ положено меню Stand  In  (Замена), в  котором  можно  выбрать объект  Cube  (Куб) или Sphere (Сфера). Поскольку планета является сферическим объектом, необходимо выбрать упрощенный объект Sphere (Сфера).  (Форма замещающих объектов вычисляется матема­ тически,  а не по сетке, поэтому они  лучше подходят для проверки  взаимодействий.)  Хотя этот метод применим лишь для  объектов, форма которых близка к сферической или куби­  ческой, он быстро просчитывается, и именно этот метод будет использоваться в примере.

После того как были  получены хорошие результаты основного моделирования,  мож­ но изменить настройки  для получения различных эффектов. Установка  большего  значе­ ния начального импульса, конечно же, позволит пуле лететь быстрее  и  дальше. При  дос­ таточно большом значении  импульса пуля  перестанет падать  вниз  и  выйдет на орбиту планеты  (в  данном  примере это  происходит  при  значении  45).  Если  слишком сильно увеличить значение импульса, то пуля вылетит   в  космос.  Для замедления полета пули можно также добавить к ней поле сопротивления,  моделирующее  сопротивление воздуха (убедитесь,  что значение Attenuatio n  (Затухание) установлено в  нуль, и  поэксперимен­ тируйте с  параметром Magnitud e  (Величина)).  Оказывается, необходимо значительно  увеличить значение  импульса, чтобы пуля пролетела то же расстояние, что и  прежде.

Попробуйте устанавливать  разные значения этих параметров, пока не  почувствуете, что действительно понимаете,  как все это работает вместе. Данный  процесс является оп­ ределяющим этапом в  изучении того, как работает процессор моделирования  Maya, и это стоит затраченного времени.  После создания интересной  модели  сохраните полученный файл для дальнейшего использования в  этой главе.

Источник: Кундерт-Гиббс, Джон,  Ларкинс, Майк,  Деракшани, Дариус, Кунзендорф, Эрик,  и др., Освоение Maya  8.5.:  Пер.  с англ.  – М.:  ООО  «И.Д.  Вильямс», 2007.  – 928  с.:  ил.

По теме:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий