Первые шаги в Maya. Урок 24. Работа с модулем Fluid Effects

Светлана Шляхтина

Теоретические аспекты

Базовые настройки эмиттера

Базовые настройки контейнера

Нединамические fluid-эффекты

Плывущие по небу облака

Динамические fluid-эффекты

Кружка с горячим кофе

Горящая свеча

Океанские fluid-эффекты

Волнующаяся океанская гладь с плывущей лодкой

Для придания реалистичности моделируемым сценам с учетом динамических воздействий в Maya предусмотрена возможность внедрения в них самых разных типов динамических объектов: частиц (Particles), твердых и мягких тел (Bodies), тканей (Cloth), волос (Hair), жидких и газообразных структур (Fluids) и т.д. С большей частью названных типов объектов мы уже сталкивались, а этот урок посвящен флюидам, которые позволяют моделировать разнообразные атмосферные (облака, туман, пар и дым) и пиротехнические (огонь, взрывы, включая ядерные) эффекты, а также создавать вязкие структуры (грязь, лаву и пр.) и реалистичные водные поверхности (включая спокойную водную гладь и волнующийся океан).

Теоретические аспекты

Флюиды (Fluids) представляют собой объемные частицы, умеющие проявлять свойства поверхностей. Они управляются с учетом законов гидрогазодинамики, подвержены воздействию разнообразных физических сил, в частности гравитации, турбулентности и ветра, под действием которых траектория флюидов будет изменяться. Кроме того, флюиды (как и обычные частицы) могут сталкиваться с поверхностями объектов сцены (например, с твердыми и мягкими телами и обычными частицами) и взаимодействовать с ними. Работа с флюидами реализуется через специальный модуль Maya Fluid Effects, позволяющий создавать объемные частицы и управлять их плотностью, прозрачностью, особенностями распространения и т.д. Проводимые для этого расчеты достаточно длительны, а затраты системных ресурсов существенны.

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

За работу с флюидами отвечает меню FluidEffects (Fluid-эффекты; рис. 1), которое  доступно лишь в режиме Dynamics (Динамика), активируемом при нажатии клавиши F4. В этом меню находятся команды, применяемые для создания fluid-частиц, а также для выполнения некоторых операций с ними. В поставку программы включены примеры файлов с уже готовыми системами динамических, нединамических и океанских флюидов. Ознакомиться с примерами можно, открыв окно Visor (команда FluidEffects=>GetFluidExample — Fluid-эффекты=>Загрузить Fluid-примеры либо FluidEffects=>GetOcean/PondExample — Fluid-эффекты=>Загрузить примеры океанов/водоемов; рис. 2) и загрузив интересующий файл с помощью команды ImportMayaFile, вызванной из контекстного меню. Обратите внимание, что в разделе Notes редактора атрибутов нередко отображаются ключевые моменты получения рассматриваемых в примерах fluid-эффектов. Данные системы флюидов можно редактировать, а значит, на их базе можно создавать собственные эффекты.

Рис. 1. Меню FluidEffects

Рис. 1. Меню FluidEffects

 

Рис. 2. Окно Visor с активированной вкладкой FluidExample

Рис. 2. Окно Visor с активированной вкладкой FluidExample

 

Создавать динамические и нединамические fluid-эффекты можно двумя способами. Первый из них заключается в том, чтобы вначале внедрить в сцену 2D- либо 3D-контейнер, вызвав из меню FluidEffects команду Create2DContainer (Создать 2D-контейнер) или Create3DContainer (Создать 3D-контейнер) соответственно, и только потом добавить к контейнеру эмиттер с помощью команд Add/EditContents=>Emitter (Добавить/редактировать контент=>Эмиттер) или Add/EditContents=>EmitFromObject (Добавить/редактировать контент=>Эмиттер из объекта), также вызываемых из меню FluidEffects. Первая команда просто создает эмиттер, а вторая применяется в том случае, когда в роли эмиттера должен выступить некоторый имеющийся на сцене объект. В качестве такого объекта может быть указан любой полигональный объект либо NURBS-поверхность, расположенные в контейнере, — теоретически объект может находиться и вне контейнера (программа не выдаст ошибку), но тогда испускаемые им флюиды отображаться не будут, поскольку область их распространения ограничена пределами контейнера.

