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.
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
Recently I have been working to improve Dynamic Paint functionality and allow painless Ptex (Per-Face Texture Mapping) integration in the future.
This next step is _vertex painting_. Basically you'll be able to select canvas output type. Available options will be vertex, Ptex and image output (current dp). Vertex output allows you to paint vertex colors, vertex groups and displaces.
Operating on vertex level makes things easier in many ways. First of all you don't have to unwrap any UV data or load image sequence textures to make it work. It's just clicking bake and seeing the results. Even displace will happen directly by the Dynamic Paint modifier.
Negative things compared to image textures are limited resolution and rendering options. That's why vertex stuff isn't going to replace current Dynamic Paint but to be an alternative way. Hopefully Ptex will be the ultimate Dynamic Paint solution. :)
I made a small demo of vertex group/weight painting. A grass worm.
In that video grass particle length is defined by a Dynamic Paint generated vertex group.
Please note that this is still in very early stage of development. You shouldn't expect any kind of test versions for several weeks.
I was testing how Blender 2.5x indirect lightning system works with textured emitters. At first it seemed like it doesn't work at all, especially with images, but apparently you just have to subdivide the mesh enough times to cover those emissive pixels.
So yeah, of course I ended up making a new test/demo of Dynamic Paint. In this one I used two high resolution canvases to cover all the geometry. For rendering I had to subdivide them to total ~1 million vertices to emit light properly.
Yesterday jahka committed an update that fixes most particle collision stability issues. Previously SPH fluids were quite much unusable due to stability issues. Fluid kept "exploding" randomly no matter the settings. Now, after the fix, it seems very stable.
Here is a test of a pool being filled with particle fluid. No way you could have done this a week ago, but now I see no stability issues at all!
Too bad Farsthary hasn't finished his fluid surface generator. Now one can only render fluids as particles or as a volumetric texture. So no reflections or transparency is possible. :(
In case someone is wondering why I'm not writing the Dynamic Paint guide instead. Well, I gotta have some fun too. Particle fluids is something I've been waiting for a long time, and now as it finally works, I'm gonna play with it for a while. :p
Edellisestä videosta inspiroituneena kokeilin tehdä jotain vähän raskaampaa Dynamic Paintilla.
Lopputulos, realistinen sade:
Videossa on yhteensä 500 000 sadepartikkelia. Huomattavaa on, että maassa näkyvä tehoste on pelkkä Dynamic Paintilla generoitu materiaali. Jokainen piste ja roiske on realistista vuorovaikutusta niiden 500 000 partikkelin kanssa!
Toteutus on yksinkertainen: asetin maalitekstuurin muuttamaan maan tummuutta ja heijastavuutta, sekä nopeasti kuivuvan wetmapin muuttamaan pinnan epätasaiseksi sekä luomaan valkoisia roiskepilkkuja.
Tavallaan tämä myös sai Blenderistä yhä vakaamman. Videota tehdessäni löysin ikävän bugin partikkelijärjestelmästä. Se on nyt korjattu kun reporttasin sen partikkeleita kehittävälle jahkalle. :)
Koodipäivityksen voi ladata tästä. Se on melko kookas päivitykseksi, lisäten jopa 4000 uutta koodiriviä. o_O
Osa ominaisuuksista ja asetuksista on vielä kesken tai puuttuu kokonaan. Silti tämä on tarpeeksi vakaa beta-julkaisuksi. Ilmoita minulle jos löydät bugeja, jotta voin korjata ne.
Lähiaikoina alan kirjoittaa opasta, joka kattaa koko "Dynamic Paint" järjestelmän. Luultavasti suurin osa bugeista korjautuu prosessin aikana.
Lisäksi tein uuden testivideon nestemäisestä maalista:
Testailin työkalun toimintoja ja vakautta ennen päivityksen julkaisua, mutta lopputulos oli aika hieno. Videossa "wetmappia" on käytetty normaalitekstuurina. Näyttää ihan joltain 2D-nestesimulaatiolta. xD