PAINTicle

PAINTicle - PAINT with particles

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:

18 Likes

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?

1 Like

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.

1 Like

Thanks a lot. Will keep on working :slight_smile:
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 :frowning: ):
https://twitter.com/subdivided_xyz/status/1374856410467549194

6 Likes

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?

1 Like

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.

3 Likes

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:

Latest development builds are available on the release page or through this direct link: https://github.com/FrankFirsching/PAINTicle/releases/download/latest/PAINTicle.zip

NOTE: This is heavy in-development software and thus still contains a lot of bugs. However feel free o create issues on the projects GitHub page.

Happy painting!

5 Likes

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 :wink:

So all the basic publication infrastructure is now set up. Hopefully I can then start working on some functionality soon again…

I’ve added a new preview mode: Texture overlay
painticle_previewmode
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.

3 Likes

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.
PAINTicle_benchmark

4 Likes

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

4 Likes

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.

6 Likes

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.

1 Like

Looks very nice. It would be good to have a short instruction video on how to use it.

1 Like

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 :slight_smile:

2 Likes

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 :slight_smile:

3 Likes

Working nicly. any chance to get the image sequence of the process? So we can use it for animated fluid materials

8 Likes

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.

1 Like

Thank you for the quick response.