С таким же успехом контейнер может быть создан сразу со встроенным эмиттером — для этого достаточно вызвать из меню FluidEffect команду Create2DContainerwithEmitter (Создать 2D-контейнер с эмиттером) либо FluidEffect=>Create3DContainerwithEmitter (Создать 3D-контейнер с эмиттером). Эмиттер определяет точку либо площадь, из которой станут появляться флюиды, задает направление их распространения и непосредственно генерирует флюиды. Он же позволяет управлять видом флюидов путем добавления и регулирования таких характерных для fluid-частиц свойств, как Density (Плотность), Temperature (Температура), Fuel (Топливо) и Color (Цвет). Контейнер задает пространство, которое могут заполнять флюиды, и позволяет управлять областью их распространения. Все вышесказанное справедливо лишь для динамических и нединамических fluid-эффектов, поскольку океанские fluid-эффекты не требуют создания контейнеров и внедрения в них эмиттеров.

Контейнеры бывают двух типов:  плоские и пространственные (рис. 3). Различие между ними заключается лишь в том, что первые ограничивают область распространения флюидов плоскостью, а вторые — некоторой областью пространства. Fluid-контейнеры представляют собой трехмерные сетки, каждую единицу которых называют вокселем1 (voxel). 2D-контейнеры имеют глубину в один воксель, глубина 3D-контейнеров составляет два и более вокселей (рис. 4). Количество вокселей в контейнерах регулируется:  при увеличении их числа качество получаемого fluid-изображения повышается, но одновременно увеличиваются и временные затраты на проведение расчетов. Флюиды на базе 3D-контейнеров очень требовательны к системным ресурсам, а их обработка занимает много времени. Для флюидов, распространяемых внутри 2D-контейнеров, необходимо меньше памяти и генерируются они гораздо быстрее. В достаточно большом числе случаев плоские системы флюидов вполне способы заменить пространственные системы, которые без существенной на то необходимости использовать не стоит.

Рис. 3. Пример 2D- (слева) и 3D-контейнеров с эмиттерами (эмиттеры выделены зеленым цветом)

Рис. 3. Пример 2D- (слева) и 3D-контейнеров с эмиттерами (эмиттеры выделены зеленым цветом)

 

Рис. 4. Структура 2D- (слева) и 3D-контейнеров с позиции их глубины

Рис. 4. Структура 2D- (слева) и 3D-контейнеров с позиции их глубины

 

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

В начало В начало

Базовые настройки эмиттера

Основные параметры эмиттера сконцентрированы в свитках BasicEmitterAttributes и FluidAttributes (рис. 5):

  • EmitterType — позволяет установить тип эмиттера;
  • Density/Voxel/Sec — определяет среднее значение эмиссии плотности для одного вокселя в секунду;
  • Heat/Voxel/Sec — устанавливает среднее значение эмиссии температуры для одного вокселя в секунду;
  • Fuel/Voxel/Sec — задает среднее значение эмиссии топлива для одного вокселя в секунду;
  • FluidDropoff — определяет уровень снижения эмиссии флюидов по мере удаления от источника.

Рис. 5. Базовые параметры эмиттера флюидов

Рис. 5. Базовые параметры эмиттера флюидов

 

При работе с флюидами могут быть задействованы следующие типы эмиттеров (рис. 6):

  • Omni (Всенаправленный) — формирует флюиды, которые распространяются из одной точки во всех направлениях;
  • Surface (Поверхностный) — позволяет испускать флюиды одной из поверхностей объекта сцены, который может представлять собой полигональный объект либо объект, созданный на базе NURBS-кривых;
  • Curve (Криволинейный) — обеспечивает распространение флюидов NURBS-кривой;
  • Volume (Объемный) — формирует флюиды, которые возникают в некоторой точке фиксированного объема (куба, сферы, цилиндра, конуса или тора) и распространяются во всех направлениях.

Рис. 6. Типы fluid-эмиттеров

Рис. 6. Типы fluid-эмиттеров

В начало В начало

Базовые настройки контейнера

Основные параметры контейнера расположены в свитках ContainerProperties, ContentsMethod, DynamicSimulation и Shading. Свиток ContainerProperties (рис. 7) позволяет регулировать следующие параметры:

  • X/Y/ZResolution — устанавливает количество вокселей в контейнере, от числа которых напрямую зависит качество получаемого fluid-изображения;
  • X/Y/ZSize — регулирует размер контейнера (рекомендуется, чтобы параметры X/Y/ZResolution и X/Y/ZSize были пропорциональны, то есть при размере 10x5x2 следует задать разрешение 40x20x8);
  • BoundaryX/Y/Z — задает направление эмиссии флюидов.

Рис. 7. Свиток ContainerProperties

Рис. 7. Свиток ContainerProperties

 

