Первые шаги в Maya. Урок 24. Работа с модулем Fluid Effects
Волнующаяся океанская гладь с плывущей лодкой
Динамические fluid-эффекты
Для получения динамического fluid-эффекта сначала создается fluid-контейнер и для параметра Density в свитке ContentsMethod выбирается вариант DynamicGrid (он установлен по умолчанию). Затем в этом же свитке определяется метод формирования параметра Velocity (может быть любым в зависимости от поставленной задачи). Потом если предполагается получение взрыва либо иных эффектов горения, то дополнительно добавляют температуру (Temperature) и топливо (Fuel), то есть для данных параметров вместо заданного по умолчанию варианта Off устанавливают нужный метод их формирования. На следующем этапе производят настройки цвета, непрозрачности и свечения флюидов (свиток Shading), возможно с дополнительным подключением текстур (свиток Textures). А затем при необходимости еще и организовывают сталкивание флюидов с геометрическими объектами, мягкими телами и частицами (команда FluidEffects=>MakeCollide — Fluid эффекты=>Создать коллизию).
Для примера создайте новую сцену с 2D-контейнером и эмиттером, воспользовавшись командой FluidEffect=>Create2DContainerwithEmitter (рис. 40). В окне проекции Perspective включите режим SmoothShadeAll. Запустите проигрывание анимации — вокруг эмиттера появится белое облако флюидов (рис. 41). Переместите эмиттер вниз (рис. 42). Выделите контейнер, в редакторе атрибутов раскройте вкладку DynamicSimulation и в поле SimulationRateScale введите значение 5 — флюиды станут разлетаться гораздо шире, в результате чего облако превратится в своеобразный гриб (рис. 43). Последовательно раскройте свитки ContentsDetails и Turbulence и подключите турбулентную силу, установив в поле Strength (Сила) значение 0,1, — гриб-облако изогнется (рис. 44). Увеличьте число кадров до 200, поверните и масштабируйте контейнер так, чтобы он занял все окно проекции, — флюиды станут напоминать причудливые клубы пара (рис. 45).
Рис. 40. Исходная сцена
Рис. 41. Появление флюидов
Рис. 42. Перемещение эмиттера
Рис. 43. Результат увеличения масштаба эмиссии
Рис. 44. Добавление турбулентности
Рис. 45. Результат увеличения количества кадров анимации и корректировки размеров и положения контейнера
Создайте NURBS-плоскость и поместите ее за контейнером с флюидами, назначьте плоскости материал цвета морской волны. Выделите fluid-контейнер, раскройте свиток Shading и в полях ColorInput, IncandescenceInput и OpacityInput установите вариант Density для того, чтобы соответствующие параметры были связаны с плотностью флюидов. Ориентируясь по внешнему виду fluid-частиц в окне проекции, настройте градиенты для цвета флюидов (раздел Color) и их самосвечения (раздел Incandescence). Кроме того, отрегулируйте уровень их непрозрачности, настроив тональную кривую и увеличив значение в поле InputBias до 0,1 (рис. 46) — последнее сделает флюиды менее прозрачными (рис. 47). Раскройте свиток Textures, включите флажок TextureOpacity, удостоверьтесь в том, что для TextureType выбрана текстурная карта PerlinNoise, и увеличьте значение в поле DepthMax до 8 (рис. 48). Проведите рендеринг и убедитесь, что полученный вариант флюидов после некоторой доработки может быть задействован, например, для имитации на небе небольшой облачности, создания меняющейся водной поверхности, имитации некоторых испарений и т.п. (рис. 49).
Рис. 46. Настройка параметров свитка Shading
Рис. 47. Вид флюидов в окне проекции после корректировки параметров свитка Shading
Рис. 48. Настройка параметров свитка Textures
Рис. 49. Визуализированные флюиды
Кружка с горячим кофе
Воспользуемся модулем Fluid Effects для моделирования обычной кружки с горячим кофе. Сформируйте плоскость и стоящую на ней кружку (рис. 50). Создайте 2D-контейнер с эмиттером, применив команду FluidEffect=>Create2DContainerwithEmitter, — данный контейнер мы задействуем для получения поверхности кофейной жидкости. Поверните контейнер на 90° относительно оси X, масштабируйте его, сделав по площади немного больше верхней плоскости кружки, и расположите так, чтобы плоскость контейнера оказалась на уровне предполагаемой жидкости (рис. 51). Увеличьте число кадров в анимации до 500 и проиграйте ее — поскольку плоскость контейнера больше верхней поверхности кружки, то флюиды будут вылетать за допустимые пределы (рис. 52). Чтобы ограничить их движение, создайте коллизию fluid-частиц с кружкой, выделив контейнер и кружку и применив команду FluidEffects=>MakeCollide (Fluid эффекты=>Создать коллизию). После этого количество вылетевших флюидов станет уже незначительным (рис. 53) и останется лишь немного подкорректировать размеры плоскости контейнера.
Рис. 50. Исходная сцена
Рис. 51. Появление 2D-контейнера
Рис. 52. Вылетание флюидов за пределы кружки
Рис. 53. Результат создания коллизии флюидов с кружкой
Выделите контейнер и в редакторе атрибутов подрегулируйте параметры, отвечающие за скорость движения флюидов и турбулентность. В свитке Velocity увеличьте значение Swirl (Закручивание) до 12, а в свитке Turbulence установите силу воздействия (Strength), частоту (Frequency) и скорость (Speed) равными 0,5, 1,3 и 0,6 (рис. 54). В итоге возрастет уровень закручивания и перемешивания флюидов. Добавьте к контейнеру температуру, выбрав в свитке ContentsMethod для параметра Temperature вариант Gradient, и установите в свитке Temperature параметр TemperatureScale равным 20 (рис. 55).
Рис. 54. Настройка параметров скорости и турбулентности для 2D-контейнера
Рис. 55. Добавление и настройка для 2D-контейнера температуры
Раскройте свиток Shading, установите для параметров Color и Opacity зависимость от плотности (в полях ColorInput и OpacityInput вариант Density), а для параметра самосвечения зависимость от температуры (в поле IncandescenceInput вариант Temperature). Настройте градиенты для Color и Incandescence и тональную кривую для Opacity (рис. 56).
Рис. 56. Настройка параметров свитка Shading для 2D-контейнера
Создайте 3D-контейнер, применив команду FluidEffect=>Create3DContainer, — он потребуется для имитации пара от горячего кофе. Расположите его под 2D-контейнером (рис. 57). Создайте NURBS-сферу, немного сплюсните ее по оси Y и поместите верхнюю часть сферы в контейнер так, чтобы верхушка сферы оказалась чуть ниже плоскости 2D-контейнера (рис. 58). Выделите сферу вместе с 3D-контейнером и превратите ее в эмиттер, воспользовавшись командой FluidEffects=>Add/EditContents=>EmitfromObject. Выделите 3D-контейнер и в свитке ContainerProperties для параметров BoundaryX и BoundaryZ установите вариант None, а для параметра BoundaryY — –Yside (рис. 59). Это необходимо для того, чтобы флюиды распространялись только вверх — то есть по оси Y, а не в стороны. В списке Density подкорректируйте параметры плотности флюидов — установите Buoyancy (Плавучесть) и Dissipation (Растворимость) равными 0,9 и 0,05 соответственно (рис. 60). Это позволит сделать флюиды легкоперемещаемыми и обеспечит постепенное снижение температуры вокселей — то есть визуально пар окажется более легким и будет понемногу рассеиваться. Проиграйте анимацию, и вы увидите, что вначале кофе в кружке закипит, а затем от горячего напитка пойдет пар (рис. 61).
Рис. 57. Появление 3D-контейнера
Рис. 58. Появление сферы
Рис. 59. Определение направления эмиссии флюидов в свитке Container Properties
Рис. 60. Настройка параметров свитка Density для 3D-контейнера
Рис. 61. Кружка с горячим кофе