Первые шаги в Maya. Урок 15. Программно-визуализируемые системы частиц. Часть 2
Примеры внедрения частиц в сцену
Кружащиеся и собирающиеся в стопку кленовые листья
Примеры внедрения частиц в сцену
Броуновское движение частиц
Воспользуемся системой частиц для того, чтобы имитировать броуновское движение частиц внутри замкнутого пространства, в качестве которого будет служить обычный NURBS-шар. Создайте сцену с шаром в центре и назначьте последнему полупрозрачный материал (рис. 18). Внедрите в сцену эмиттер, воспользовавшись командой Particles=>CreateEmitter (Частицы=>Создать эмиттер), и проиграйте анимацию — эмиттер станет испускать частицы, правда количество их слишком велико, появляются они строго в центре шара и спокойно распространяются за его пределы (рис. 19).
Рис. 18. Исходная сцена
Рис. 19. Вид сцены сразу после создания эмиттера
Попробуем добиться, чтобы частицы появлялись практически в любой внутренней части шара, — это совсем несложно, если выбрать объемный эмиттер. Поэтому выделите эмиттер и в редакторе атрибутов в поле EmitterType установите вариант Volume, в поле Volume Shape — Sphere, а затем масштабируйте сферу-эмиттер так, чтобы она стала немного меньше полупрозрачной сферы (рис. 20). Проиграйте анимацию и убедитесь, что цель достигнута. Теперь имитируем столкновение частиц со сферой. Выделите систему частиц и (при нажатой клавише Shift) сферу (не сферу-эмиттер), а затем воспользуйтесь командой Particles=>MakeCollide (Частицы=>Задействовать столкновение) — частицы перестанут вылетать за пределы сферы (рис. 21).
Рис. 20. Корректировка формы и размеров эмиттера
Рис. 21. Результат установки препятствия в виде поверхности сферы на пути полета частиц
Обратите внимание, что в начальных кадрах анимации частиц сравнительно немного, зато потом их количество переходит все мыслимые пределы. Причина в том, что каждую секунду эмиттер генерирует по сто частиц, — в нашем же случае требуется, чтобы во всех кадрах анимации одновременно существовало примерно одинаковое их количество. Это значит, что в самых первых кадрах анимации должно сформироваться нужное их число, а затем оно просто должно поддерживаться примерно на том же уровне. Чтобы добиться такого результата, анимируем параметр Rate у эмиттера: выделите эмиттер, активируйте 1-й кадр, установите в поле Rate значение 1000 и создайте анимационный ключ (команда Set Key из контекстного меню) — рис. 22. Переключитесь в 5-й кадр и создайте ключ анимации при том же значении параметра Rate, после чего перейдите в 6-й кадр, введите в поле Rate значение 1 и опять создайте ключ. Проиграйте анимацию и убедитесь, что количество частиц визуально на всем протяжении анимации одинаково (на самом деле в первых пяти кадрах их меньше, но заметить это при обычном просмотре практически невозможно). Измените тип частиц на B lobbySurface (тогда частицы при рендеринге будут выглядеть как обычные сферы) и уменьшите радиус сфер, щелкнув на кнопке CurrentRenderType (Параметры текущего типа визуализации) из свитка RenderAttributes и введя в поле Radius (Радиус) значение 0,1 (рис. 23). Затем добейтесь некоторой хаотичности их движения, увеличив для эмиттера параметры Speed и SpeedRandom примерно до 15 и 10 соответственно и назначив системе частиц радиальную силу (команда Fields=>Radial — Поля=>Радиальность). После этого частицы станут двигаться в соответствии с нашим планом (рис. 24).
Рис. 22. Создание ключа для 1-го кадра
Рис. 23. Настройка параметров визуализации частиц
Рис. 24. Броуновское движение частиц
Кружащиеся и собирающиеся в стопку кленовые листья
Немного усложним задачу и заставим кружиться в пространстве, а затем собираться в стопку кленовые листья. Смоделируйте кленовый лист. Для этого вначале создайте его контур в виде замкнутой NURBS-кривой (это проще сделать на основе имеющего растрового изображения) — рис. 25. А затем выделите контур и примените к нему операцию Bevel (команда Surfaces=> Bevel — Поверхности=>Скос) — в итоге будет получена боковая поверхность листа, придающая ему объем. Затем на основе той же кривой инструментом Planar (команда Surfaces=>Planar — Поверхности=>Планарный) смоделируйте две плоские поверхности, поместите первую из них в качестве верхней плоскости листа, а вторую — в качестве нижней. Объедините все три поверхности в группу (рис. 26), а затем уменьшите размеры всех элементов группы.
Рис. 25. Контур кленового листа
Рис. 26. Кленовый лист
Создайте систему частиц particle1 с Directional-эмиттером, размещенным в верхней части окна проекции Perspective, повернутым на –90° относительно оси Z и генерирующим частицы в разных направлениях за счет увеличения значения параметра Spread (рис. 27). Назначьте созданной системе частиц силы Gravity, Newton и Turbulence для притягивания частиц поверхностью земли, вращения их и перемешивания во время движения (рис. 28). Отрегулируйте значение скорости движения частиц и влияния сил так, чтобы частицы непрерывно кружились и постепенно опускались на землю. Замените частицы на объект-образец. Для этого выделите группу элементов, образующих кленовый лист, и щелкните на квадратике, расположенном справа от команды Particles=>Instancer (Частицы=>Заместитель). Удостоверьтесь, что в списке ParticleObjecttoInstance выбрана система частиц particle1, а затем для движения объектов с учетом назначенных частицам сил установите для параметров в области Rotation Options вариант Force (рис. 29) и щелкните на кнопке Apply. В итоге каждая из частиц будет заменена на указанный образец, который окажется повернутым в пространстве на определенный (соответствующий комплексному воздействию сил) угол (рис. 30).
Рис. 27. Параметры настройки эмиттера
Рис. 28. Появление частиц
Рис. 29. Настройка параметров замены частиц на объект-образец
Рис. 30. Вид сцены после замены частиц на объект-образец
Дополните сцену плоскостью, имитирующей поверхность земли. Теперь по замыслу нужно сделать так, чтобы кружащиеся листья после того, как достигнут данной поверхности, автоматически собирались в стопку. Это означает, что требуется организовать столкновение частиц с поверхностью, при котором каждая частица создает одну новую частицу, принадлежащую уже другой системе частиц particle2, и умирает. Чтобы организовать это, выделите систему частиц, а затем при нажатой клавише Shift — созданную плоскость и примените к ним команду Particles=>MakeCollide. Откройте редактор событий частиц (команда Particles=> Particle Collision Events), настройте его параметры в соответствии с рис. 31 и щелкните на кнопке CreateEvent. Замените частицы созданной системы на объект-образец.
Рис. 31. Параметры настройки события для системы частиц particle 1
Полученные в результате работы созданного выше события новые частицы будут двигаться в несколько замедленном темпе, тоже кружась, но в стопку собираться, естественно, не будут. Поэтому создайте вспомогательный объект (например, сферу) — рис. 32 и назначьте его мишенью для сбора particle2-частиц, выделив частицы и сферу и применив команду Particles=>Goal, а затем увеличьте целевой вес мишени примерно до 0,8. Для того чтобы листья, достигнув мишени, не продолжали кружить вокруг нее, а остановились, придется настроить столкновение и создать соответствующее событие для системы частиц particle2. Поэтому вначале выделите объект particle2 и мишень и примените команду Particles=>MakeCollide. А затем откройте редактор событий частиц, выделите систему частиц particle2 и создайте для нее событие с параметрами, представленными на рис. 33, поскольку пришедшие на смену particle2-частицам частицы системы particle3 должны быть уже неподвижны, то есть они не могут наследовать скорость частиц, их породивших. Скройте объект-мишень, чтобы он не визуализировался, и замените частицы созданной системы на объект-образец, и при рендеринге вы увидите, что частицы двигаются к центру предполагаемой стопки и, достигнув последней, останавливаются (рис. 34). Возможный вид полученной в итоге при визуализации сцены в некоторых кадрах анимации представлен на рис. 35.
Рис. 32. Появление вспомогательного объекта
Рис. 33. Параметры настройки события для системы частиц particle2
Рис. 34. Фрагмент сцены с собирающимися в стопку листьями
Рис. 35. Кружащиеся и собирающиеся в стопку кленовые листья