В свитке ContentsMethod (рис. 8) устанавливаются методы формирования параметров Density, Velocity, Temperature, Fuel и Color:

  • Density (Плотность) — задает плотность флюидов, при этом более высокая плотность делает объект менее прозрачным;
  • Velocity (Скорость) — определяет поведение флюидов и тесно связан с воздействием силовых полей. Данный параметр  используется только для динамических флюидов;
  • Temperature (Температура) — «нагревает» флюиды, заставляя их активнее двигаться и повышая уровень самосвечения флюидов (то есть становится заметнее воздействие параметра Incandescence);
  • Fuel (Топливо) — в сочетании с параметрами Density и Temperature позволяет имитировать происходящие с флюидами пиротехнические реакции типа возгорания и взрыва, например повышение значения параметра Temperature в совокупности с высокой плотностью флюидов (Density) может привести к возгоранию топлива, что повлечет за собой эффект взрыва. По мере горения топлива (то есть в процессе реакции) значения Density и Fuel уменьшаются (топливо как бы сгорает), что автоматически приводит к постепенному затуханию процесса. Данный параметр  используется только для динамических флюидов;
  • Color (Цвет) — устанавливает цвет флюидов, который сильнее проявляется в тех областях, где плотность флюидов значительна, а в областях с близкой к нулю плотностью не проявляется никак.

От выбора метода в свитке ContentsMethod зависит то, каким именно образом будут устанавливаться значения вышеназванных параметров. Формирование первых трех параметров может осуществляться с применением предустановленных градиентов (Gradient), статистических (StaticGrids) либо динамических сеток (DynamicGrid). Для Fuel допускается использование только градиентов и динамических сеток, а для Color допустимы варианты UseShadingColor, StaticGrids и DynamicGrid. В случае применения градиентов значения параметров в разных вокселях будут неодинаковыми, причем устанавливаться они будут автоматически на базе градиентных текстур. В отличие от градиентов, статические и динамические сетки обеспечивают точный контроль над значениями параметров в каждом из вокселей контейнера, поскольку значения параметров в разных вокселях могут выставляться вручную инструментом PaintFluidsTool. При этом в случае динамических сеток выставленные значения со временем еще и будут изменяться — то есть они вычисляются заново в каждом кадре анимации, что значительно увеличивает расчетное время. Это означает, что нединамические эффекты могут создаваться на базе градиентов и статистических сеток, а динамические требуют, чтобы по крайней мере плотность флюидов (Density) формировалась как динамическая сетка. Что касается варианта UseShadingColor для параметра Color, то он для данного параметра (в отличие от StaticGrids и DynamicGrid) позволяет напрямую определять цвет fluid-частиц.

Рис. 8. Свиток ContentsMethod

Рис. 8. Свиток ContentsMethod

 

Свиток DynamicSimulation (рис. 9) позволяет регулировать спектр параметров, отвечающих за динамическое изменение флюидов. В их число включены следующие параметры:

  • Gravity (Гравитация) — устанавливает уровень гравитационной силы;
  • Viscosity (Вязкость) — задает степень сопротивления текучести флюидов, при высоких значениях данного параметра имитируемый материал становится вязким, как смола;
  • Friction (Трение) — определяет уровень трения;
  • Damp (Заглушение) — уменьшает скорость симуляции;
  • HighDetailSolve (Разрешить высокую детализацию) — позволяет детализировать изображение; по умолчанию находится в положении Off (то есть высокая детализация запрещена);
  • StartFrame — устанавливает кадр, в котором начинается испускание флюидов;
  • SimulationRateScale — определяет масштаб эмиссии.

Рис. 9. Свиток Dynamic Simulation

Рис. 9. Свиток Dynamic Simulation

 

В свитке Shading (рис. 10) настраиваются градиенты и дополнительные значения входных параметров для цвета флюидов (раздел Color), а также уровня их самосвечения (раздел Incandescence) и непрозрачности (Opacity). Обратите внимание, что если для параметра Color в свитке ContentsMethod будет выбран не вариант UseShadingColor (он задан по умолчанию), то группа Color окажется недоступной для редактирования — в этом случае для fluid-частиц задается тот цвет, который установлен по умолчанию для данных типов сеток.

Рис. 10. Свиток Shading

Рис. 10. Свиток Shading

В начало В начало

Нединамические fluid-эффекты

