Кубок огня. Maya Fluids

Привет! Парень на фотографии, это я. Живу в Калуге. Занимаюсь компьютерной графикой больше года. Появилось понимание множества вещей. Этим пониманием хочу поделиться.

Этот урок предназначен для тех, кто впервые взялся за майские флюиды. Абсолютным новичкам, я бы не рекомендовал браться за мой урок. Урок не претендует на звание - полное руководство. Это всего лишь урок. Кроме каких-либо уроков, есть ещё и домашнее задание.

Начнём!

Ниже приведен пример настройки флюидов на примере огня, с комментариями к большинству атрибутов. Урок был выполнен с использованием версии Maya 8.0, у кого другая версия, возможно пункты меню будут находиться в других местах.

Сначала скачайте архив blue_fire.rar и посмотрите готовый огонь (файл называется cup_of_the_fire.avi).

1) Думаю, будет логичным появление огня из какого-нибудь объекта, например из костра, зажигалки и т.п., я выбрал кубок (магический). Создайте кубок. Кому влом моделить кубок, откройте файл kubok.ma из архива с готовым огнём. Или ничего не модельте, и читайте дальше.

2) Первым делом создайте трёхмерный контейнер: Fluid Effects - Create 3D Container. (Флюиды живут в контейнере, и только в нём)

Откройте в Attribute Editor контейнер.

Измените параметры контейнера следующим образом:

resolution (разрешение) 40 40 40 - чем больше разрешение, тем больше времени будет просчитываться ваш контейнер.

size (размер)10 18 10 - параметр size влияет только на видимый размер ячеек контейнера.

Boundary (граница) -Y side - посмотрите в словаре перевод слова "boundary" и узнайте для чего нужен этот параметр.

[Contents Method]

Значения параметров в этом разделе определяют метод изменения этих параметров:

Возможные значения:
Off (zero) - не просчитывается никак.
Static Grid - изменение производится вручную с помощью соответствующих инструментов или с помощью анимации атрибутов контейнера.
Dynamic Grid - solver просчитывает значение этого параметра.
Gradient - параметр распределяется согласно градиенту.

Установите параметры следующим образом.

Density: Dynamic Grid (плотность)
Velocity: Dynamic Grid (скорость)
Temperature: Dynamic Grid (температура)
Fuel: Dynamic Grid (горючесть)
Color Method: Use Shading Color (цвет)
Falloff Method: Off (zero)

[Dynamic Simulation]
Solver Quality 20 (точность решения динамики)

[Contents Details]
Density
Density Scale 0.5
Buoyancy 9 (плавучесть) - если значение отрицательное флюид стремится вниз, если положительное вверх.
Dissipation 0.182 (рассеивание) - диссипация - можно представить как исчезновение вещества самого по себе в воздухе
Diffusion 0 (диффузия) - диффузия - это естественный процесс смешивания веществ. Например: если диффузия равна 0, тогда два разноцветных флюида смешиваться между собой не станут.

Velocity
Swirl 10 (водоворот)

Turbulence
Strength 0.010 (сила турбулентности)
Frequency 0.2 (частота)
Speed 0.2

Temperature
Temperature Scale 1.934
Buoyancy 9 (плавучесть)
Disspition 0.1(диссипация)
Diffusion 0.1 (диффузия)
Turbulence 0.1 (турбуленция)

Fuel
Fuel Scale 1.967 (горючесть)
Reaction Speed 0.967 (скорость реакции)
Ignition Temperature 0 (температура воспламенения)
Max Temperature 1
Heat Released 1
Light Released 0
Light Color - белый.

3) Сейчас контейнер пуст, и никакой жизни в нём нет. Создадим Emitter, который будет испускать флюиды: выделите контейнер и кликните Fluid Effects - Add/Edit Contents - Emitter. Опустите эмиттер на дно контейнера. Откройте в Attribute Editor Эмиттер.

Измените параметры следующим образом.

Basic Emitter Attributes
Emitter Type - Omni
Cycle Emission - None (time Random off)
Min Distance 0
Max Distance 0.5 -чтобы понять за что отвечают эти 2-а параметра, несколько раз запустите анимацию, предварительно поставив различные значения

