GSoC 2019: Undo Improvements

i might be the odd man out here but I still see stability issues with undo, in addition to the aforementioned performance gripes. pretty much the only reason I use the PowerSave addon is because I probably see an undo crash 4-6 times per day (given an 8 hour work day). It’s a minor inconvenience with autosaves being cranked out every 60 seconds, but it’s enough to give somebody who’s trying to use Blender for professional work some serious concerns.

2 Likes

2.79 already had pretty bad undo performance, so it shouldn’t be used as the reference point. We need a 10x improvement from where it’s at right now, at the very least. Multiple second delays when undoing a single object transformation? Unacceptable.

Absolutely, undo crashes seem to be a rather common occurence (in 2.92 at least). I’m surprised there isn’t a bugfix release out.

12 Likes

What’s crashing? If it’s sculpt mode undo issues I can take a look, if not you can test 2.93 alpha at:

. . .and if the bugs are still there file a bug report.

Can’t report it, it can’t be reliably reproduced. There’s a significant amount of crashes happening when working with 2.92, often following an undo operation. I don’t know about sculpt mode or 2.93.

1 Like

this is also what I observe, just normal edit/object mode undo (not sculpt mode). I would imagine anybody who’s doing poly modeling with modifiers for 8 hours per day will be able to repro it randomly. there are no steps to follow, but it is extremely common.

1 Like

I was having that crash for a while, but haven’t seen it lately. It might be fixed in 2.93, I think it’s supposed to be released next week or the one after that.

I totally get your point. I am a studied programmer. I know about the unglamorous heavy lifting that goes into something like this :slight_smile: Unfortunately it seems I did not express my appreciation for the Blender teams efforts clearly enough in my post, when it was the one thing I was trying to definitely state. :confused: I am totally on board with you regarding being annoyed by ungrateful people. I am constantly annoyed by ungratefulness and by people taking stuff for granted. Stuff many people have no idea about what crazy math kung-fu and cognitive effort goes into. But, this is absolutely not the case here with me and my previous post.

I know it is a massive undertake to change such a faulty core. But as Machin3 said, the state of undo is simply unacceptable. If you work on deadlines in a production environment, you start to notice this much more than someone, as also was already said, who models a few hard ops things just for fun.

The point of undo being “reliable” or not is not a good defense to me if I am honest. It should be able to be relied upon, no matter the speed. The reality is that no software is perfect, ever. Most advanced users or people with a programming background know that. I have had undo problems in other popular packages as well, but, I can much more live with it, if it’s a blazing fast exception. I can quickly get to work again, from my made backup or quick save, or whatever, which often times, in blender is not at all the case, no matter how much the undo is “reliable”. Working on even remotely larger scenes will often cause you to loose track because you find yourself stuck in undo freeze and don’t know whats happening anymore, having to reload the last file, often resulting in lost work at worst. What kind of a reliable undo is that? It makes you afraid of doing work, having an intimidating influence on your willingness to iterate.

I would like to make a comparison:

You are an artist(=developer). Someone(=user) wants to use your character(=software) which you made as an artist(=developer). The user struggles to have it working properly in his game because your rig is flawed and the anatomy looks wrong(=basics). Then you say to him: “Ok , I will add more skin pores to it and give him physics driven clothing! That should do the trick to make it more usable for you.” - Get my point? Yeah, you would need to freaking rebuild most of this character from scratch, because you screwed up somewhere in the development process. You can say all day that “this would be totally nuts to go that deep and rework this stuff”, but, the price you pay for the unwillingness to do so is that most people don’t want to use your character in their production, no matter how great it is quality wise otherwise. It is not a matter of “belief”. The char simply does not work as it is supposed to on the most fundamental level. Period. Because even if they like its overall quality, it is unviable in production. Or at the very least, unnecessarily more difficult to use than others. (I know that Blenders decades of development and code base is far more complex, with far more rat tails and rabbit holes, and far more effect on the users than a single video game character has on a game. I’m just trying to paint a picture here)

