Для данного урока желательно использовать Blender версии не ниже 2.77. Начиная с этой версии появилась поддержка рендеринга объема на GPU и возможность кэширования в формате OpenVDB. Данный эффект очень часто используется в компьютерной графике. В этом уроке Вы узнаете, как создать его с помощью Blender.
Видеоурок
Текстовый урок
Добавьте в сцену куб и увеличьте его в три раза (S|3|Enter). На вкладке физике укажите куб в качестве домена для симуляции дыма:
Добавьте в сцену ICO-сферу и уменьшите ее в 10 раз (S|0.1|Enter). Данная сфера будет влетать в наш домен, тем самым создавая нужный для нас эффект. Убедитесь, что вы находитесь на первом кадре, переместите сферу по оси X в сторону (G|X|-7.5|Enter) и установите для нее ключевой кадр (Insert Single Keyframe). Перейдите на 10-й кадр, снова переместите сферу по оси X (G|X|5.5|Enter) и установите для нее ключевой кадр (Insert Single Keyframe).
Обычно после подобных манипуляций мы переходим в окно редактора графов и меняем интерполяцию кривой, чтобы скорость движения объекта была постоянной без изменений в начале и конце пути. Но в данном случае это как раз то что нам нужно. Попав в область куба сфера плавно замедлит свое движение, что создаст иллюзию проникновения в среду с повышенной плотностью (например, воду).
Для сферы на вкладке физики так же отметьте симуляцию дыма и укажите ей тип Flow. Установите температуру равную 0, чтобы «чернила» (или дым) не подымались вверх. Также отметьте Initial Velocity, чтобы дым наследовал скорость сферы (инерция).
Выберите куб и отметьте пункт Adaptive Domain, чтобы ускорить симуляцию дыма. В меню Smoke Cache выберите новый формат OpenVDB. Этот формат занимает гораздо меньше места на жестком диске (каких-то 4,3 ГБ :-Р). Чтобы кнопка Bake стала активной сохраните вашу сцену и выполните запекание симуляции. После запекания проиграйте анимацию. Как вы сможете увидеть, на данный момент это просто поток дыма пролетающий сквозь домен и не взаимодействующий ни с чем:
Добавьте в сцену турбулентность (Shift + A → Force Field → Turbulence), чтобы дыму не было так одиноко в домене. Местоположение турбулентности в сцене не имеет никакого значения (она как Солнце). Для турбулентности установите следующие параметры. С их помощью мы добьемся нужного нам движения дыма. Снова произведите запекание симуляции:
На данный момент сфера продолжает излучать дым даже после полной остановки. Это легко исправить анимировав соответствующий параметр. Выберите сферу, перейдите на 10-й кадр (последний кадр движения сферы) и установите ключевой кадр для параметра Surface (I). Затем перейдите на 15-й кадр, измените значение Surface на 0 и снова установите ключевой кадр. Также установите параметр Subframes в значение 32. Благодаря этому сфера будет излучать дым не только каждый кадр анимации, но еще 32 раза между ними, что даст достаточно плавный поток на столь коротком пути:
Осталось несколько параметров, которые необходимо отрегулировать, прежде чем перейти к настройке материала. Установите Vorticity в значение 1. Этот параметр контролирует вероятность вращения дыма. Высокие значения дадут большие клубы дыма, которые будут слабо вращаться, а при низких ситуация буде противоположной. Экспериментируйте с данным значением. Возможно значение ниже 1 даст самые лучше результаты.
Активируйте меню Smoke High Resolution. Установите параметры Strength и Divisions равными 1. В обычной ситуации мы стремимся увеличить разрешение настолько высоко, насколько это возможно, но в данном случае дополнительные детали будут разрушать плавность потока.
На напоследок необходимо установить разрешение (Divisions) для домена. Устанавливайте данный параметр настолько высоко, насколько позволяет система. Но учтите, что он требует слишком много памяти. Если в вашем ПК 16 GB ОЗУ, то значение 512 будет для вас недостижимым (во всяком случае у меня запекание остановилось на 52%). Но даже при наличии 16 GB ОЗУ и разрешению 256 запекание придется ждать достаточно долго. Также увеличьте параметр Margin до 16, потому как значение 4 лучше подходит для симуляция с низким разрешением (32 или 64). Параметр Threshold установите равным 0.01, иначе плотность дыма будет недостаточной:
Начинайте запекание и по его завершению займемся настройкой материала.
ICO-сфера на финальном рендере нам не нужна, поэтому скройте ее в Outliner. На вкладке мира установите белый цвет:
Выберите домен и откройте редактор нодов. Удалите шейдер Diffuse и вместо него подключите шейдер Volume Absorption. Установите любой цвет, который вам нравится. Если вы сейчас включите режим Rendered, то увидите куб выбранного вами цвета. Чтобы увидеть дым, а не куб, нужно добавить ноды Attribute и Math. Для нода Attribute укажите в поле Name: density (плотность) и соедините их как на изображении ниже:
На данном этапе можно остановиться и переходить к финальному рендерингу. Он будет происходить достаточно быстро, но мы пойдем по более сложному пути. Добавьте шейдер Volume Scatter и смешайте его с шейдером Volume Absorption при помощи нода Add. Для шейдера Volume Scatter установите такой же цвет и плотность, как и для первого и включите режим Rendered. Ваш дым будет полностью черным:
Исправить эту проблему можно несколькими способами, но самым простым является увеличение отскоков луча для объема в меню Light Paths до 1. К сожалению, это повлечет увеличение времени рендеринга. Чтобы повысить плотность объема, добавьте нод ColorRamp, подключите его между нодами Attribute и Math и сдвиньте правый ползунок близко к левому. И последнее (и самое прожорливое к железу)… Уменьшите параметр Step Size до 0.01. Тут все просто, чем ниже — тем качественнее дым и дольше рендер (при чем линейно) и наоборот:
На этом все! Выставляйте нужное количество сэмплов и производите рендеринг анимации. Помните о том, что теперь это можно делать на GPU, но если у вас на ней не 100500 гигабайт памяти, то по достижению определенного количества объема придется вернуться к старому, проверенному методу… CPU. И не забудьте по завершению поделится результатом в комментариях!
доброго. а как дым засунуть в меш? в текст в частности. вполне возможно что есть уже урок на эту тему)) или тока прочсёт видео а затем уже наложение маски на готовое видео.
Немного не ясна проблема… В уроке есть куб (меш). Мы в него засунули дым. Чем текст отличается от куба?
Еще раз доброго. Использовать меш текста вместо куба, чтобы дым занимал определенный объем и прорисовывал собой логотип или текст. Или тут все от мощности компа будет зависеть?
Используйте вместо куба меш текста. Если надпись будет слишком длинной и много полигонов, то просчеты будут значительно дольше, это да. И поэтому максимум определит мощность вашего ПК.
Да, спасибо большое, если что получится то обязательно покажу.
Артем а не подскажите почему сфера(flow) не дает дым при просчете симуляции ,а сплошной черный квадрат??????)
Нет, не подскажу ?
Слишком много вариантов…
версия 2.77
Доброго времени суток, а какое значение при рендере объема играет margin? Я забыл его выставить перед началом рендеринга, я поставил 400 divisions, может поэтому у меня такой не четкий кадр получился? Или потому что это один из кадров анимации и он просто смазан?
Расстояние между вокселями (измеряемое тоже в вокселях). Для 400 значения 4 будет мало. Увеличивай до 16.
спасибо, я уже 24 выставил.
Добрый день! Опять у меня какие-то проблемы ?
Дым вроде бы запекся, а черная полоса внизу не появляется. И отображаться дым может только при проигрывании анимации с самого начала. Что с этим делать?
Какая полоса должна внизу появиться?
Во временной шкале, показывающая, что кадры попали в память и там и остались. Даже до запекания она появлялась и я мог свободно мотать анимацию в пределах просчитанной симуляции. А сейчас же она появляется только во время самого проигрывания и только под проигрываемым кадром
Это как-то влияет на результат?
только на свободное перемещение между кадрами
Тогда в чем проблема? :)
У меня схожая проблема была. Почему-то программа не хочет запекать в формат OpenVDB (само запекание проходит, но не проигрывается, а просчитывает симуляцию дыма заново). Поставил Point Cache и все стало нормально запекаться. Версия 2.77.
Может, недоработка
еще заметил, что при уменьшении параметра Step Size, в симуляции начинают появляться ярко выраженные вокселы
Странно. Попробовал потом еще раз закешировать с этим OpenVDB и все вроде бы нормально встало. Надеюсь, что это был единичный баг.
Эффект классный. Вот что получилось. Спасибо!
Просвятите пожалуйста новичка: у меня почему то нет шейдеров, как у автора, их нужно отдельно ставить?
Нужно основы учить.
https://blender3d.com.ua/faq/
спасибо
включи рендер cycles
Вот что получилось у меня. Спасибо за урок! https://www.youtube.com/watch?v=8rQwTPX7WZs
Спасибо за урок! Наконец-то досчиталось. Больше суток.
Вот мой результат!
https://www.youtube.com/watch?v=-nyB2kLUY1k
Очень долго рендерил))
Помогите найти, как установить ключевой кадр для параметра Surface (I). Выбираю сферу, нажимаю I и не нахожу там Surface…
А как сделать 2-3 дыма с разными цветами?
все результаты, увиденные мной, обладают одним существенным, как по мне, недостатком — чернила/дым не растворяется и визуально при расширении он заполняет собой весь объем емкости не уменьшая собственную плотность в кубометрах. Логично было было бы реализовать и этот момент.
Нужно будет попробовать, но чисто теоретически, там нужно будет анимировать настройки материала, добавлять прозрачность.
доброго времени, подскажите плиз в чем проблема? делал всё по уроку. (даже качал .blend файл с оригинального урока) не рендерилось и там… 2.78a + 1060gtx, хотя я пробовал и на CPU тоже без результата. Ведь в окне 3д ее видно))
«плиз в чем проблема?»
Нод Attribute.
неужели это из-за названия?
Ну а ты думал «Density» мы там пишем просто потому, что делать больше нечего? ?
честно) да) ну как по правильному называть типа) понял )) Спасибо)
Доброго времени суток!
Столкнулся с тем, что при рендеринге на CPU и GPU получается различный результат. Это видно из прикреплённого изображения. Для примера взял 69 кадр. Сверху результат, полученный на видеокарте, снизу — на процессоре. Мне больше нравится изображение, отрендеренное на видеокарте. Ко всему прочему на видеокарте рендерится быстрее (очевидно)) Но начиная с 70 кадра видеокарте недостаёт памяти (CUDA error: Out of memory in cuMemAlloc (&device_pointer, size)). Собственно поэтому и рендерил всё видео на процессоре. Вопрос: в чём причина появления данных артефактов при рендеринге на CPU, и как можно это пофиксить?
P.S. Судя по изображению прикреплённому в начале урока, вы также рендерили на CPU.
P.P.S. Разрешение для домена выставлял 448. RAM 12 GB. Симуляция прошла успешно, однако ждать пришлось довольно долго, и оперативная память была загружена практически на 100%.
На чем рендерил ролик я уже не помню. Возможно даже комбинировал. GPU пока памяти хватало, а самое тяжелое уже на CPU.
Касательно разницы результатов… не знаю. Поинтересуюсь данной проблемой на досуге. Если что найду внятное — обязательно отпишусь.
Спасибо за урок, вот что получилось.
Не могу найти пункт Step Size, и вообще нет меню Volume Sampling
И название урока не прочитал.
P.S. Сори, вижу что прочитал. Версия Blender какая?
урок видно полезный, но проблема осталась без ответа. Нет результата рендера. Только черный квадрат.
С небольшим доменом круто получается :D
А как быть с километровым? В качестве емиттора использую частицы🉑 т.к. нужно придать дыму определенную форму🛃
Чтобы не терять форму, на дым приходится применять слабое физическое воздействие. Но на рендере получается майнкрафт, который еще и рендерится не очень быстро🅿
Или такие эффекты не делаются в реальных размерах?
Даже эксперимент провел:D
1) Высота домена = 100 метров
2) и полтора километра 🚺
C увеличением домена, увеличиваются и сами воксели (которые испускают дым) Это можно исправить?
Конечно! Там разрешение есть и масса других параметров.
Здравствуй, Артем! Вопрос есть, возможно не совсем по этой теме, не знал куда написать. В общем, не могу понять как «отсрочить» начало возникновения дыма. Допустим, дым в сцене должен появиться не сразу, а на 5 секунде… Если мне надо уже сформированный дым в сцене, я так понимаю, надо тупо начинать рендерить видео с того момента, как столб дыма приобрел подходящую для сцены форму (допустим с 50 по 100 кадр). А если у меня несколько источников частиц, которые должны испускать дым вместе, но начинать не одновременно? Может быть урок какой есть? Сижу туплю, весь мозг сломал уже) Спасибо заранее!
https://blender.stackexchange.com/questions/17926/keyframing-start-and-end-of-smoke-simulation
спасибо, помогло))
Артем а не подскажите почему сфера(flow) не дает дым при просчете симуляции ,а сплошной черный квадрат??????)
Нет, не подскажу ?
Слишком много вариантов…
доброго. а как дым засунуть в меш? в текст в частности. вполне возможно что есть уже урок на эту тему)) или тока прочсёт видео а затем уже наложение маски на готовое видео.
Немного не ясна проблема… В уроке есть куб (меш). Мы в него засунули дым. Чем текст отличается от куба?
Еще раз доброго. Использовать меш текста вместо куба, чтобы дым занимал определенный объем и прорисовывал собой логотип или текст. Или тут все от мощности компа будет зависеть?
Используйте вместо куба меш текста. Если надпись будет слишком длинной и много полигонов, то просчеты будут значительно дольше, это да. И поэтому максимум определит мощность вашего ПК.
Да, спасибо большое, если что получится то обязательно покажу.
версия 2.77
Доброго времени суток, а какое значение при рендере объема играет margin? Я забыл его выставить перед началом рендеринга, я поставил 400 divisions, может поэтому у меня такой не четкий кадр получился? Или потому что это один из кадров анимации и он просто смазан?
Расстояние между вокселями (измеряемое тоже в вокселях). Для 400 значения 4 будет мало. Увеличивай до 16.
спасибо, я уже 24 выставил.
все результаты, увиденные мной, обладают одним существенным, как по мне, недостатком — чернила/дым не растворяется и визуально при расширении он заполняет собой весь объем емкости не уменьшая собственную плотность в кубометрах. Логично было было бы реализовать и этот момент.
Нужно будет попробовать, но чисто теоретически, там нужно будет анимировать настройки материала, добавлять прозрачность.
Эффект классный. Вот что получилось. Спасибо!
Спасибо за урок! Наконец-то досчиталось. Больше суток.
доброго времени, подскажите плиз в чем проблема? делал всё по уроку. (даже качал .blend файл с оригинального урока) не рендерилось и там… 2.78a + 1060gtx, хотя я пробовал и на CPU тоже без результата. Ведь в окне 3д ее видно))
«плиз в чем проблема?»
Нод Attribute.
неужели это из-за названия?
Ну а ты думал «Density» мы там пишем просто потому, что делать больше нечего? ?
честно) да) ну как по правильному называть типа) понял )) Спасибо)
Просвятите пожалуйста новичка: у меня почему то нет шейдеров, как у автора, их нужно отдельно ставить?
Нужно основы учить.
https://blender3d.com.ua/faq/
спасибо
включи рендер cycles
Добрый день! Опять у меня какие-то проблемы ?
Дым вроде бы запекся, а черная полоса внизу не появляется. И отображаться дым может только при проигрывании анимации с самого начала. Что с этим делать?
Какая полоса должна внизу появиться?
Во временной шкале, показывающая, что кадры попали в память и там и остались. Даже до запекания она появлялась и я мог свободно мотать анимацию в пределах просчитанной симуляции. А сейчас же она появляется только во время самого проигрывания и только под проигрываемым кадром
Это как-то влияет на результат?
только на свободное перемещение между кадрами
Тогда в чем проблема? :)
У меня схожая проблема была. Почему-то программа не хочет запекать в формат OpenVDB (само запекание проходит, но не проигрывается, а просчитывает симуляцию дыма заново). Поставил Point Cache и все стало нормально запекаться. Версия 2.77.
Помогите найти, как установить ключевой кадр для параметра Surface (I). Выбираю сферу, нажимаю I и не нахожу там Surface…
Не могу найти пункт Step Size, и вообще нет меню Volume Sampling
И название урока не прочитал.
P.S. Сори, вижу что прочитал. Версия Blender какая?
урок видно полезный, но проблема осталась без ответа. Нет результата рендера. Только черный квадрат.
А как сделать 2-3 дыма с разными цветами?
С небольшим доменом круто получается :D
А как быть с километровым? В качестве емиттора использую частицы🉑 т.к. нужно придать дыму определенную форму🛃
Чтобы не терять форму, на дым приходится применять слабое физическое воздействие. Но на рендере получается майнкрафт, который еще и рендерится не очень быстро🅿
Или такие эффекты не делаются в реальных размерах?
Даже эксперимент провел:D
1) Высота домена = 100 метров
2) и полтора километра 🚺
C увеличением домена, увеличиваются и сами воксели (которые испускают дым) Это можно исправить?
Конечно! Там разрешение есть и масса других параметров.
Спасибо за урок, вот что получилось.
Доброго времени суток!
Столкнулся с тем, что при рендеринге на CPU и GPU получается различный результат. Это видно из прикреплённого изображения. Для примера взял 69 кадр. Сверху результат, полученный на видеокарте, снизу — на процессоре. Мне больше нравится изображение, отрендеренное на видеокарте. Ко всему прочему на видеокарте рендерится быстрее (очевидно)) Но начиная с 70 кадра видеокарте недостаёт памяти (CUDA error: Out of memory in cuMemAlloc (&device_pointer, size)). Собственно поэтому и рендерил всё видео на процессоре. Вопрос: в чём причина появления данных артефактов при рендеринге на CPU, и как можно это пофиксить?
P.S. Судя по изображению прикреплённому в начале урока, вы также рендерили на CPU.
P.P.S. Разрешение для домена выставлял 448. RAM 12 GB. Симуляция прошла успешно, однако ждать пришлось довольно долго, и оперативная память была загружена практически на 100%.
На чем рендерил ролик я уже не помню. Возможно даже комбинировал. GPU пока памяти хватало, а самое тяжелое уже на CPU.
Касательно разницы результатов… не знаю. Поинтересуюсь данной проблемой на досуге. Если что найду внятное — обязательно отпишусь.
Здравствуй, Артем! Вопрос есть, возможно не совсем по этой теме, не знал куда написать. В общем, не могу понять как «отсрочить» начало возникновения дыма. Допустим, дым в сцене должен появиться не сразу, а на 5 секунде… Если мне надо уже сформированный дым в сцене, я так понимаю, надо тупо начинать рендерить видео с того момента, как столб дыма приобрел подходящую для сцены форму (допустим с 50 по 100 кадр). А если у меня несколько источников частиц, которые должны испускать дым вместе, но начинать не одновременно? Может быть урок какой есть? Сижу туплю, весь мозг сломал уже) Спасибо заранее!
https://blender.stackexchange.com/questions/17926/keyframing-start-and-end-of-smoke-simulation
спасибо, помогло))
Вот мой результат!
https://www.youtube.com/watch?v=-nyB2kLUY1k
Очень долго рендерил))