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

         

Частицы


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

Создание частиц

Частицы можно включить в сцену двумя способами. Во-первых, с помощью инструмента Particle Tool (Создание частиц), во-вторых, поместив в сцену их генератор. Первый способ обычно используется, если требуется изначально распределить частицы заданным образом и сохранить их на протяжении всей анимации. Это бывает нужно, например, при создании галактик. Выбор команды Particle Tool (Создание частиц) в меню Particles (Частицы) включает режим рисования области распространения частиц. В окне диалога Tool Settings (Параметры инструмента) для данного инструмента можно установить флажок Create Particle Grid (Создать сетку частиц), что приведет к появлению прямоугольной области, заполненной частицами. Это может быть полезно для более наглядного представления эффекта действия полей в процессе их создания.

Более традиционным способом создания системы частиц является использование их генератора. Со временем такие частицы исчезают. В Maya возможны генераторы следующих типов:

Point-omni (Точечный всенаправленный). Частицы распространяются из одной точки во всех направлениях.

Point-directional (Точечный направленный). Частицы распространяются из одной точки в заданном направлении.

Volume (Объемный). Частицы возникают в некоторой точке фиксированного объема, который может иметь форму куба, сферы, цилиндра, конуса или тора.

Surface (Поверхностный). Можно сделать так, чтобы одна из поверхностей объекта сцены, полученного либо на основе NURBS-кривых, либо на основе сеток полигонов, стала источником частиц.


Curve (Криволинейный). Даже NURBS-кривая может стать источником частиц.

Типы частиц

