One of the best ways to test Dynamic Paint stability and workflow is to actually use it to do all kind of test demos. Yesterday I was playing with idea of laser beam digging into ground, eventually it turned out to be cool enough to post online. :D
This scene combines all my favorite Blender tools: Dynamic Paint, smoke simulator and particles. I used a Dynamic Paint canvas with multiple surfaces to get results for displace, color trail and fading glow. Laser beam is simply a cylinder with volumetric high emission material.
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! :)
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.
I just found out about this great Dynamic Paint test by CristobalAtria. It shows very clearly how and why to use wetmaps together with fluid simulations to achieve realistic renders. So if you have been wondering what wetmaps are good for, check this out:
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
Lately I have been tweaking and testing iWave simulator to achieve more realistic results. Sadly it seems like the more tests I do, more strange behavior I encounter. :)
But realistic or not. Results are at least very interesting, allowing yet another new way for Blender objects to interact. So of course I will finish this project and improve it as much as possible. One new thing is foam generation. When enabled, it automatically generates foam on wave highpoints and is very good for boat wake/trail foam.
Notice a "bug" how those small waves are moving in the wrong direction in the beginning. Let's consider it as engine turbulence. ;)
Basic water movement (ambient waves) are generated using Blender's new Ocean Simulator modifier, boat wakes using iWave.
Because adding new 2D-simulators to Dynamic Paint is quite easy it's likely that I will implement an alternative more accurate wave simulator sometime in the future.
Edit: An alternative wave algorithm (not iwave :x) has been added to Dynamic Paint instead.
A couple of days ago I was playing with Blender ocean simulator modifier. While it's able to generate realistic wave motion, it's not able to interact with other objects.
Then I got an idea: what if I integrated a simple wave simulator with Dynamic paint!
So I ran across iWave algorithm by Jerry Tessendorf. I also discussed this with ZanQdo (Daniel Salazar) who was already implementing iWave for Blender through Python. We agreed that Dynamic Paint could be the best way to go, because it allows easy object interaction and is able to output textures as well as displacement.
iWave is a simple algorithm for simulating 2D water surface ripples/waves and their interaction with obstacles.
Now after a few days I already have a very basic iWave integration:
What you see here is an iWave surface interacting with Blender objects via Dynamic Paint. You should also note that it's just a normal mapped plane, so it's very fast to render!
Unfortunately, there is still lots of work to do before I can release a public test version... :s
Edit: An alternative wave algorithm, has been added to Dynamic Paint instead.