Undo performance future

Hey developers,

Most of the time, while working in big scenes (100 Obj, 10 mill Poly) using undo takes some seconds (sometimes 3-8 seconds) to execute. In small scenes, it’s much faster. Going back 10-20 steps is almost impossible without undo history.

My question is, why is blender behaving like this? Is Blender reloading the complete scene back out of memory?

Will there be an improvement with the new dependency graph?

Thanks for your awesome work :heart:

Cheers Daniel

It is effectively reloading the entire scene yes, except for a few things like images.

It could certainly be improved, but the new dependency graph in 2.80 will not make any difference here. There is no project underway to improve undo performance currently.

1 Like

Yes undo gets painful when you get a scene full of hundreds or thousands of objects. It would be nice to have something that only saves deltas to memory in undo steps. I’ve done a simple version of this for web apps. You start with the base or the state the file was in when it was first opened and then only store the information about the changes made. With Blender, you have limited undos, so it would require a rolling commit so that the delta that is 32 undos old merges with the previous base state to become your new base state.

In my case I was storing information about what parameters were changed by the user which usually amounted to keeping addresses of form fields and what the result of that change was (ie new text string entered). I could see this working in Blender in somewhat simple ways (yes I know rewriting the undo system is not an easy task no matter how simple the method is) like just storing the single object that was changed and replacing only the single object when undo is pressed instead of all objects. It wouldn’t help much for scenes with few objects but lots of polygons, but for people setting up large scenes with many objects, I could see undo being sped up pretty greatly by making this change.

4 Likes

This is pretty weak indeed. AFAIK it was not always that way. Some previous versions, I think around 2.78, Undo was always pretty fast. I am curious if this was thoroughly considered since that’s a pretty severe regression.

In general, Blender has quite a few problems with handling complexity, making it not very feasible for larger scene assembly. These issues should be gradually reduced, instead of adding more of them :slight_smile:

I’m not aware of major performance regressions in undo compared to earlier Blender versions, if you can find example cases they can be reported as a bug.

Other softwares have very different undos. I think Maya (if i’m not mistaking) has a very light performance impact while undo, even on large scenes. And it also have an option to get rid of the limit number of undos. Infinite undo.

Any idea how that is done and if it would be possible in Blender ?

Just a lil’ question/share_of_thoughts here :

image

If the Undo Steps is set to zero, Blender gets weird. At least with my tests.

I tried just to edit a cube, move a few vertices around within several actions. And when I hit Ctrl Z just once, every action is reverted in that one hit.

It doesn’t looks logic to me, nor practical. And I makes me wonder… If I work three hours on something and then hit Ctrl Z, will it undo the whole three hours ? Outch !

To me, such parameter set to zero would mean “no limit, you can undo every step up to infinity”. But for now it looks more like a dangerous setting. Maybe lock it to 1 ?

I’ll just throw my support in for this here. The Undo system needs some serious love and attention as the delays make working on big scenes extremely frustrating… We do large visualizations with scenes in Unreal typically containing 10 to 50 million polys and tens of thousands of objects. We’ve been working to migrate our pipeline over to Blender, but it’s not uncommon to have to wait minutes for a single undo when your scene is that large. That makes using Blender for this sort of task impossible. Please consider giving some much needed attention to raw performance for the 2.8x cycle! Thanks!

9 Likes

Any progress? :pleading_face:
is real pain and 75% crash on 10mi scenes

There is a developer working on it but its not an easy task.