Fluid Attributes
Voxel - это объёмная точка контейнера (Voxel это Volume Pixel).
Density/Voxel/Sec 2 (плотность на воксель в секунду)
Heat/Voxel/Sec 3 (тепло на воксель в секунду)
Fuel/Voxel/Sec 4 (горючесть на воксель в секунду)
Fluid Dropoff 2
Emit Fluid Color - off (галочка не стоит)
Jitter - on

Запустите анимацию до 30-ого кадра. И нажмите 5.

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

Думаю тут необходимы некоторые комментарии.

Параметр Transparency (прозрачность) регулирует общую прозрачность
Glow Intancity (свечение) (в нашем случае ни к чему, но можете поставить ненулевое значение и посмотреть что будет)
Incandescence (накал) Input - определяет, от чего будет зависеть цвет накала (в нашем случае от температуры)
Opacity (непрозрачность) Input - определяет, от чего будет зависеть непрозрачность.(в нашем случае от температуры)
Подёргайте параметр Input bias. Разберитесь сами, для чего он нужен.

У кого комп не очень мощный, тот скажет, что мол настройка параметров контейнера с ТАКИМИ тормозами, занятие не из приятных.

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

Нажмите fluid Effects - Create Cache. Задайте диапазон кадров для кэширования от 1 до 100, и параметры контейнера, которые должны быть в кэше.

Нажмите Create, и придумайте чем себя занять всё то время, когда будет идти процесс просчёта (кэш нам пригодится позже). После того как кэш будет просчитан, можно указать конкретно, какие атрибуты будут использовать данные из кэша.

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

Займёмся этим.

В MAYA есть нода по имени time1. Именно она и определяет какой сейчас кадр. Трогать её не будем, а создадим свою ноду. Наберите в командной строке команду "createNode time;". Должна появиться новая нода time2.

Откройте Window --> HyperGraph: Connections, выделите контейнер и time2, и выберите в верхнем меню Graph --> Input and Output Connections. Должно отобразиться вот такое.

Нужно заменить time1 на time2. Поочереди удалите 2-е связи, которые идут от time1 к flameShape и к fluidEmitter1 выделяя соединительные стрелки и нажимая клавишу Delete

Затем соедините time2 c flameShape и fluidEmitter1. Для этого удерживая Shift нажмите средней кнопкой мыши на time2, и не отпуская наведите курсор мыши на flameShape и отпустите. Должен открыться Connection Editor.

В левой колонке выберите Out Time, а в правой currentTime, в результате образовалась связь двух нод.

Затем выделите fluidEmitter1 и нажмите на кнопку Reload Right, и проделайте предыдущую операцию.

Должно получиться вот что:

Теперь у нас есть собственное время, которое мы подключили к контейнеру с кэшем на 100 кадров и к эмиттеру. Чтобы "наше" время повернулось вспять необходимо анимировать атрибут OutTime у ноды time2. Пускай первые 100 кадров огонь горит как обычно, а остальные 100 кадров время возвращается на 100 кадров назад. Откройте Outliner и снимите галку с Dysplay --> DAG Objects Only. Найдите в Outliner ноду time2 и откройте Attribute Editor. В разделе Time Attributes есть параметр Out Time. Встаньте в 1-ый кадр, введите в поле значение 1, нажмите Enter, нажмите правой кнопкой мыши на название атрибута Out Time в Atribute Editor. Выберите Set Key.

Затем встаньте в 100-ый кадр, и введите в поле значение 100, нажмите Enter, и снова Set Key.

Затем встаньте в 200-ый кадр, и введите в поле значение 0, нажмите Enter, и снова Set Key.

Запустите анимацию, и посмотрите что получилось. Или запустите файл time_backward.avi из архива.

Если выбор стоит между стандартным майским рендером (Maya Software) и Menyal Ray, то лучше рендерить в Mental Ray. Чтобы огня стало больше необходимо увеличить нужное значение в атрибутах эмиттера.

Параметры контейнера для огня, и не только для огня, удобно подсматривать в примерах, которые поставляются вместе с майей. Для этого зайдите в FluidEffects - Get Fluid Example. Затем просто перетащите понравившийся пример средней кнопкой мыши в главное окно, и изучайте. Дальнейших улучшений реалистичности огня можно добиться путем наблюдения за реальным огнём и тонким изменением параметров, которые детально описываются в документации по MAYA (нажми F1).

Удачи вам!. И интересных проектов.