Blender did not save my texture paint

I have had this same problem, and I’m convinced Blender is gaslighting me, trying make me think I’m going insane. I never figured out what had gone wrong. I tried to experiment to find out what was happening. I can’t tell you how many times I had to repaint textures, which is very frustrating. It seemed like to me that when I did a test render, Blender would re-load my textures from the hard drive, which was overwriting my most recent painting actions, however, I wasn’t able to prove this. I just gave up investigating because I had other things to do. I would like to pin this down because it’s very frustrating. I’m glad I’m not the only one having these problems.

This is the same thing I found, but not only did the new line not show in the render, after rendering it was as if I had not made the new line. It disappeared!

This leads me to believe that Blender is pulling the unaltered image from the hard drive and replacing my latest edits so that they’re no longer in memory. (But again, I was not able to prove this beyond a doubt)

So, there’s the question of whether external data has been “packed” or not, and if the images have been packed, does Blender ignore new changes?

Blender reads the image from disk… if you change it with blender and don’t save it… it’s the file from disk… if you change it in another image app (and save it) you can see: after render it’s the texture from disk even if you have changed it in blender (via texture paint)… I fyou save it with blender and render: it’s the new file from disk…

:thinking: I think i will spend some time with blender as vidoe editing software… never did this much…

some hours later…

Oh what a fun… :heart_eyes:
… i made an extra small file … so you may wanna see it in slow motion…

3 Likes

What DE is that? All those rounded buttons and gradients are freaking me out!

I had to use the caja filemanger from MATE… my usual PCManFM had a problem while resizing… but i use LXDE… :grin: …linux… everthing is possible… :stuck_out_tongue_closed_eyes:

1 Like

Hi, Okidoki you did a great job of explaining the way blender texture paint is saved or not saved.
It’s surprising how many people still don’t understand the way blender’s textures saving works.

1 Like

I’m replying to everyone. One person in this thread has claimed to have the same issue as me, so it’s not just me.

I’m aware of how to save a texture inside of Blender. I have used the save image and save and quit, while saving the texture. I literally can’t view the texture in the render if I don’t save it. I don’t know why, again this isn’t my computer so I’m not going to mess around with it too much. All drivers are up to date, but I know AMD doesn’t run 3d software as well as Intel and nVidia, plus Windows 11. Windows 10 pisses me off so much, I doubt 11 is any better.

I’m unsure why people don’t seem to think I know how to save an image texture because that obviously isn’t the issue. Other textures I’ve created in other files have saved with no problems and have been reopened multiple times, so I don’t know why this one is giving me so many problems. Same computer, same software.

My fix as of now has been to import the file into Nomad and then open it in Procreate on my iPad. A ridiculous solution, but it works and I won’t lose more hours of work all over again. My other option was to go use my laptop, which isn’t an issue, but it’s slow and I can’t use cycles on it.

(Nobody wants to fight you and you certainly don’t have to defend yourself with another user with a similar problem… and now comes the infamous but… )

If you used an external image, saved it, even viewed it in any image viewer… and your changes are saved… then how can it be possible that blender does know how the old image looks like and overwrites it with the old data ???

Because this seems to be your problem… after starting up blender the old images is present again… (overwritten… changes are lost…) ??

:thinking:

Re-reading this:

… it think this is a bit contradictory…:

  • the edits … in the file… (…which image or blend??)* are … there
  • the image doesn’t … have … edits

:question:

You also say that painting on the image with another app does work… even reusing it in blender… so it seems the problem is not connect to any packed data…

Old days filessystem restrictions about file time accuracy where a problem when the new saved file has the same time stamp and the apps didn’t recognize the change… so that would be a possiblity that blender uses it’s internal (memory) image instead of the external changed one (as suggested).
But that’s usually not the case anymore using milli and micro seconds nowadays…but you are also not using any network path something… so this isn’t the cause…

Hmm i getting a bit lost and turning in circles… you told us that you know how to save the image… and if you even opened it with another image viewer (?)… then why should it change back?? Where should this old data come from ??? I’m lost.

(What i’m trying to tell you is: it seems to be that most of the blender users doesn’t have this problem… there are even tutorials on YT which use the image manipulations features of blender… :person_shrugging: … so at least i don’t have any idea how to help you any further… )

Why should it change back? That is the question. Why? How?

