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. :)
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.
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.