I’m currently working on an add-on, that allows painting textures with particles. It’s currently in proof of concept state, but I want to release it as soon as it gets a bit more mature. Anyhow I wanted to open this thread to collect opinions and ideas what other fellow blender users would expect when working with such an add-on.
Here are two work-in-progress videos showing PAINTicle in action. Drawing onto Suzanne with a 4k texture map:
…and “storm-trooper Suzanne” gets hit by some lasers
On my to-do list are still topics like
Improve stability
Improve simulation performance (utilize GPU)
Allow for more flexible simulation (introduce more forces, evaluate normal-maps during simulation. Maybe introduce some kind of simulation nodes)
Multi-channel painting (having the particles not only affect a single texture, but multiples)
What would you like to see in such an add-on?
UPDATE: The add-on went public and is available here:
I don’t do much texture painting these days, but this is well done, keep it up!
Would be nice to see the texture update while the sim is running, but I guess that’s not really feasible?
Nice. I like what I see, but as MACHIN3 says would be nice if you could get some type of preview while the sim is running otherwise it feels very slow and clunky to use.
Thanks a lot. Will keep on working
I had the continuous update at the beginning of my development until I noticed too much lag on larger textures. Currently the add-on decides on the texture size whether it’s continuously updating the texture or not. Textures larger than 1 megapixel can’t show the result interactively due to performance limitations on blender’s pixel manipulation API. There’s a short video with a small texture size available on Twitter (but they were recompressing it to death ): https://twitter.com/subdivided_xyz/status/1374856410467549194
Is it possible to get the interactive paint on a temporal lower resolution copy of the current texture just to get the visual feedback and then get the sim applied to the target texture?
That’s a good idea. I also wanted to try to draw the simulated full res texture myself on top of the viewport. It would not have the effect of the correct material shading, but would use the full res. I also might offer several options in the preferences how to handle the non-performant cases.
Going public today. I decided to to an open development although the add-on is still in prove-of-concept state. Thus I spent the last week to setup a pipeline in GitHub. It builds, tests and deploys the latest in-development snapshot. The add-on source is available here:
PAINTicle now has a GitHub Pages hosted documentation, that minimally describes the usage and installation. For now it uses one of GitHub’s default themes, so it’s not the nicest one, but the theme can be changed at some later point in time
So all the basic publication infrastructure is now set up. Hopefully I can then start working on some functionality soon again…
This one is drawing the painted texture transparently over the viewport. It works quite fluently:
In the video I’m painting onto an 8k texture and update rate is real-time with a couple of seconds thinking time after the particles stopped simulating to synchronize the texture back to blender. One drawback as already mentioned is, that the shading changes. Since the base color in this case was white, everything gets brighter. Going out of the PAINTicle mode it switches back to normal shading and turns off the overlay.
Changes are already uploaded on GitHub and can be downloaded with the latest Development Build release.
I’ve been busy during the last weeks to implement a new simulation engine for PAINTicle. It’s now based on numpy and a custom C++ module. Still need to update GitHub’s actions to build, package and release the add-on, since the C++ compilation changes some stuff. However if someone already likes to try it out, compile it yourself: https://github.com/FrankFirsching/PAINTicle/tree/feature/simulation_performance
Performance went up 5x on my machine with potential for further future improvements.
Interesting addon. How should the module be installed? Which folder needs to be placed? Do I need to unpack it? I tried in different ways, but nothing happened.
The newly improved version needs to be compiled, since it has some C++ code inside. I’ll add this step to github today, so that there will be precompiled packages for each blender version and platform.
Until then you can grab the older version, which has a release package here: https://github.com/FrankFirsching/PAINTicle/releases/download/latest/PAINTicle.zip
Finally I solved all the GitHub action issues and there’s a build of PAINTicle available as the latest development snapshot. Since I’m using now a native python module, there are platform dependent zip files to choose from.
Please note: The 2.93 version for Linux will be available, as soon as the moderngl module, PAINTicle is using will be available as as a precompiled Linux distribution for python 3.9.
Many thanks for this great addon. Just to let you know the 2.92 version seems to be working well in Blender 2.91.2 on a 10 year old Windows PC with a GeForce 9800 GT running 3.3.0. Don’t ask me how.
Glad you like it.
Yes, currently it still only makes use of opengl 3.3. However I planned to run some compute shaders in the future, that’s why I already set the specs in the documentation high
Hi,
I’ve written some documentation, which is available here: https://frankfirsching.github.io/PAINTicle/
Hope this helps. Since the addon is still under active development and changes a lot, creating tutorial videos would be too much effort and last to shortly. Hope you don’t mind reading some text
Might be an option in the future. I anyhow wanted to record the particle positions to be able to redraw other channels. This would allow particles to affect not only a single channel like color, but e.g. also roughness, bump, metallic,… in a consistent manner. Having then some option to output the complete image sequence would be pretty easy.
For such animated sequences however, I would rather propose to use dynamic paint, a built in feature of blender.