Первые шаги в Maya. Урок 22. Динамические эффекты
Горящая спичка
Создайте сцену с двумя стоящими друг на друге цилиндрами одинакового радиуса (рис. 48): нижний будет играть роль спички, а верхний станет источником огня (не забудьте для равномерного зажигания увеличить у верхнего цилиндра количество разбиений по высоте — параметр Subdivisions Height). Текстурируйте нижний цилиндр, а верхнему назначьте эффект огня — пока результат мало напоминает горение спички (рис. 49). Выделите созданную систему частиц и в окне каналов уменьшите значения параметров FlameEndRadius и FireIntensity до 1 и 0,01 соответственно — огонь станет однородным и менее ярким (рис. 50). Уменьшите скорость распространения огня (параметр Fire Speed) примерно до 68 (рис. 51) и масштабируйте систему частиц так, чтобы размер огня соответствовал размеру спички, при необходимости также отрегулируйте размеры и положение верхнего цилиндра (рис. 52).
Рис. 48. Исходная сцена
Рис. 49. Результат назначения эффекта Fire верхнему цилиндру
Рис. 50. Вид сцены после изменения параметров пламени
Рис. 51. Окончательный вариант настройки параметров эффекта Fire
Рис. 52. Результат уменьшения скорости распространения огня и масштабирования огненных частиц
Теперь нужно подкорректировать материал для пламени. Наиболее яркое пламя наблюдается в его центральной части, поэтому активируйте редактор материалов, щелкните в правой части строки Life Incandescence, отвечающей за яркость пламени, и отредактируете Ramp-текстуру примерно так, как показано на рис. 53. Теперь следует сделать так, чтобы частицы вблизи головки спички были практически прозрачны, а по мере удаления от нее уровень их прозрачности уменьшался, — для этого измените Ramp-текстуру для параметров Life Transparency в соответствии с рис. 54. И наконец, цвет пламени в его разных участках также неодинаков — так, у самой спички оно имеет синевато-фиолетовый оттенок, а при удалении от нее цвет пламени меняется на светло-оранжевый и, наконец, на темно-оранжевый. Поэтому измените вид Ramp-текстуры у Life Color примерно так, как показано на рис. 55. Дополнительно отрегулируйте плотность пламени, вручную подобрав значение параметра Density (рис. 56). После этого уменьшите уровень воздействия силы трения (параметр Magnitude для объекта dragField1) до 8,5 (рис. 57) и деформируйте верхний цилиндр так, чтобы в его верхней части образовалась головка спички (рис. 58). Результатом станет получение вполне реалистично горящей спички, вид которой в одном из кадров анимации представлен на рис. 59.
Рис. 53. Настройка Ramp-текстуры для Life Incandescence
Рис. 54. Настройка Ramp-текстуры для Life Transparency
Рис. 55. Настройка Ramp-текстуры для Life Color
Рис. 56. Изменение плотности пламени
Рис. 57. Корректировка уровня воздействия силы Drag
Рис. 58. Редактирование верхнего цилиндра
Рис. 59. Горящая спичка
Shatter
Эффект Shatter применяется для имитации разрушения объекта, что реализуется посредством одного из трех допустимых методов (рис. 60):
- Surface Shatter — приводит к разрушению NURBS-поверхности или полигонального объекта (исходная поверхность может быть как закрытой, так и открытой) с формированием открытых осколков, границы которых совпадают с полигональными границами исходного объекта;
- Solid Shatter — обеспечивает разрушение NURBS-поверхности или полигонального объекта (исходная поверхность может быть только закрытой) с формированием закрытых осколков с неровными (не соответствующими полигональным) границами;
- Crack Shatter — позволяет формировать на поверхности полигональных объектов трещины.
Рис. 60. Результаты разрушения объектов в соответствии с разными методами
Для назначения объекту эффекта Shatter необходимо выделить его, щелкнуть на квадратике справа от команды Effects => CreateShatter (Эффекты => Создать разрушение), активировать вкладку с нужным методом и настроить его параметры. Для примера создайте простую сцену с NURBS-плоскостью и NURBS-шаром (рис. 61). Превратите плоскость в пассивное твердое тело, воспользовавшись командой Soft/RigidBodies=>CreatePassiveRigidBody (Мягкие/Твердые тела=>Создать пассивное твердое тело). Установите для плоскости значение параметра Collision Layer равным –1, что обеспечит реакцию плоскости на столкновение с любым твердым телом.
Рис. 61. Исходная сцена
Рис. 62. Корректировка параметров плоскости
Выделите шар, щелкните на квадратике справа от команды Effects => Shatter, откройте вкладку Solid Shatter и настройте параметры эффекта в соответствии с рис. 63. При настройке параметров в данном случае мы установили желаемое число осколков (параметр Shard Count) и увеличили значение параметра Edge Jagginess, что позволит получить осколки с неровными краями. В поле Post Operation выбрали вариант Rigid bodies with collisions off (это обеспечит превращение осколков в твердые тела, которые способны участвовать в столкновениях) и включили флажок LinkToShards для установки связей с осколками. По завершении процесса формирования у шара осколков (рис. 64) установите режим воспроизведения каждого кадра, щелкнув на кнопке AnimationPreferences и выбрав в раскрывающемся списке PlaybackSpeed (Скорость воспроизведения) в категории Timeline (Временная шкала) вариант Playeveryframe (Воспроизводить каждый кадр). Одновременно увеличьте общее число кадров анимации до 300. В окне Outliner выделите все осколки (рис. 65) и назначьте им гравитационную силу (команда Fields=>Gravity — Поля=>Гравитация). Проиграйте анимацию — шар упадет на плоскость и рассыплется на осколки (рис. 66). Обратите внимание, что исходный шар был красного цвета, а цвет внешних поверхностей осколков — серый. Это связано с тем, что осколки — это уже совершенно новые объекты и им по умолчанию был назначен материал Lambert1. Для изменения материала осколков достаточно выделить их и в редакторе атрибутов в поле Surface Material изменить название назначенного данным поверхностям материала (рис. 67) — в этом случае окажется измененной лишь окраска внешних поверхностей. При желании можно назначить осколкам материал обычным образом через редактор HyperShade, но в этом случае внешняя и внутренняя их поверхности будут текстурированы одинаково.
Рис. 63. Настройка параметров эффекта Shatter
Рис. 64. Появление осколков
Рис. 65. Выделение осколков
Рис. 66. Результат разрушения шара
Рис. 67. Изменение материала осколков
Вернитесь к исходной сцене (рис. 68) — то есть к сцене без осколков. Выделите разрушаемый объект, щелкните на квадратике справа от команды Effects => Shatter, откройте вкладку Solid Shatter и в поле Post Operation измените вариант на Soft bodies with lattices and goals, все остальные параметры оставьте такими же, как в предыдущем случае (рис. 69). В итоге объект разрушится на осколки, каждый из которых окажется заключенным в пространственную решетку и будет уже не твердым, а мягким телом (рис. 70). В окне Outliner выделите все Lattice-решетки и назначьте им радиальную и турбулентную силы (команды Fields => Create Radial и Fields=>Turbulence соответственно) — рис. 71 и для радиальной силы уменьшите значение параметра Max Distance примерно до 15 (рис. 72). Проиграйте анимацию — шар немного поднимется вверх и взорвется, а получившиеся вследствие взрыва частицы начнут постепенно разлетаться в разные стороны, непрерывно переворачиваясь (рис. 73). При этом частицы ведут себя как мягкие тела и непрерывно деформируются — процессом деформации можно управлять через настройки виртуальных пружин, изменяя у них значения параметров Stiffness (Жесткость) и Damping (Торможение). Первый параметр определяет, насколько быстро пружины возвращаются в исходное состояние (а значит, насколько хорошо объект сохраняет свою форму), а второй устанавливает скорость, с которой пружины приходят в состояние покоя. Для примера уменьшим у первой из пружин значение Stiffness до 10 (рис. 74) — в результате соответствующий ей осколок разрушившегося шара перестанет сохранять свою форму (рис. 75).
Рис. 68. Исходная сцена
Рис. 69. Настройка параметров эффекта Shatter
Рис. 70. Появление осколков
Рис. 71. Выделение осколков
Рис. 72. Корректировка параметров радиальной силы
Рис. 73. Результат разрушения шара
Рис. 74. Изменение настройки одной из виртуальных пружин
Рис. 75. Результат уменьшения жесткости виртуальной пружины — слева выделенный осколок держит форму, а справа чрезмерно деформировался
А теперь попробуем сформировать на объекте трещины. Создайте сцену с полигональной плоскостью (рис. 76). Переключитесь в режим работы с вершинами (клавиша F8) и выделите вершину, от которой должна быть сформирована трещина (рис. 77). Щелкните на квадратике справа от команды Effects => Shatter, откройте вкладку Crack Shatter и настройте параметры разрушения в соответствии с рис. 78. В результате на плоскости появится трещина, которая разобьет ее на две части (рис. 79). Сделайте исходную плоскость видимой, текстурируйте ее другим цветом, а один из осколков немного переместите относительно осей X и Z — трещина станет гораздо заметнее (рис. 80).
Рис. 76. Исходная сцена
Рис. 77. Выделение вершины
Рис. 78. Настройка параметров эффекта Shatter
Рис. 79. Появление трещины
Рис. 80. Вид трещины после дополнительных преобразований