Honestly, if it at this point, it will still take years for Blender devs to fix this, it is more of a priorization issue than anything else. Something that as a user, you might unfortunately don’t have the time to wait for, except if you want to save bucks on your 3d app. You said it is on par now with 2.79 in terms of undo and that that was a huge undertake, I believe that. But it is still far from the basic undo functionality that ANY other app, no matter if 2d, 3d or wordpad, relies upon for production work. We are not talking about some specific feature here, we are talking about basic software functionality! A basic fundamental ingredient of any software that people need to be able to work with. I again like to point that out.

I appreciate all efforts regarding undo so far, but I simply can not ignore something that makes my working life miserable frequently, no matter how I otherwise love the app, which I already stated, I do very much.

And more importantly, no matter how much effort went into this “so far”. It does not change production reality for me if I try to warmly remind myself that there already was a ton of effort in this. Its sounds ugly and tough, but it is not something rude. It is simply the reality of how advanced users perceive the software. It is the same pressure that lies on the professional artist to produce believable and aesthetically pleasing stuff. Stuff people also always take for granted just as much. I don’t think it is fair to cut programmers some “extra slack” in this regard. Sure, the issue goes far back, but that doesn’t excuse having an inacceptable base for a most basic software functionality that most other professional software executes like a champ in terms of speed. What kind of point is that? Something that is deeply rooted should be less of a problem, because it is deeply rooted? Sure its harder to solve, but it also somewhat makes it more urgent and I don’t think it gets any easier to solve if the devs take it with them into each new version.

However all that might come out, reality for me is: I would never leave Blender. Although it crosses my mind occasionaly, because of the state of undo and how much that slows me down. But it is just too awesome in almost ANY other regard when it comes to pure polygonal modeling, especially with the tons of add-ons that I use on a daily basis. Stuff I really hardly could live without anymore. (HardOPs, Machine Tools, MeshMachine, the list goes on infinitely…) But it’s hard to live with the undo state if this is your main production tool. You can’t blame people starting to doubt using it in their pipielines. Or not even wanting to integrate it at all. Or even switching.

To give my perspective on why I think that stating that I “mischaracterize” people is not true: I was talking about the software and the developers, about the devs in their “roles as developers” and “their decisions as developers”, not the worth of the actual persons behind it. It is easy to get this mixed up with written text. Especially with different point of views.

All in all, I don’t think to defend fundamental flaws in a software is helping it at all. You can say all day how much effort it was to even get to this point, it won’t change a thing. Users don’t see code. Users see undo not working as it is supposed to. Seeing this as a broken state, imo, is not exaggerated. Thinking that it could be kept like this for future versions to come is a tad delusional and much easier to live with from a developer perspective than it is from an artist or production pipeline perspective. That is what I meant really. There is, imo, a non-deniable discrepancy regarding the perception of just how important this undo topic is really. And yes, I know that it is not a trivial thing that the devs are just “being lazy” about. That is not what I believe. It’s a matter of priorization issues and ressource management, happens everywhere, not just with Blender. But it does not make it non-critiquable.

I am someone who awes and passionately uses my favorite programs (which includes blender) all day long, being incredibly thankful for all these insanely great apps we are able to use nowadays and the insane amount of passion and work that went into them to deliver us modern production tools. I would never take this for granted. I shout out a lot to devs on YT and forums and such, thanking them for their efforts all the time. I also monthly donate blender foundation. So I feel that you might mischaracterized me :slight_smile: or at least what I was trying to get across here. And it is important to me to clear this up.

True, I let off some steam (this was my first post ever here, and my first about undo state in blender ever), and I don’t actively follow blenders development, at least not every day. Honestly, I don’t have time or interest to do so, I am constantly in production in my job or in my private projects. And as a user, this is also not something that should be demanded from me frequently. I have already waited for years for a proper undo, how much longer do you think would be appropriate?

Lots of people defend blender no matter what. Mostly because it is so awesome AND free. And I get that. I even do it also occasionally. But I find this far more toxic than to point out what’s wrong with it. I see no unconstrucitve criticism by doing so. Because if people simply live with the misstates of a software, there is no need for change.

The most affected users are those who do 3d professionally. And they will of course have more urge to make their point, even if it is sometimes with more passion than might seems necessary for users less affected. I wish blender all the best. I hate having to say negative things about blender. Thats why I always held back with my undo criticisms so far, and still would on other platforms where it might could add to harm blenders reputation as a usable program for beginners who not yet have decided to learn it.

