Yeah, here goes again, more playing with Blender smoke simulator. This time I wanted to try a bit larger simulation utilizing adaptive domain and my other latest improvements.
Here is the result. Sorry, not gonna upload .blend file for this one:
Adaptive domain was a great help as it allowed really fast bakes of the first 70 frames. Basically I was able to do dozens of low res tests for the first rocket with barely a minute wait each. Smoke motion was heavily guided by animated force fields.
Overall I'm quite happy with it, even though the wind is too strong and dust is rising way too fast for that large scale. (That wasn't visible in the first hundred frames I mainly tested with...) Yet I didn't want to spend another evening tweaking and re-baking so just decided to render that one.
That model is slightly modified version of MLRS by SONGKRO from Blend Swap.
One of the remaining "easy-to-fix" issues with Blender smoke simulator has been that you can't have fast moving objects emitting smoke. At least not that easily or smoke flow would leave behind a bunch of disconnected dots instead of continuous flow of smoke.
Now I have committed subframes for smoke flows. That means you can define how many additional time samples will be taken between each simulation frame. Below is an example of a fast moving particle with multiple subframes and no subframes:
One thing to notice is that this is a flow setting, not domain one, for couple of reasons. First of all, subframes are applied only in the emission phase. Simulation itself won't calculate additional time samples, so there will be no change in behavior of the fluid and you can use very high subframe counts with only minor performance drop. Also this allows you to enable subframes only for smoke flows that move fast enough to benefit from it.
Another new thing is ability to define size of flow particles. Previously it was common issue that when you increased domain resolution for final bake, particles became way too small. Now you can just increase particle size if needed.
These new size based particles are also compatible with my previous "full sample" high resolution update. So no more blocky particles either. Besides, this allows using smaller than "low res cell" sized particles, so you can have detailed tiny particles without having to increase simulation base resolution up to several hundreds like before. It's enough to just increase high resolution divisions. :)
Here are couple of renders from my subframe test scenes:
These new features are available in Blender trunk builds of revision 56884 and higher.
I was recently investigating how to reduce that blockiness you get around smoke emitters. I did several tests with it and was so amazed about the results that it frankly makes me feel stupid for not realizing there was something wrong earlier.
Previously high resolution flow voxels were generated based on the low resolution ones. So if you had 32 simulation base resolution and 4 division high resolution, it still used smoke flow generated from those 32 resolution voxels. Now I introduced a new sampling method called "Full Sample" that generates full resolution flow for for high resolution domain as well.
You can enable "Full Sample" in smoke high resolution panel. That menu also includes old "Nearest" and "Linear" interpolation settings for smoke flow in order to keep old files compatible. Full sample is default in new simulations though.
Here is a comparison between old and new high resolution smoke:
Left suzanne is the low resolution version (32 res). Then the old (4 division) high resolution flow. Last one is the new "full sample" version using otherwise same settings.
Another comparison with a complex mesh flow:
Again, left is the old 32 res 4 high division simulation. Right image is same setup with full sample flow.
One problem especially with fire simulations has been that the fluid motion usually looks good with fairly low resolutions. However it has been necessary to increase the resolution anyway, in order to get rid of those blocks. Not anymore. It's also much easier to create thinner layer of smoke around the emitter. Not to mention higher detail when using textures as flow masks. :)
I made couple of new fire demos inspired by the possibilities of block-free smoke flows:
Today I was playing with smoke simulator to make sure it still works fine for the Blender 2.66 release. I ended up doing a high resolution explosion scene that uses most of the new features from my GSoC 2012 work.
This explosion uses force fields to create additional turbulence to the simulation. Fire particles (floating by the "smoke flow" force field) add smaller detail. Also emitters and some of their properties are animated to give more control over the simulation.
For final render I used domain resolution of 96 + 32 additional "adaptive domain" resolution, so total 160 base resolution. Baking it high resolution enabled took couple of hours.
Now that Google Summer of Code 2012 is almost over it's time for heavy testing and final improvements of my Blender smoke project.
This week I have been experimenting with different fire simulation and render setups to find out new ways to improve simulation quality. While testing out new code I also prepared three fire scenes for download so you can start playing with fire too without having to do days worth of experiments. :p
Check out the renders here:
Unfortunately there still isn't a single click "Make awesome fire!" button. Setting up realistic scene still takes lots of tweaking for both simulation and render. However simulating fire in general should be now much easier with these GSoC changes.
This scene is an extreme example of texture controlled emission. A cloud texture with animated z-offset is used to generate additional turbulence to fire. This gives a huge visual improvement over a plane that emits fire evenly across whole surface.
This is a very basic scene I used to test high fuel/flame emitter. Notice how I have unticked "Absolute Density" checkbox from flow, making it "additive" instead. This way fuel can smoothly increase to very high amounts creating long lasting tall flames.