Принцип моделирования нединамических fluid-эффектов следующий. Вначале создается fluid-контейнер, причем (в отличие от динамических эффектов) это может быть и почти плоский параллелепипед. Затем для параметра Density в свитке ContentsMethod в качестве варианта формирования устанавливается Gradient либо StaticGrid. После этого производится настройка цвета (свиток Shading) и подключение текстуры (свиток Textures). На последнем этапе при необходимости получения имитации движения дополнительно создаются ключи для параметра TextureTime (свиток Textures).

Для примера создайте в новой сцене 3D-контейнер, применив команду FluidEffects=>Create3DContainer и установив при выделенном контейнере в свитке ContainerProperties размер 3x3x3 (X/Y/ZSize), — рис. 11. Добавим к контейнеру флюиды. В окне проекции Perspective включите режим SmoothShadeAll (команда Shading=>SmoothShadeAll из меню окна проекции) — иначе при установленном по умолчанию каркасном режиме Wireframe флюиды будут отображаться в виде точек. Укажите в свитке ContentsMethod для параметра Density в качестве варианта формирования Gradient с типом градиента Constant, а все остальные параметры, кроме Color (то есть Velocity, Temperature, Fuel и Falloff), вообще отключите, установив для них вариант Off (рис. 12). Добавьте в сцену источник света типа Directional, немного переместите источник относительно оси Z и поверните так, как показано на рис. 13.

Рис. 11. Появление 3D-контейнера

Рис. 11. Появление 3D-контейнера

 

Рис. 12. Определение методов формирования параметров в свитке ContentsMethod

Рис. 12. Определение методов формирования параметров в свитке ContentsMethod

 

Рис. 13. Добавление источника света

Рис. 13. Добавление источника света

 

Откройте свиток Shading, увеличьте интенсивность свечения (GlowIntensity) примерно до 0,4, установите для параметра DropoffShape вариант Sphere, а затем увеличьте порог снижения интенсивности плотности (EdgeDropoff) до 0,1 (рис. 14). Установите для параметров Color (Цвет) и Incandescence (Самосвечение) в полях ColorInput и IncandescenceInput вариант CenterGradient. Визуализируйте сцену, и вы увидите круглое и практически полностью непрозрачное светящееся облако флюидов (рис. 15). В свитке Color на градиентной шкале установите два слайдера:  у левого задайте красный цвет, у правого — оранжевый (рис. 16); в итоге облако станет светиться уже красно-оранжевым цветом (рис. 17).

Рис. 14. Основная корректировка параметров свитка Shading

Рис. 14. Основная корректировка параметров свитка Shading

 

Рис. 15. Первая визуализация

Рис. 15. Первая визуализация

 

Рис. 16. Дополнительное изменение настроек параметров свитка Color

Рис. 16. Дополнительное изменение настроек параметров свитка Color

 

Рис. 17. Вторая визуализация

Рис. 17. Вторая визуализация

 

Переключитесь в свиток Textures, включите флажки TextureColor и TextureOpacity, удостоверьтесь в том, что в поле TextureType выбрана текстурная карта PerlinNoise, и увеличьте значение параметра Frequency (Частота), отвечающего за уровень детализации шума, до 3 — свечение станет уже неоднородным (рис. 18). Неоднородность будет гораздо более выраженной, если дополнительно увеличить частотный коэффициент шума (FrequencyRatio), а также размеры зерна цвета (ColorTexGain) и зерна непрозрачности (OpacityTexGain) — рис. 19.

Рис. 18. Первая корректировка параметров свитка Textures

Рис. 18. Первая корректировка параметров свитка Textures

 

Рис. 19. Вторая корректировка параметров свитка Textures

Рис. 19. Вторая корректировка параметров свитка Textures

 

Сделайте копию контейнера и увеличьте ее масштаб (рис. 20). Не снимая выделения с контейнера-дубликата, перейдите на свиток Shading и увеличьте значение параметра EdgeDropoff до 0,314, а в разделе Opacity измените вид тональной кривой в соответствии с рис. 21 и введите в поле InputBias значение 1. Данные действия позволят получить вокруг шара светящийся ореол, в результате чего изображение станет похожим на светящуюся звезду (рис. 22).

Рис. 20. Масштабирование контейнера-дубликата

Рис. 20. Масштабирование контейнера-дубликата

 

Рис. 21. Изменение настроек параметров контейнера-дубликата

Рис. 21. Изменение настроек параметров контейнера-дубликата

 

Рис. 22. Светящаяся звезда

Рис. 22. Светящаяся звезда


1 Воксель (англ. voxel, volume picture elements) — минимальный (простейший) элемент объемной геометрии. Возврат

В начало В начало

next

КомпьютерПресс 8'2008

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует