Notice: I have pivoted the idea to one of improving UNDO speed and efficiency. Please read the replies below.
Hi all. In the latest build of Blender 2.8, Undo follows the global order in which actions were done. This means that if I am working on an object having previously worked on another object, but wish to undo an action done on the previous object, I have to undo all the actions done to the current object too. I have done some research on Right Click Select and UI Papercut, and noticed that this is a pain point for some Blender users too. https://blender.community/c/rightclickselect/VLcbbc/
I wish to propose a refactor of the Undo system so that it retains the ability to perform traditional undo as well as my proposed per data-block undo. This involves storing actions at data-block level. If user clicks on a mesh data-block in the outliner, Ctrl-Z will perform traditional undo (following global order) while Ctrl-Alt-Z will perform per data-block undo (for the selected mesh). In addition, I intend to create a new Undo panel for undo management.
- If our active editor is 3D view port and we are in edit mode, upon translating a vertex of object A, this action will be recorded under object A’s mesh data-block.
- If our active editor is 3D view port and we are in object mode, upon translating object A, this action will be recorded under object A’s data-block.
- If our active editor is Properties and we are in material panel, upon modify the diffused color, this action will be recorded under object A’s material data-block.
- If an action on one data-block strictly requires that an action on another data-block has been completed, then my proposed Undo mechanism may not be viable because if we were to undo the dependent action, the other action will become invalid.
- If all Blender actions are unrestricted and have its own inverse (i.e. translate (0, 0, 1) and translate (0, 0, -1)), then my concern is unfounded. But if there are actions in Blender that maybe active/ inactive based on some conditions (restricted action), then my concern is valid.
Thank you for looking through my gSOC project ideation. I would love to receive some feedback regarding the meaningfulness of this project, viability of this project, general ideas and suggestions. Is it a pain point for many users? Could this be a good gSOC project on its own?