Undo (for dynamic topology) is working

The latest code in the dyntopo branch now does undo/redo in sculpt mode with dynamic topology enabled.

The bmesh-undo branch on which this is based has gained a simple unit-test framework, although only one test is enabled currently.

The last major change that was needed to get undo working was rewriting the edge-collapse function in dyntopo. Originally it was coded using the vertex/edge splicing euler operators. The two vertices of the edge were spliced (merged), then duplicate edges were spliced, and various cleanups on faces were performed. This was already tricky and error-prone, and getting undo working for splice was not going too well. As a workaround, I replaced all the splicing code by simply creating new faces and deleting the original vertex/edge. Simpler code and the undo code was already working for that case. That said, proper logging of splicing is something that will need to be revisited if the BMLog were considered as a replacement for editmesh-undo.

There are of course still bugs to work through, but this is a good validation of the logging technique.

15 thoughts on “Undo (for dynamic topology) is working”

  1. Are you moving forward with your proposed changes to “Undo” under the expectation that your proposal will be accepted–which, I think we can all agree is a very reasonable assumption–or have the blender powers that be extended their collective blessing to go ahead with the changes?

    Also, it’s great to see a “Detail Size” option. Gone are the days of mesh resizing.

    1. So far there hasn’t been much reaction to the undo proposal. I take this to mean there are no strong objections, now people wait to see if a working implementation appears :) (The BF devs are of course busy with Mango too.) The existing implementation is by no means complete, it really just handles creating and deleting mesh elements, but there are many more (and trickier) operators.

      I have no doubt that if a fully working implementation is finished, with corresponding documentation, and with proof that it is a better alternative to the existing system, that logging undo will be accepted into trunk. The onus is on me though to meet those prereqs.

    1. Worked through scons build errors with vitos1k on IRC earlier, should build OK with scons on Windows now.

  2. Last Win 64 build on DynTopo downloaded from Graphicall, like all the previous builds, do not seem to work at all on my Windows 7 Ultimate 64 bit, Sony Vaio i7 Quad-Core. It’s a pity I cannot use this fantastic tool.

    1. Not enough information here to diagnose the problem. Is it crashing on startup? Any error messages?

      1. Yes, sorry.
        It make holes sometimes or crashes blender when I use the draw tool,
        and simply crashes blender when I use the grab tool.

        1. The grab brush is expected to crash at the moment. (Ditto for rotate and thumb.) Occasional crashes with other brushes are expected too at this point (there are lots of lurking bugs still.) If it’s crashing constantly with the draw brush, that is a bit odd (doesn’t happen for me on Linux), which could indicate a bug that is simply more apparent on Windows (e.g. due to differences in memory allocation and initialization.)

    1. it crashes with any modifier! make sure you have none before sculpting. Ctrl+Z works fine to me, until i hit it 5-10 times simultaniously :)

  3. Hi. I would love to use this sculpting method in Blender. I especially like the the way you can split the mesh with holes. Great work. I wonder why you are not developing voxels. I understand there are certain speed advantages. I work in layers of detail when sculpting (Blender/Sculptris) and build up gradually so I am not sure I will get much benefit from realtime detail approach especially since maximum polycount wont be effected by your new method (I presume). Any way impressive work. Good luck

    1. I haven’t exactly rejected voxels, but I don’t know much about how I would code sculpting with them. Voxels are a quite different beast from polygons. So: I’m not developing voxels because I’m quite ignorant about them.

      Not sure what you mean about maximum polycount?

      1. Thanks for the reply. I suppose I was asking whether the ploygon count that Blender can handle would need to increase to implement your sculpting efforts. One brush stroke of high detail would send my PC into warp spasm (probli). I appreciate the level of detail Blender can handle and I have compared it to other sculpting software. There seems to be a definite leap in detail in the dedicated sculpting programs. I imagine it is down to budget at the end of the day.

Leave a Reply

Your email address will not be published.