But no matter how much one wants to cloak the issue or take off of its relevance by saying how awesome blender is otherwise, nothing changes the fact that undo is in an unacceptable state for production.

6 Likes

Yep it is. The more you do serious work with heavy scenes and tweak mysterious knobs and try to undo after that, the more you realize there is basically no undo. And that doesn’t prevent me from respecting the shit out of developers who try their best to fix twenty year old code

5 Likes

To add to this, the undo performance issues are further elavated in Blender, due to how operators can be adjusted afterwards via the redo panel. This approach depends on a fast undo, especially if you drag some properties, thereby causing many undos and redos in sequence.

7 Likes

Yeah very true. I’m not sure if it’s Undo, or something else, but when I tried to use the offset edges addon, or some of your tools, I can get some major lag/is not interactive at all. I just have to guess/type in a value and hope it works. If not, then get that Undo lag/wait and try again…

1 Like

Undo is really killing me today on a project… Even modeling a default cube in my scene, if I go into Edit mode, toggle to Object Mode, then hit Undo… it stalls for like 15 seconds every time.

I saw the High Poly Mesh Editing stuff they are looking into now… and it’s a bit…concerning…
Or, rather, I can see why Undo might be so impacted…

So I’m hoping with them looking into that task/side of things, somehow it helps improve Undo as well…

https://download.blender.org/ftp/ideasman42/donelist/2021.html#week-428-may-24

This week I did some code review but mainly worked on mesh optimizations:

  • Resolve issue with multi object edit-mode mesh undo memory usage.
  • Developed partial mesh updates (WIP).
  • Depsgraph patch based to avoid a full geometry copy (continued from last week).

Next Week

More mesh optimization development (partial updates for normals and face tessellation).

1 Like

Changing modes with undo is slow but the rest is way better already than 2.8. Is not ideal but it has been improved. The developer for that is currently working on library overrides for the studio, so it will take some time until he can look at it again.

I need to do some more tests/experiments… but when I opened my problem scene in 2.93 today, copying all my same addons/hotkeys/etc from 2.91, now Undo is much faster…!?

I wonder if something was actually improved/fixed, or is a fluke/something else going on… But I went back and forth with my same scene in 2.91 vs 2.93 and it was 1/2 second or so in 2.93 at most, and 10+ seconds in 2.91.

doing a benchmark to see how much it has improved since 2.91 doesn’t really do anything other than tell us that ‘things have gotten a bit better’, still does not mean that things are where they need to be.

1 Like

Yeah, it definitely needs to be fixed/worked on. But still is very interesting if it’s that much faster now…

I’ll have to crack open some more scenes/compare just to see. Most of my files have about 200-300 parts, consisting of about 20-40 million Tris in total, and each object has maybe 3-5 modifiers on them. Mirror,Bevel,SubSurf,Weight normals.

despite all of this - and the performance does need to improve drastically - I have to agree to an earlier statement i this thread: Reliability is so much more important. Just today had the case again where Maya wouldn’t let me undo something and the using redo/undo again made it worse every time. When you can see your progress deteriorating and know that there’s nothing you can do but to restart … also very rage inducing. And if that would have been an error I would not have noticed by the time it occurred that could have dragged on for a much longer time.
Performance - SUPER important. Reliability … tad more important!

2 Likes

Have you provided one of those files for testing ? sounds like it has many potentially problematic things (many objects, heavy meshes, and many modifiers)

1 Like

I mean sharing such a file with developers for investigation -users would probably get the same result as you do.

1 Like

Also maybe grive it a try in the newest Blender 3 Alpha. Undo seems to perform so. much. better, already! After Pablo’s livestream yesterday I just gave it a quick try and the only thing that still took some time was entering and leaving edit mode on a 6 million triangle mesh. The undo steps performed in under a second.

4 Likes

I tried the latest version this morning, of the 3.0 Alpha, but Edit Mesh perf didn’t seem any faster to me vs 2.93. Maybe all those changes aren’t all in yet… Some parts had 3-5 second lag yet, going into Edit mode.

Some fixes I think are sitting there yet/need to get approved first maybe.