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.
Now it's possible to set Dynamic Paint brushes to "smudge" existing paint as they move. By functionality it's very similar to smudge/smear tools found in typical 2D image manipulation programs. This feature is part of my "velocity brush" experiments from last week.
Here is a video of basic smudge:
And now using a particle system as a brush:
Other velocity based new features include possibility to use brush speed to define it's influence and color, and to make canvas velocity or acceleration to affect "drip effect".
Though, I really can't think of any situation where velocity painting would be essential, but hopefully someone will find it useful! :)
Today I was testing Blender's new camera tracking functionality together with Dynamic Paint wave simulator on soc-2011-salad branch.
I had some issues with tracking system, and eventually I had to use 2D markers instead of 3D ones and that required lots of tweaking. But even though tracking tools are still in early development, it worked very well after all. With this development pace I can just wonder what one can do with it by the end of summer. :)
Here is the final render:
What you see here is a Suzanne monkey head added to a real footage. Water particles and wave visibility could still use some tweaking, but overall I'm quite happy with the result.
I also noticed a nice Dynamic Paint waves test by CristobalAtria:
Last week I was checking my iWave implementation from February. As you may remember it had quite strange issues: it kept emitting waves way too long after the obstacle had moved away, and sometimes waves seemed to move in wrong direction.
Finally I decided to implement another 2D wave algorithm instead. This time it's based on "Height Field Fluids" slides by Matthias Müller-Fischer. With some modifications it now works on mesh objects and is even compatible with new vertex surfaces.
Basic implementation is now ready and committed to soc-2011-carrot branch. It may still need some tweaking but unless something critical appears this should be about finished.
Here is a video showing a couple of test scenes:
If you want to try it yourself, here is a sample .blend file for carrot branch revisions 38044 and later.
Dynamic Paint "effects" system is now back in latest version (r37848 or later) of soc-2011-carrot branch. Paint effects is a special option for paint surfaces that generates animated movement for wet paint.
Now it also works with vertex surfaces and has some improvements too. One of the largest visible update is that you can now use Blender's "force fields" to control dripping direction. So it's no longer limited to negative z-axis only. ;p Color mixing behavior is also improved.
Check out this video of an animated point force dragging paint around:
Vertex group painting that I was experimenting with in January, is now finally available for download. I committed it to soc-2011-carrot branch earlier today, so just get a Carrot branch build at revision 37622 or later. You can get Windows builds from MiikaHweb Blender Builds section.
I also uploaded two example .blend files you can use to try out Dynamic Paint's new realtime vertex painting functionality.
This demo shows how to use Dynamic Paint's vertex level color and displace:
This demo shows how to use vertex weight groups to control particle hair length. This one is very similar to the "Grass Worm" video I posted earlier.
One critical component is still missing though. Currently there is really no proper way to render vertex colors in Blender. It's only possible to render one layer at time and only use it as diffuse color. :(
That's something I'm planning to improve later this summer.
As most of you know, I was accepted to work on improving Dynamic Paint this summer as a Google Summer of Code student. The coding period began two weeks ago and now I finally have something to demo.
The biggest goal of my GSoC project is allowing vertex and Ptex level painting. Those formats will use Blender's point cache as storage thus allowing such cool things like real-time viewport preview of canvas and no need for UV mapping or to actually care for file locations etc.
Here is a screencap demoing vertex level displacement painting + real-time viewport preview:
It's still heavily work in progress so it will take at least a week before I'll commit these changes to my GSoC branch (soc-2011-carrot). Also, the final Ptex support is pending until Nicholas Bishop (or someone else) finishes the basic Ptex implementation for Blender. :s