I have also had this problem and could not figure out what was going wrong. Furthermore, I couldn’t reproduce the problem, so don’t know what was happening. But I was definitely losing the texture painting that I had just done. The old version kept coming back somehow, inexplicably, even though I was following procedure. So, there was something going wrong. I just couldn’t figure out what exactly was happening. It was super frustrating, and to be told I was doing something stupid, like not saving, was even more frustrating. So, I know what this person is going through, and we haven’t figured it out yet.

How does an old version come back and overwrite my changes? Where is the image data coming from?

I will do more testing to try and pin down an answer, because it’s caused me to lose a lot of time.

Some interesting results from some quick testing. When working in Eevee, I see the results of my painting directly. (in render preview mode)

When I switch to Cycles:

The last saved and rendered image texture is still displayed! Where is this image data stored? Why is it still visible?

Here, I have saved the image on the left, it renders correctly, but in the render preview mode, it still has the blue color from previous paint job. Why? How?


If I don’t save the image on the left, it doesn’t render. The previous paint job still renders.

So, when you’re painting, that image is in some temporary paint buffer, until you save it. Somewhere else is another buffer that holds an older version which is displayed in the render preview window. It doesn’t get updated for some reason, until you switch to Material Preview mode. It’s not even updated after rendering. This could be a cause for confusion.

This temporary paint buffer might have been my problem. I didn’t know that my changes wouldn’t show up in the render until I saved the image, at least in Cycles. I would paint on my texture, and then hit F12 to see what it looked like in the render. When I came back to texture paint, all those changes that I had just spent time on were gone. My scene was fairly complex, not just a cube with one texture, so I have a feeling that the temp paint buffer was being overwritten. I would see a message as it was rendering, “loading image data”. From where to where, I don’t know. From disk? or from RAM?

3 Likes

Interesting. This is significant research - I’d say it’s worth a bug report

2 Likes

Perhaps someone with knowledge of the inner workings of Blender can explain what that message “updating image data” means, what’s actually happening.

It just seemed like to me that if I’m painting on an image texture, it’s in RAM, and that would get rendered when I press F12, but that’s definitely not the case.

Didn’t Okidoki explain this already above?

Blender, by default, just stores a reference to the image unless you pack the image. It makes sense that the referenced file’s state would be what’s used when rendering and not the unsaved state from Blender.

It definitely doesn’t make sense for Eevee and Cycles to do two different things though, that causes confusion. I’m also curious what happens to Cycles if you pack the image. Does it use the packed version or the unsaved one?

1 Like

Okay, I can confirm this, I opened the texture image in Krita, painted on it and saved it. Then in Blender I pressed F12, the new Krita image renders, not the image in Blender paint window, which is still there. Render Preview still showed the old image, neither the one in the Blender paint window, nor the Krita saved image that just rendered, it shows the version before that, until I switched to Material Preview (which shows the image in Blender paint window) and then back to Render Preview which updated to the latest rendered (Krita version).
This is all in Cycles, but the Material Preview is Eevee essentially isn’t it? So, Eevee works differently from Cycles. It always shows you what you’re painting, directly on the model, and apparently Cycles can’t do that.

When I rendered, and Blender loaded the image texture from disk, it didn’t overwrite what was in my paint window on the left, but I’m wondering if there might be some situation where it would overwrite my latest work. The model I was working on had numerous image textures. If I painted on one, then switched to another image to paint on it, and then did a test render without saving first, would that process overwrite what I had just painted?

I will test that.

I created another material and texture image. Nothing I was working on got overwritten when I rendered, but what if I’m running short on RAM? I swear that’s what happened, but I can’t reproduce the error, so I can’t prove it.

I guess the lesson is, don’t render, don’t switch rendering engines, or anything without saving all the images first. All the tutorials tell you to save all your images before quitting, of course, but I haven’t seen any that tell you to save before rendering. It just didn’t occur to me that Blender would have to read anything from the disk when it was already in RAM.

Eevee works different than Cycles… of course… it’s realtime vs offline rendering…

Because even the Material Preview: Solid with Viewpost Shading → Color: Texture enabled like in the Texture Paint workspace is already using Eevee, all texture painting already shows in realtime on the screen…

→ Any changes made are in RAM and are direclty used for (realtime) Eevee.

(The offline renderer) Cycles loads all resources directly from disk on render start… because it’s not made for realtime rendereing…

So EVERY changed texture has to be saved before render… like every other textures changed by any other painting app !! … to be used in Cycles… ( → for this there is also the changed image notification for).

