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.
I have added even more features to my Blender SVN pages.
Commit messages now display the authors full name instead of cryptic username, revisions in commit messages are now shown as links and there is a "changed paths" list on each revision page. Additionally some Statistics pages now have new file related charts. E.g. developer pages show most edited files and number of added, deleted and modified files.
Commit Logs are also available as RSS feeds in case you want to follow Blender commits more closely. You can subscribe All Commits, Trunk Commits or commits from a specific branch from any branches' statistics page.
Update: You can also use RSS feeds with "short-title" option (All Commits, Trunk Commits), this way revision title is printed as "r12345:" instead of "Revision 12345 (trunk/blender):". This can be useful if your reader has only limited screen space.
I have been updating some parts of MiikaHweb in the past few days.
First of all: after gathering dust for nearly five years, the Mobile section is finally up to date again.
Basically it's a listing of mobile apps I have found useful. New section features all popular mobile platforms: Android, iOS, Symbian and Windows Phone, although Android is the main platform as I'm using it myself.
I also did some small improvements on Blender SVN statistics pages. I suppose most useful tweak are new Blender Tracker links on Commit Log pages. Now you can view the related bug report/patch simply by clicking the hash number on commit message (if any).
Once again I was playing with Dynamic Paint eventually ending up with two new demo videos.
Dynamic Paint - Snow Test:
This was a simple experiment trying to make realistically gathering snow in Blender.
To do the effect I used an "incremental" displace surface with very low negative "displace factor" value. This made snow to slowly increase displace on areas where particles touched the mesh. Then I just added another white paint surface on top of it.
Snow surface is a bit too bumpy due to over amplified effect of individual snow flakes. (To not have to render 10 minutes of snowing. :)
I suppose another better approach would have been to actually use fluid particles of high viscosity. Though bake times would for sure have been longer than current 2 min for 1000 frames.
Dynamic Paint - Rain Ripples:
This time I was using Dynamic Paint waves to replicate rain ripples on a mirror calm water surface. I think it worked out quite nicely and it didn't really require any more work than slightly tweaking wave surface parameters. It's all texturing and bump maps so the water mesh is just a single quad.
To rant about something: particle system was really giving me a headache. Like usually, I had to use particle colliders of animated "permeability" to regulate the emission speed. Due to lack of reactor particles or texture/weight controlled emission it was impossible to create any kind of splash at points where rain drop hit the water. Not to mention two new bugs I encountered...
So I'm really looking forward to upcoming node based particles system by Lukas Tönne. :)