Кубок огня. 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).

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

204 0 850 30
18
2009-06-01
Автор урока просто перевел значения атрибутов, флюиды весьма тяжелая штука способная отправить вас пить кофе на весьма длительное время в статье нет ничего о том как оптимизировать сцену, да и огонь то получился так себе. Вообщем написание урока дело похвальное, но для начала стоило бы самому освоить данную технологию.
2009-06-01
[quote]Boundary (граница) -Y side - посмотрите в словаре перевод слова "boundary" и узнайте для чего нужен этот параметр.[/quote] Замечательный "урок") А если серьезно... где картинки огня?
2009-06-02
А про изменение времени мне понравилось. Я даже не знал, что можно так делать. Прикольная штучка :)))
2009-06-02
Ничегошеньки полезного.Есть 3 дивидюка гномона по флюидам в майке там все атрибуты рассматриваются и очень вкусные примеры,огонь с топливом и дымом например там был очень реалистичный по виду и по поведению :)
2009-06-02
а где красивая итоговая картинка?
2009-06-05
Этот урок предназначен для тех, кто впервые взялся за майские флюиды. Абсолютным новичкам, я бы не рекомендовал браться за мой урок. Урок не претендует на звание - полное руководство. Это всего лишь урок. Кроме каких-либо уроков, есть ещё и домашнее задание.
2009-06-05
[quote]Этот урок предназначен...[/quote] Да не для кого он не предназначен, кроме тех, кто хреново волочет в англицком..
2009-06-06
"Да не для кого он не предназначен, кроме тех, кто хреново волочет в англицком..." Сам то понял, что написал? Полистай учебник русского языка, а то хреново волочишь на русском. ))))
2009-06-08
2 w6OP3w а че самому слабо урок напесать? крутой урок из него я узнал что 1) Disspition это оказывается диссипация а 2) Diffusion это всиголиш диффузия(ищоб знать что это значит) к автору вопрос. ты пишешь [b]Затем встаньте в 100-ый кадр, и введите в поле значение 100 [/b] я пытался, но так и не понял как туда встать и какой ногой. знаешь был такой аникдот про то что мол вечно ты куда нибудь вступишь то в говно то в партию.
2009-06-08
[quote=naust] 2) Diffusion это всиголиш диффузия(ищоб знать что это значит) [/quote] диффузия - это естественный процесс смешивания веществ. Например: если диффузия равна 0, тогда два разноцветных флюида смешиваться между собой не станут. Если кто-то не знает что означает фраза "Затем встаньте в 100-ый кадр, и введите в поле значение 100", могу посоветовать сначала ознакомиться с интерфейсом MAYA. [quote=naust] знаешь был такой аникдот про то что мол вечно ты куда нибудь вступишь то в говно то в партию. [/quote] Когда человек говорит о каком-либо объекте, он прежде всего рассказывает о себе самом. Не суди о других по себе - народная мудрость. И ещё: Впредь обсуждать этот урок я не буду, потому как это пустая болтовня, такая же как и в Думе, или на митинге.
2009-06-08
[quote]Когда человек говорит о каком-либо объекте, он прежде всего рассказывает о себе самом. Не суди о других по себе - народная мудрость.[/quote] как загаварил то... на личности пириходит.... но я веть совсем не хотел сказать что твой урок пустое никому не нужное никчемное говно я всиголишь хотел рассмешить тибя анекдотом.
2009-06-08
[color=Maroon][b]naust[/b][/color], нарушение правил: - Запрещается размещение сообщений явно грубых по тону или содержащих двусмысленности, оскорбления личности (в любой форме) и нецензурные выражения. - Запрещается размещение безграмотных комментариев, комментариев с преднамеренными орфографическими и семантическими ошибками, использование ненормативной лексики и "албанского" языка. [color=Maroon][b]БАН 2 недели[/b][/color] P.S. [color=Maroon]mr.green[/color], [color=Maroon] w6OP3w (3D Work)[/color] прекращаем грубить друг другу, ни к чему хорошему кроме бана это не приведет.
2009-06-10
.... модератор ... что значит "албанский язык"? .... это на каком языке сказано?
2009-06-10
Уважаемый [color=Maroon]анг[/color], крайне странно, что вы общаясь в интернете незнакомы с таким явлением как "Албанский язык", вот определение: [i]Албанский язык (падонки) — Албанский (язык) (также Олбанский (язык)) в жаргоне падонков «албанским» обычно называется либо сам жаргон падонков, либо русский язык с непреднамеренными ошибками. Чаще всего употребляется в выражении «Учи албанский» и т.д.…[/i] Предвидя следующий ваш вопрос (а где же в комментариях был "Албанский") поясню, автор нарушил несколько пунктов правила: [i]- Запрещается размещение безграмотных комментариев, комментариев с преднамеренными орфографическими и семантическими ошибками, использование не нормативной лексики и "албанского" языка. [/i], а мной в свою очередь было указано правило которое автор нарушил.
2009-06-22
Дану что вы тут прям развели дискусию! Нормальный урок для начинающих все вроде ясно и понятно!
2009-06-27
Огонь в майе довольно проблематично делать.Я потратил довольно много времени чтобы получить сносную картинку. http://www.youtube.com/watch?v=b5pRjnVU2W8 http://www.youtube.com/watch?v=VjFuqoFqMSM http://www.youtube.com/watch?v=TxgSrQJ2eec
2009-08-19
Да, пиши после такого уроки... С нетерпеньем ждешь и на тебе.
2009-09-04
Такое чувство, что урок писался именно для конкурса, как-то о читателях мысли и не было. Обидно. Обидно получить сухую и неполную информацию о таком удивительном модуле... Перепиши его, пожалуйста
RENDER.RU