So you have to reload the externa changed textures… to see them in blender realtime preview display for example by the Reload Images button from the Node Wrangler addon (or switching the display).

Blender itself doesn’t save (and so doesn’t overwrite) any images (or blend files except autosave but on other path ) on it’s own if you don’t use any addon to do so…

That’s because blender let you choose you workflow → blender internal paint features or external app.


This said: the pack external data feature is more to include (…pack…) every external data to exchange just one single file… and not for the actual ongoing changes while working on any artpiece…
… except if you choose to Automatically Pack Resources which will lead to very big blend files…

1 Like

Thanks for your help.

This issue is not clearly explained anywhere, to my knowledge. I knew I had to save before I quit the program, but had no idea Cycles had to load all resources directly from disk to render. I find this very unusual behavior, as with most apps I’ve used, images loaded into RAM are used, because, if it’s already loaded into RAM, why should it need to be loaded again from disk? I imagine this is to deal with low RAM availability.

I believe this was the OP’s problem.

I’ve been doing 3D for around 30 years using Lightwave 3D. It didn’t have the ability to edit images, but I don’t believe it loaded images from disk for every frame render. It loaded them once into RAM. Lightwave didn’t do realtime rendering either.

When I said “overwrite”, I meant RAM. I suspected that when Blender “updated images” on rendering, it was replacing my latest texture painting with the image on disk. I haven’t been able to duplicate this problem, but somehow, I was losing the work I had just done in texture painting. Old versions of textures would come back inexplicably, which was very unnerving. This was the problem I was trying to figure out. There were times I lost work that I had saved to disk somehow, like an old version was saved in it’s place. After losing my work several times, I was ready to give up.

There is this button, which I used, and found it to be problematic.
Screenshot 2023-01-11 112325

I was using Photoshop files (.psd) for some textures, which work fine, but, I discovered Blender does not have the ability to save, which it does not warn you about. It saves these images as .png, without any notification that it’s doing this, but then it continues to use the .psd files that were originally used, so, nothing is updated.

This is another can of worms, which may have been causing my problem, I’m not sure. I may have packed everything to share the file with someone. This might have been causing the zombie data to return from the dead, but again, I’m not sure. I know this can create problems, even with Automatically Pack Resources turned on, because, is it still reading from disk on render? or reading from RAM?

I am going to try that add-on. Not saving images is a real problem, especially when Blender crashes unexpectedly. I can’t think of any way that it seems like a feature. To my mind, it’s a disability, like something they forgot to add.

Thanks again.

It does this, I assume, because it may have changed on disk outside of Blender, which has to be a thing in productions bigger than one person. Also, what’s the alternative if the file does change on disk? Restart Blender or re-open the file to get it to refresh the file? That’s not very great either.

1 Like

Also the painting feature was added later…
Another also: older render(/raytracing) engines which where build into for example Lightwave where simpler to handle…
AFAIK even other modern renderengines have to rea the data from the modelling software and transform this into ther own data structure… i don’t believe something like for example Arnold is directly driven by the internal data from 3dsMax, Maya or Houdini ?? There may be internal bridges so that the don;t read from disk… but this are multi million dollar corporations who have he power to make this “easily”… cycles is ver young compared to this…

Eevee on the other hand is a realtime engine used by blender itself to display the internal data… → so can also directly use an more detailed render…
…so it’s not just simply: blender is “sometimes” doing this and “othertimes” doing that… but this are different workflows (as the different possibilities and so also pros and cons of this render engines suggest).

It’s like using :

  • single PNG or EXR files in an animation and rendereing multiple render layers to be able to compose something afterwards
  • vs. making it all in one blend file and directly encoding it into a small mp4 file…

Changing some settings may don’t even be noticable in one but may have a huge impact in the other…

:thinking:
Maybe some even more general philosophic idea:… perhaps even about life itself… (?) :

Whatever path someone chooses and regardless how long someone know this path… the other path will give some headaches if someone doesn’t know the differences… or doesn’t understand the principles/ philosophy/ ideas behind it… or even is unable to adapt to it…

Or:

It’s all easy… if you had left the right path behind you…

:rofl:

1 Like

Of course I would expect it to load from disk if it’s an image sequence, but for single images, there’s a command for that, reloading images.

Anyway, this is sort of getting off topic, which is losing one’s work, which is frustrating, and figuring out what caused it so it can be avoided in the future. I’m still not sure what happened in my case, but I now know some things to avoid, and maybe an add-on that can help, and maybe the OP’s question has been answered.