Частицы в Maya делятся на визуализируемые аппаратно и программно. Большинство частиц относится к первому типу. Они не появляются при обычной программной визуализации и требуют включения системы аппаратной визуализации, которая осуществляется выбором команды Window > Rendering Editors t Hardware Rendering Buffer (Окно > Редакторы визуализации > Буфер аппаратной визуализации). При этом понадобится программа для монтажа изображения, такая как, к примеру, Composer, которая позволит вам настраивать внешний вид частиц независимо от остальных объектов сцены. Кроме того, часто изображения, полученные путем аппаратной визуализации, имеют зубчатые края. Но эту проблему можно решить с помощью редактора атрибутов, вызываемого командой Attributes (Атрибуты) меню Render (Визуализация) окна Hadware Rendering Buffer (Буфер аппаратной визуализации.

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

Аппаратно визуализируемые частицы

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

Point (Точки). Используемый по умолчанию тип частиц, визуализируемый в виде пятна, которое всегда направлено на камеру и поэтому не имеет видимой толщины. Результат выглядит как квадрат из пикселов. Но если включить многопроходную визуализацию, при которой происходит размывание частиц небольшого размера, то часть из них превратится в круглые точки.

Multipoint (Множественные точки). Этот тип частиц приводит к появлению скоплений точек.

Streak (Полосы). Отличается от типа Point (Точки) тем, что вместо точек используются полосы.




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

Muttistreak (Множественные полосы). Формируется скопление полос.

Sprites (Текстурированные плоскости). Как и частицы типа Point (Точки), эти частицы всегда повернуты лицевой стороной к камере. Этим частицам можно назначить карту текстуры и даже альфа-канал. Кроме того, текстура может представлять собой набор сменяющих друг друга изображений. Например, для создания картины падения горящих обломков можно назначить системе частиц Sprites единственную анимированную текстуру пламени.

Spheres (Сферы). Трехмерные сферы, радиус которых можно изменять. Этим частицам можно назначать стандартные материалы, так как в окне Hardware Rendering Buffer (Буфер аппаратной визуализации) они имеют раскраску Lambert (По Ламберту).

Numeric (Числа). Тестовый режим, в котором все частицы пронумерованы. Это особенно полезно для удаления частиц, отбившихся от основной группы.

Программно визуализируемые частицы

Перечисленные ниже типы частиц визуализируются обычным образом, как часть основной сцены. Поэтому они могут отбрасывать тени, а также принимать участие в эффектах отражения и преломления. Их параметры можно редактировать в окне диалога Attribute Editor (Редактор атрибутов).

Btobby Surface (Слившиеся сферы). Набор сферических частиц формирует поверхность. Сначала каждая из них имеет форму сферы, но при столкновении друг с другом они сливаются, подобно каплям ртути. Для каждой частицы можно задавать поверхностное натяжение и радиус. Также имеется возможность назначить им карту текстуры, но необходимо воспользоваться тестовой визуализацией, чтобы правильно расположить проекционные координаты.

Cloud (Облако). Отличаются от частиц предыдущего типа наличием размывания и сглаживания границ, благодаря чему возникает впечатление одного облака.


Для этих частиц имеется специальный материал Particle Cloud (Облако частиц). Назначение им обычного материала приводит к тому, что они исчезают после визуализации.

Tube (Трубки). Как следует из названия данного типа частиц, они имеют форму цилиндров, лишенных оснований. Можно указывать радиус каждого из торцов. Этим частицам автоматически назначается материал Particle Cloud (Облако частиц), а визуализируются они только вместе с материалами объемного типа.

Instanced Geometry (Заданная геометрия). Для замены произвольного объекта системой частиц служит функция Instancer (Заместитель), позволяющая использовать любой объект или текстуру по вашему выбору. Например, при моделировании стаи бабочек следует сначала создать одну особь, затем настроить движение частиц по определенной траектории и, щелкнув на квадратике, расположенном справа от команды Instancer (Заместитель) меню Particles (Частицы), произвести замену частиц прототипом бабочки.

Материалы и возраст частиц

Материалы для систем частиц можно создать на основе текстуры Gradient Ramp (Линейный градиент). Каждая частица имеет свой возраст, на основе которого программа вычисляет, какую часть текстуры необходимо использовать в данный момент. Это позволяет смоделировать изменение цвета частиц со временем. Данный эффект используется, например, при создании летящих искр. Сначала они имеют белый цвет, потом меняют его на желтый, оранжевый, красный и, наконец, на черный.

Воздействие на частицы

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

Поля

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



Столкновения

Частицы любого типа могут принимать участие в столкновениях с любыми поверхностями объектов сцены, но каждое столкновение необходимо настраивать отдельно. Для этого нужно выделить систему частиц, а затем при нажатой клавише Shift выделить объект и выбрать в меню Particles (Частицы) команду Make Collide (Заставить сталкиваться). Этот прием работает вне зависимости от того, движутся ли система частиц и опорная плоскость. Например, можно смоделировать въезд какого-нибудь объекта в неподвижное облако частиц. Кроме того, можно сделать частицы исчезающими через определенный промежуток времени, делящимися на дополнительные частицы, или исчезающими и вновь появляющимися на том же месте после столкновения. Эти эффекты обычно используются для моделирования эффектов брызг или крушения. В последнем случае частицы распадаются на более мелкие куски при столкновении с объектом.

Мишени

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

Динамика твердого тела


Имитация динамики твердого тела используется в Maya для моделирования различных физических процессов. Элементы сцены имеют некую массу, а в некоторых случаях и начальную скорость перемещения и вращения. Затем к этим элементам применяются поля, оказывающие влияние на их движение. При столкновениях друг с другом объекты меняют направление движения в зависимости от их массы и указанной вами силы трения. Модуль динамики твердых тел производит все необходимые вычисления и моделирует движение тела.Имитация динамики в Maya осуществляется не только для твердых, но и для упругих тел. Во втором случае требуются более сложные расчеты. Но пока мы рассмотрим объекты, не деформирующиеся при столкновениях. Для имитации динамики можно использовать как объекты, полученные на основе NURBS-кривых, так и объекты, построенные на основе сетки полигонов, но в обоих случаях необходимо учитывать направление их поверхностей. Столкновения осуществляются только сторонами, нормали которых направлены наружу. Если нужно смоделировать столкновения одного объекта с внутренними стенками другого, например перемещение шарика внутри полого куба, необходимо изменить направление нормалей. Для этого используются команды Edit NURBS > Reverse Surface Direction (Правка NURBS > Изменить направление поверхности) и Edit Polygons > Normals > Reverse (Правка полигонов > Нормали > Изменить направление).

Активные и пассивные тела

Взаимодействующие объекты могут быть активными и пассивными. Хотя последние и могут быть анимированы по методу ключевых кадров, они остаются статичными. Они могут участвовать в столкновениях, например, располагаясь на пути движения активного тела, но не реагируют на них. Существует возможность преобразовать пассивное тело в активное, и наоборот. В окне каналов находится параметр Active (Активный), который может иметь значение on или off.

Существует также возможность комбинировать обычную анимацию по методу ключевых кадров с имитацией динамики. Переход осуществляется с помощью команд Set Active Key (Создать активный ключ) и Set Passive Key (Создать пассивный ключ) меню Soft/Rigid Bodies (Упругие/Твердые тела).
Таким способом можно получить, к примеру, обычную анимацию для отскоков мяча от поверхности с имитацией динамики его одновременного движения вниз по ступенькам лестницы.

Для активных объектов в окне каналов можно указать значение параметров Initial Velocity (Начальная скорость) и Initial Spin (Начальная угловая скорость), как показано на рис. 13.1.

Для активных и пассивных объектов изначально задаются значения параметров Impulse (Импульс) и Impulse Spin (Вращательный импульс) в произвольной начальной точке. Тем самым задается сила мгновенного воздействия на объект. Например, можно указать параметр Impulse Position (Точка приложения импульса) для края бильярдного шара, смоделировав удар кием.

Перечислим остальные параметры активных объектов:

Mass (Масса). Вес объекта. В процессе столкновений более тяжелые объекты увлекают за собой более легкие.

Soundness (Упругость). Количество энергии, остающееся после столкновения. Имейте в виду, что пассивные объекты тоже обладают упругостью и что значение этого параметра усредняется между всеми поверхностями, принимающими участие в столкновении. При этом объекты с высокой упругостью не могут сильно рикошетировать при столкновении с неупругим объектом.

Damping (Торможение). Эффект, возникающий при перетаскивании объекта. Если значение данного параметра отлично от нуля, кинетическая энергия и момент импульса объекта постепенно уменьшаются.



Рис. 13.1. Настройка параметров активного твердого тела

Static Friction (Трение покоя). Количество энергии, необходимое, чтобы заставить двигаться объект, расположенный на некоторой поверхности. В реальности, чтобы заставить объект двигаться вдоль поверхности, требуется большее количество энергии, чем на поддержание его движения с постоянной скоростью. Это связано с тем, что между поверхностями тел возникают силы сцепления. Чем более гладкие поверхности необходимо заставить перемещаться друг относительно друга, тем больше трение покоя. Например, намного проще заставить деревянный куб перемещаться по бетонному полу, чем вызвать движение резинового куба по стальной поверхности.



Dynamic Friction (Динамическое трение). Количество энергии, необходимое для поддержания движения объекта вдоль некоторой поверхности. Необходимо помнить, что каждая поверхность имеет свой коэффициент трения и что поверхности взаимодействуют друг с другом. Например, для создания эффекта скользкой поверхности необходимо уменьшить величины трения покоя и динамического трения между поверхностью и объектами, которые приходят с ней в соприкосновение.

Stand In (Заместитель). Обычно при имитации динамики во всех кадрах каждый полигон поверхности проверяется на предмет соприкосновения с поверхностью активного или пассивного тела. Если объекты собраны в группу или используется очень сложная модель, вычисления могут замедлиться настолько, что для их завершения понадобится несколько часов или даже дней. Но, указав соответствующее значение параметра Stand In (Заместитель), можно заменить реальную поверхность упрощенным объектом, что позволит ускорить процесс вычислений. В качестве заменителей предлагаются сфера и куб. Для плоских объектов обычно используется куб, который замещает объект его габаритным контейнером. Соответственно, для объектов сферической формы в качестве заместителя лучше брать сферу. Имейте в виду, что перемещения объектов зависят от вида заместителя, так что если при моделировании столкновений вы для яйца выберете в качестве заместителя куб, то возникнет впечатление, что перед яйцом находится прямоугольная пластина.

СОВЕТ

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

При имитации динамики прежде всего необходимо разделить объекты сцены на активные и пассивные. Это делается с помощью команд Create Active Rigid Body (Создать активное твердое тело) и Create Passive Rigid Body (Создать пассивное твердое тело) в меню Soft/Rigid Bodies (Упругие/Твердые тела).После этого можно задать параметры тела в окне каналов. Затем необходимо определить поля (fields), под действием которых находится объект, и указать, ограничивает ли что-нибудь его движение.

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


Имитация динамики упругого тела в 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 и затем настроить их параметры таким образом, чтобы движение гантели стало более приближенным к реальности

Системы частиц и динамика


В этой главе

Динамика твердого тела

Поля

Ограничители

Подготовка к имитации динамики твердого тела

Частицы

Упражнение. Создание дыма из трубы

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

Подведем итоги



Иногда вместо анимации объектов по



 

В этой главе

Иногда вместо анимации объектов по методу ключевых кадров, описанной в главе 10, можно позволить программе создать анимацию под вашим непосредственным руководством. Работа с так называемыми системами частиц особенно полезна в случаях, когда необходимо анимировать десятки, сотни, а то и тысячи одинаковых объектов, имеющих похожую геометрию. Также можно использовать модуль динамики для имитации реального поведения объектов, к примеру, для моделирования процесса столкновения шара для боулинга с кеглями. Этот режим позволяет также воссоздать поведение упругого тела, например деформации каучука или желатина. В этой главе вам предстоит познакомиться со следующими темами:
Имитация динамики твердого тела. Подготовка сцены к моделированию движения объектов под действием различных сил и их столкновений друг с другом.
Применение сил. При имитации динамики принимаются во внимание сила тяжести, ветер и другие типы физических воздействий.
Применение ограничителей. Движение объектов не всегда является свободным. Поэтому при имитации динамики принимается во внимание наличие различных факторов, ограничивающих свободу перемещения.
Создание частиц. В Maya можно указывать место создания частиц, нарисовав их или воспользовавшись источником частиц.
Типы частиц. Существует большое количество типов частиц, используя которые можно смоделировать такие явления, как дождь, брызги, эффект распада и многие другие.
Имитация динамики упругого тела. Вы узнаете, как настроить параметры тела таким образом, чтобы оно деформировалось при ударах о другие объекты или под действием сил.
Ключевые термины

Активное тело (Active body). Объект, реагирующий на столкновения с другими объектами.

Пассивное тело (Passive body). Объект, на который не влияют ни поля, ни столкновения, хотя он и может принимать участие в последних.

Поля (Fields). Силы, используемые для анимации движения твердых и упругих тел, а также частиц. Примером такой силы является сила тяжести.

Ограничители (Constraints). Используются для уменьшения числа степеней свободы движения объектов при имитации динамики.
Например, шарнир оставляет только возможность вращения объекта вокруг единственной оси.

Источник частиц (Emitter). Элемент, отвечающий за скорость и направление движения частиц. Его можно представить в виде пожарного шланга, в то время как частицы будут потоком воды.

Упругое тело (Soft body). Объект, который может быть деформирован в процессе имитации динамики.

Мишень (Goal). В качестве мишени, притягивающей к себе частицы, идеально подходят любые объекты, полученные на основе полигональных сеток или NURBS-кривых. В первом случае частицы притягиваются к вершинам объекта, во втором — к управляющим точкам.
В этой главе вы найдете обзор инструментов, которые автоматически создают анимацию на основе определенного набора параметров. Чтобы получить к ним доступ, необходимо переключиться в режим Dynamics (Динамика). Это можно сделать, нажав клавишу F4.

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

Ограничители


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

Nail (Гвоздь). Привязывает объект к определенной точке сцены. В итоге объект оказывается прикрепленным к точке привязки, но может вращаться вокруг нее в результате столкновений с другими объектами или под действием полей.

Pin (Булавка). Этот ограничитель связывает вместе два объекта, создавая для них общую опорную точку.

Hinge (Шарнир). В соответствии со своим именем этот ограничитель позволяет объекту свободно вращаться вокруг единственной оси. Можно связать активный объект с точкой в пространстве, с другим активным объектом или с пассивным объектом.

Spring (Пружина). Подобно ограничителю Nail (Гвоздь) привязывает объект к определенной точке сцены, но при этом длина самого ограничителя может циклически изменяться. Как и в случае ограничителя Hinge (Шарнир), существует возможность связать активный объект с точкой в пространстве, с другим активным объектом или с пассивным объектом.

Barrier (Барьер). Запрещает объектам перемещение за пределы определенной плоскости. Этот ограничитель можно назначить только одному объекту. При столкновении с барьером объекты могут менять направление своего движения, но никогда не отскакивают от него. Рекомендуется использовать для плоскостей, моделирующих стены и пол.



Подготовка к имитации динамики твердого тела


Обычной процедурой при имитации динамики твердых тел является размещение объектов в надлежащих местах, а затем определение их как активных или пассивных. Затем, не снимая выделения с активных тел, принято назначить им поле Gravity (Сила тяжести). После чего можно вводить в сцену другие поля, а также ограничители движения объектов. Редактирование параметров объектов можно осуществлять прямо в процессе воспроизведения анимации. Но имейте в виду, что при создании имитации динамики ползунок таймера анимации должен находиться на отметке нулевого кадра, так как параметры объектов зависят от их собственных значений в предыдущем кадре. После того как вы смоделировали взаимодействия нужным вам образом, можно преобразовать имитацию динамики в набор ключевых кадров. После этого можно будет совершить стандартный набор действий, доступный для обычной анимации.

Упражнение. Имитация динамики твердого тела

Теперь пришло время познакомиться с практической стороной дела. Исследование этих эффектов является весьма интересным занятием, так как программа практически сразу показывает результат редактирования.

СОВЕТ

Не стоит пренебрегать выполнением команды Reset Settings (Сбросить настройки) меню Edit (Правка) окон диалога с параметрами инструментов и функций. Это особенно важно при имитации динамики, так как в этих случаях регулярно приходится вносить изменения в эти параметры.

Загрузите файл chlStutOlstart.mb. Нажмите клавишу F4, чтобы гарантировать, что вы находитесь в режиме Dynamics (Динамика). Проверьте, загружен ли модуль имитации динамики, выбрав команду Window > Setting/Preferences > Preferences (Окно > Настройки/Параметры > Параметры). В расположенном слева списке Categories (Категории) выделите самую нижнюю строчку Modules (Модули) и проверьте наличие флажка Dynamics (Динамика) в разделе Load on Startup (Загружать при запуске). В сцене присутствуют шесть плоскостей и две сферы, подвешенные в пространстве. Вам предстоит проделать несколько экспериментов, чтобы получить представление о том, как работает модуль динамики.


Выберите команду Reset Settings (Сбросить настройки) в меню Edit (Правка) появившегося окна диалога, затем в раскрывающемся списке Constraint Type (Тип ограничителя) выберите вариант Nail (Гвоздь), как показано на рис. 13.3, и нажмите кнопку Create (Создать). В центре плоскости появится маленькое зеленое пятно. Перейдите в режим преобразования перемещения и введите в поле Translate Y (Смещение по оси Y) окна каналов значение 8, чтобы переместить ограничитель на две единицы вверх.



Рис. 13.3. Выбор подходящего ограничителя в окне диалога Constraint Options

Выделите левую нижнюю плоскость, которая называется left_swing, и нажмите клавишу g, чтобы повторить назначение ограничителя Nail (Гвоздь). Также переместите ограничитель на две единицы вверх.

Выделите центральную плоскость, которая называется center_swing, и назначьте ей ограничитель Hinge (Шарнир) по описанной выше схеме.

Выделите плоскость nght_spinner и нажмите клавишу g, чтобы назначить ей ограничитель Hinge (Шарнир). Повторите эту операцию для плоскости left_ spinner.

Выделите расположенную на самом верху плоскость top_paddle и назначьте ей ограничитель Spring (Пружина). Запустите воспроизведение анимации, чтобы посмотреть, как стали двигаться объекты. При этом можно вращать сцену, чтобы понаблюдать происходящее с различных углов. Остановите воспроизведение анимации и верните ползунок на отметку нулевого кадра.

Щелчками при нажатой клавише Shift выделите обе сферы и назначьте им ограничитель Spring (Пружина). Теперь они соединены упругим стержнем. Снова запустите воспроизведение анимации, чтобы посмотреть, что получилось.

Остановите воспроизведение анимации, переместите ползунок таймера анимации на отметку нулевого кадра и выделите линию, соединяющую две сферы. В окне каналов появятся ее параметры. Введите в поля Spring Stiffness (Жесткость пружины) и Spring Rest Length (Длина пружины в состоянии покоя) значение 10. Посмотрите, как теперь будут двигаться объекты, остановите анимацию и присвойте этим параметрам значения 2 и 6 соответственно.



Выделите сферу balll и в окне каналов введите в поле параметра Mass (Масса) значение 3, как показано на рис. 13.4. Теперь в процессе воспроизведения анимации вы увидите очевидную разницу в весе между двумя сферами.



Рис. 13.4. Изменение массы одной из сфер

Теперь пришло время записать анимацию в память компьютера, чтобы избавиться от необходимости каждый раз при воспроизведении анимации обсчитывать поведение объектов. Выделите все движущиеся объекты сцены, выберите в главном меню команду Solvers > Memory Cache > Enable (Модули просчета > Кэширование памяти У Включить) и запустите воспроизведение анимации. После того как ползунок таймера анимации пройдет через весь диапазон, у вас появится возможность перемещать его вручную, например, чтобы посмотреть, как выглядит движение объектов в обратном направлении.

ПРИМЕЧАНИЕ

Если теперь попытаться отредактировать какой-нибудь из параметров объекта, принимающего участие во взаимодействии, то обнаружится, что это не оказывает никакого эффекта на вид анимации. Для возвращения к редактированию необходимо очистить кэш. Это можно сделать с помощью команды Solvers > Memory Cache > Delete (Модули просчета > Кэширование памяти > Удалить). Или же можно открыть окно диалога Attribute Editor (Редактор атрибутов), выбрав в главном меню команду Solvers V Rigid Body Solver (Модули просчета > Модуль просчета для твердого тела) и нажав кнопку Delete (Удалить) в разделе Rigid Solver State (Состояние решения).

Если вас устраивает полученный результат, можно преобразовать его в стандартную анимацию на основе ключевых кадров. Этот метод особенно хорош в тех случаях, когда вычисления поведения объектов происходят очень медленно. Выделите все активные тела в сцене и выберите в главном меню команду Edit > Keys > Bake Simulation (Правка > Ключи > Завершение имитации). После окончания воспроизведения анимации в каждом из кадров появится ключ с параметрами всех активных объектов. Теперь легко можно вручную перемещать ползунок таймера анимации.Также вы можете нажать кнопку Reverse Play (Воспроизведение в обратном направлении), чтобы посмотреть, как выглядит имитация динамики в обратном порядке.

Подведем итоги


Благодаря системам частиц и модулю динамики появилась возможность создавать сложные и реалистичные анимации. В этой главе мы продемонстрировали только небольшую часть этих возможностей. Вы получили информацию по следующим темам:

Имитация динамики твердого тела. Вы узнали, как создать и анимировать

взаимодействие между недеформируемыми объектами.

Запись имитации динамики в память. Мы показали, как заставить программу запомнить анимацию взаимодействий между объектами. В результате отпадает необходимость в вычислении каждого кадра.

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

Создание источников частиц. Вы получили информацию о способах создания различных типов частиц и узнали о том, как преобразовать объекты в генераторы частиц.

Создание полей. Мы продемонстрировали, как различные поля влияют на движение систем частиц и объектов, принимающих участие в имитации динамики.

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

 



Поля


Полями называются локализованные или глобальные силы, действующие на объекты. В главе 4 для моделирования движения воды вам уже приходилось применять поле Turbulence (Турбулентность). Поля снабжены своим собственным значком, что облегчает процесс их выделения в ситуациях, когда необходимо анимиро-вать поле или изменить его параметры. Например, можно сделать так, чтобы гравитационное поле меняло свое направление в процессе анимации, или присоединить поле Air (Атмосфера) к шлюпке, чтобы создать брызги, как при перемещении через поле частиц. Позднее с помощью окна диалога Relationship Editor (Редактор связей) можно отредактировать количество объектов, находящихся под действием поля. В Maya существуют следующие поля:

Air (Атмосфера). Давящее поле, в настройки которого включены параметры Wind (Ветер), Wake (Воздушная струя) и Fan (Вентилятор), позволяющие имитировать ветер, движение воздуха, возникающее в результате движения объектов, и работу вентилятора.

Drag (Торможение). Поле, замедляющее движение попадающих в него объектов.

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

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

Radial (Радиальное). Это поле отличается от предыдущего только тем, что в расчет не принимаются массы тел. Можно сделать так, чтобы действие этого поля уменьшалось с увеличением расстояния до его источника, а также сделать его притягивающим или отталкивающим.

Turbulence (Турбулентность). Поле, делающее движение объектов более хаотичным. Его часто используют при работе с упругими телами или системами частиц для создания эффектов ветра или волн.

Uniform (Однородное). Поле, заставляющее объекты двигаться в определенном направлении с постоянной скоростью.

Vortex (Водоворот).


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

Volume Axis (Объемный эффект). Поле, позволяющее создавать эффекты внутри некоторого объема, который может иметь форму куба, сферы, цилиндра, конуса или тора.


Создание дыма из трубы


Теперь, когда вы получили информацию о возможных способах использования частиц, пришло время применить эти знания на практике. Загрузите сцену с домом, к которой в прошлой главе вы добавляли эффекты рисования. Это может быть ваш собственный файл или файл chl3tut02start.mb. Смоделируем дым, идущий из трубы дома, и назначим ему подходящий материал.

Загрузив сцену, скройте все объекты, кроме трубы. Это позволит сосредоточиться на области создания частиц и увеличит скорость отклика программы на ваши действия. Для начала скройте все слои, кроме ChimneyL, затем выделите трубу (не забудьте нажать клавишу Т после щелчка на любой из поверхностей) и выберите команду Display > Hide > Hide Unselected Objects (Отображение > Скрыть > Скрыть невыделенные объекты) или нажмите комбинацию клавиш Alt+h. Затем нажмите комбинацию клавиш Shift+F, чтобы максимально увеличить масштаб трубы во всех окнах проекции.

Как вы помните, труба была анимирована таким образом, чтобы ее форма менялась во времени. Поэтому в качестве источника частиц будет использоваться часть chimney_pipe. Выделите ее в любом из окон проекции. Затем замените окно проекции Camera (Камера) окном проекции Perspective (Перспектива). Нажмите клавишу 5 для перехода в режим тонированной раскраски.

Убедитесь, что объект chimney_pipe по-прежнему выделен, и щелкните на квадратике, расположенном справа от команды Emit from Object (Генерировать из объекта) меню Particles (Частицы). Введите в поле Emitter Name (Имя генератора) появившегося окна диалога, вид которого показан на рис. 13.5, имя ChimneySmoker. Выберите в раскрывающемся списке Emitter Type (Тип генератора) вариант Directional (Направленный). Также убедитесь, что в раскрывающемся списке Cycle Emission (Циклическое излучение) выбран вариант None (Отсутствует). В разделе Distance/Direction Attributes (Параметры расстояния/Направления) введите в поле Spread (Разброс) значение 0,2. Убедитесь, что в полях DirectionX (Направление вдоль оси X) и DirectionY (Направление вдоль оси Y) находятся значения 0 и 1 соответственно.
В этом случае дым будет идти вверх. Нажмите кнопку Create (Создать) и закройте окно диалога. Теперь увеличьте масштаб отображения верхней части трубы и запустите воспроизведение анимации. Вы увидите появление частиц, как показано на рис. 13.6.


Рис. 13.5. Настройка параметров для генератора дыма
Остановите анимацию на кадре № 50 и щелкните на испускаемых частицах. В окне проекции Perspective (Перспектива) вокруг них появится габаритный контейнер зеленого цвета, а в окне каналов вы увидите имя, присвоенное программой данной системе частиц. Переименуйте их в ChimneySmoke и откройте окно диалога Attribute Editor (Редактор атрибутов), нажав комбинацию клавиш Ctrl+a.
Для начала перейдите на вкладку ChimneySmoke и в раскрывающемся списке Emitter Type (Тип генератора) раздела Basic Emitter Attributes (Базовые параметры генератора) выберите вариант Volume (Объемный). Чтобы частицы возникали внутри шара, расположенного в центре дымовой трубы, выберите в раскрывающемся списке Volume Shape (Форма объема) вариант Sphere (Сфера). В полеVolume Offset Y (Смещение объема по оси Y) введите значение 0,5. В результате генератор будет располагаться немного выше трубы. Введите в поля Along Axis (Скорость вдоль оси), Random Direction (Отклонение от направления) и Directional Speed (Направленная скорость) значения 60, 10 и 60 соответственно, как показано на рис. 13.7. Теперь поток частиц перестал выглядеть, как свисающие пряди волос. Если вы не заметили каких-либо изменений, верните ползунок таймера анимации на нулевой кадр и нажмите комбинацию клавиш Alt+v. Остановите воспроизведение анимации примерно на сотом кадре.


Рис. 13.6. Начальный вид испускаемых частиц




Рис. 13.7. Результат редактирования параметров потока частиц
Перейдите на вкладку ChimneySmokeShape. В раскрывающемся списке Lifespan Mode (Режим времени жизни) раздела Lifespan Attributes (Параметры времени жизни) выберите вариант Constant (Константа). Это значит, что каждая частица будет присутствовать в сцене в течение определенного числа кадров, а потом исчезнет.


Дым из трубы должен постепенно рассасываться по мере удаления от нее, поэтому введите в поле Lifespan (Время жизни) значение 6. Частицы будут исчезать через шесть секунд после своего появления. В Раскрывающемся списке PartKle Render Туре (Тип визуализации частиц) раздела Render Attributes (Паоаметры визуализации) выберите вариант Clouds (s/w) (Облака, визуализируемые программно). Нажмите кнопку Add Attributes for Current Render Type (Добавить параметры к текущему типу визуализации), чтобы посмотреть на параметры облака. Введите в поля параметров Radius (РАДИУС) Surface Shadi (Затенение поверхности) соответственно. Параметр Surface Shading (Затенение поверхности) определяет резкость отдельных облаков после визуализации. Чем больше его значения, тем больше отдельных облаков будет в сцене. Параметр Threshold (Пороговое значение) задает степень смешивания между отдельными клубами дыма. Запустите воспроизведение анимации, и вы увидите совершенно другую картину, как показано на рис. 13.8.




Рис. 13.8. Результат редактирования параметров частиц
Теперь создадим материал для клубов дыма. Нажмите комбинацию клавиш Shift+t, чтобы открыть окно диалога Hypershade (Редактор узлов). Среднейкнопкой мыши перетащите материал Particle Cloud (Облако частиц) из раздела Volumetric (Объемные) области создания узлов на вкладку Work Area (Рабочая область). Щелкните на появившемся образце материала правой кнопкой мыши и выберите в появившемся контекстном меню команду Assign Material to Selection (Назначить материал выделенному объекту). На данный момент сцена слишком затемнена, поэтому добавим точечный источник света, чтобы иметь гарантию правильного редактирования материала в процессе его создания. В поля Translate X (Смещение по оси X), Translate Y (Смещение по оси Y) и Translate Z (Смещение по оси Z) окна каналов введите значения -175, 400 и 100 соответственно. В окне диалога Render Globals (Общие параметры визуализации) сделайте разрешение равным 320x240, чтобы сократить время визуализации.


Поместите ползунок таймера анимации на отметку кадра № 100, измените ракурс в окне проекции Perspective (Перспектива) таким образом, чтобы видеть дым немного слева, и визуализируйте текущий кадр. Примерный вид полученного результата показан на рис. 13.9.




Рис. 13.9. Результат назначения материала системе частиц и освещения ее точечным

источником света
Оставьте окно визуализатора открытым и выделите область расположения дыма рамкой. В окне диалога Hypershade (Редактор узлов) дважды щелкните на образце материала, назначенного частицам. Присвойте ему имя SmokeCloud. Сделайте цвет материала темно-коричневым, а прозрачность задайте равной 75 %. Нажмите кнопку Render Region (Визуализация области) в окне диалога Render View (Визуализатор), чтобы посмотреть на результат сделанных изменений. Область, которую вы выделили рамкой, должна визуализироваться довольно быстро.
Введите в поле Density (Плотность) значение 0,05, а цвет параметра Blob Map (Карта сфер) сделайте темно-серым. Для этого в поле Value (Интенсивность) окна диалога Color Chooser (Выбор цвета) необходимо ввести значение 0,3. Чтобы сделать расположение клубов дыма более хаотичным, раскройте раздел BuildIn Noise (Встроенное зашумление) и введите в поля параметров Noise (Шум), Noise Freq (Частота шума) и Noise Aspect (Пропорциональность шума) значения 1, 0,5 и -0,5 соответственно. Если после изменения каждого из параметров визуализировать выделенную область, то можно наблюдать эффект возмущения параметров дыма. Затем в разделе Shading Properties (Свойства раскраски) введите в поле параметра Diffuse Coefficient (Коэффициент диффузного рассеяния) значение 2, чтобы сделать дым более объемным. Результат визуализации показан на рис 13.10. Напоследок осталось назначить карту текстуры Ramp (Линейный градиент) параметру Life Transparency (Изменение прозрачности со временем), чтобы сделать исчезновение частиц со временем более правдоподобным. В этом случае, когда время жизни частиц истечет, они растворятся в пространстве вместо того, чтобы неожиданно исчезнуть с экрана.







Рис. 13.10. Окончательный вид дыма после редактирования параметров материала
Запустите воспроизведение анимации, остановив его примерно на двухсотом кадре, и измените вид в окне проекции Perspective (Перспектива) таким образом, чтобы видеть верхнюю часть клубов дыма. В окне диалога Attribute Editor (Редактор атрибутов) для материала SmokeCloud щелкните на кнопке с рисунком шахматной доски, расположенной справа от имени параметра Life Transparency (Изменение прозрачности со временем). В окне диалога Create Render Node (Создать узел визуализации) выберите текстуру Ramp (Линейный градиент). Затем дважды щелкните на кнопке с указывающей вправо стрелкой, чтобы перейти к редактированию параметров текстуры. Сделайте цвет верхнего кружка, расположенного слева от образца текстуры, белым, а цвет среднего и нижнего кружков — светло-серым. Для этого нужно присвоить параметру Value (Интенсивность) значение 0,75. В результате прозрачность частиц будет постепенно возрастать, пока к концу их времени жизни не достигнет максимума. Для того чтобы переход осуществлялся немного позже, выберите в раскрывающемся списке Interpolation (Интерполяция) вариант Exponential Up (Экспоненциальный рост), как показано на рис. 13.11.

Рис. 13.11. Настройка параметров текстуры Ramp, благодаря которой прозрачность частиц будет увеличиваться со временем
Теперь можно удалить временный источник света и сделать видимыми все объекты сцены. Так как вы уже наблюдали движение частиц на шаге 5, вы имеете представление о том, как они будут двигаться. Визуализировав один кадр, вы получите подтверждение того, что созданный для системы частиц материал выглядит правдоподобно и вписывается в общее настроение сцены. Перейдите в окно проекции Camera (Камера) и установите режим тонированной раскраски для габаритного контейнера. Запустите воспроизведение анимации и остановите ее на сотом кадре. Теперь можно визуализировать активное окно проекции, нажав комбинацию клавиш Alt+F9. Результат визуализации показан на рис. 13.12.




Рис. 13.12. Вид сцены после добавления дыма, идущего из трубы
Теперь вы можете сравнить свои результаты с тем, что получилось у нас, загрузив файл ch13tut02end.mb. Если вам понравилось, как выглядит статичный кадр, визуализируйте полный фильм. Эффект дыма не вызывает сильного увеличения времени визуализации.