Blender Texture Paint: it is getting there

It has been over 2 years in planning and finally it is coming into shape. Texture painting is almost ready to handle big NPR productions. Here are some of my results using it.

Warning: Heavy images ahead. It will take some time to load.


Title: I’m going there (says the ladybug on the grass)

This is done about 6 months ago. At that time, texture painting was so laggy. I barely could paint this. It took so long to just block-out the composition.


Title: Color splat, wow, landscape

This tiny doodle to check if lag is gone. Yes, it is faster.


This is an early screen capture. I was very lazy to UV unwrap the meshes properly. Won’t do that again.


Title: Junction on the hill

Gave it another run. Not bad, but there is a problem. I can never get smooth strokes. After hours of finding the cause of the problem, the cause, Blender openGL cannot update that quickly. Some filter or stroke smoothing algorithm needed, but not until Blender openGL is upgraded.

I don’t like this painting method, although the style is very close to background done by Studio Ghibli (Gouache and poster colors). It just took too long to emulate real pigment.


The initial meshes look like this. They are a combination of planes and 3D objects.


I painted more than what you can see. As this is an earlier screen capture, the lighting for the clouds is wrong.


Title: Hidden tomb

When you paint in 2D plane, it is very fast. And I found a way to cover up the jaggy strokes.


It is really flat. Painting is done in 2k x 1k, slightly above HD.


Title: The summer when we catch grasshoppers

This is painted in 4k x 2k resolution. Rendered at HD. Painting at that size is OK even in GLSL.


Early screenshot of the viewport. They are transparent planes.

Conclusion as of March 1st 2015:

Texture painting is really getting enjoyable in Blender. It is quicker and more responsive. Even with its limited toolset, knowledge learned from texpaint can be applied in almost any painting application. Yet, there are a lot of things that I have not told you. There are few weird stuff in texpaint that exclusively in Blender. They can be such a headache.

One of them is the weird image I/O in Blender. It is easier to take an outside image into Blender, but very hard to get image created inside Blender to go outside (discussed, no action). Any texture painted in Blender has 3 names in 4 different locations (bug reported, rejected, UI team TODO). If you have a textured brush, the painted color is often brighter with random hue-saturation-value shift (bug reported, fixed). If painting in the image editor, alpha lock won’t work. Smoothing or smudging, alpha lock won’t work either. Mask only view-able in Multitexture material mode.

When you paint in 4k x 4k textures, it is extremely laggy. Something with that number causing my system to lag. If done in 4k x 3k it will be as smooth as 4k x 2k. The ability to paint smoothly at higher resolution is a must. I’m thinking of 10k x 5k (horizontal pan) or 5k x 15k (vertical pan). If not, I’ll just stick with 720p and resize the painting to 4k with some filter applied. 😛

Update March 3rd 2015:

There are few requests for me to clarify texpaint I/O problem. I’ll list them 1 by 1 as much as I can remember from my experience.

1. When you save a blendfile, blender never say that your textures are unsaved.
2. You have to specify file path for each image and it is very easy to miss 1 or 2 or more textures.
3. Blender warns “invalid path” on header if you try to save textures painted without path but never says how/where the path should be set.
4. To set file path you have to open image editor then press F3, after only that you can use the “save all images.” Very counter intuitive.
5. The specify file path should be together with “save all images” button. Just specify the folder and all images will be saved there with the name listed in the paint slot.
6. You’ll lost your image(s) if you try to pack textures mid painting.

Other problems

7. you need to subdivide a mesh quite a bit  for it to not have wavy texture (texture stretching). In 1 case, my original meshes were less than 100 faces, to solve the wavy texture problem they were subdivided to 22k faces.
8. Not sure if soften and smudge should have alpha lock because they don’t work at all.
9. Alpha lock don’t work when painting in image editor.
10. Painting mask isn’t viewable in GLSL view mode, only viewable in multitexture view mode (without alpha).
11. Mask strength and mask value work almost the same, why there are 2? ie: Mask value 0.5 is similar to Mask value 1 with strength 0.5.
12. Generated image: UV grid and color grid have very limited size, they cannot cover 4k x 4k image. Everything not covered will be background color (in BI).

6 thoughts on “Blender Texture Paint: it is getting there

  1. “very hard to get image created inside Blender to go outside”

    That for me is a bit of a killer – I can see how this function would be very good to create backgrounds such as those made in Diablo 3 (where the trees were made a bit like those you see in theatre plays”, but I’d absolutely want to be able to touch them up in my painting application of choice, once I sketched them out in Blender. I don’t think you’ll ever get the painting tools there to be as good as other applications which are exclusively made for painting and, anyway, what’s “good” is highly subjective.

    “Blender has 3 names in 4 different locations (bug reported, rejected).”

    That sounds very weird, what was the logic of rejecting something like that?

    Anyway, this looks like a very interesting experiment, I hope the functionality will become much smoother, will deal better with higher resolutions and hopefully with exporting images to other programs once they’re sketched out in Blender. Thanks a lot for sharing what you got working so far! If you do end up developing a good workflow to make backgrounds with this method, it would be really interesting to see another purchasable tutorial for it. I can see it applied for 2D games and visual novels alike. The last image in this post really reminds me of what I’ve recently seen for Live2D sprites (as shown in It makes me wonder whether something like this would be possible at all!

  2. Taking an image out of Blender is a tedious process. I’m really making some noise about it. NOISE!!! XD Now you need to go to Image Editor, press F3 to do the initial save then you can use “save all images” in viewport tool shelf. Not everyone can figure that out. It took me almost a week to understand the workflow, even I as someone with over 10 years Blender experience, that just hard to understand. I was like “HUH! So the developers aspect everyone to do that?”

    The way I’m painting in Blender is actually the same as how I paint in Krita or Mypaint or PS. That’s the reason I say Blender is getting to be good enough for painting.

    “That sounds very weird, what was the logic of rejecting something like that?”
    shrug ¯\_(ツ)_/¯

    • Haha, I see – I wondered whether they gave any explanation for rejecting it. I’ll note down your explanation for exporting images, though, it’s useful knowledge, thanks for the reply!

  3. Hoorah for a great blog post. It will be really interesting to return here in a year to see any progress. The multiple names (functions) really confuse me.
    You have the:
    – Object name
    – Material name
    – Texture Layer name(s)
    – Painting Slot name(s)
    – UV Texture name(s)
    – Mask name(s)

    And they are scattered everywhere through the UI and look really similar. No wonder it is hard to figure out a workflow!
    Also it’s a shame that we can’t specify blend or transfer types in the 3D view, at the moment you must composite layers in the Node compositor to access Multiply, Screen, Overlay etc.

    Can’t wait until someone creates a 2D film of Painted landscapes and Grease Pencil animation.

Leave a Reply to peter Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s