Sculpt Masking

The traditional demonstration on poor Suzanne.

As part of my Blender development fund work, I’m working to bring sculpt masking (a feature from the 2010 Google Summer of Code) into trunk.

Here is a patch against current trunk for testing: masking-01.diff. There’s also a tarball of the git patches if you’d prefer something more fine-grained. Note that this patch sits on top of the partial-visibility code, so you’ll find both features available after building with these patches. If you make a test build, please consider uploading it to Graphicall and post a link in the comments.

You’ll find in-progress documentation on masking in the wiki. Although these patches are not quite finished yet, they are ready for testing. I’d appreciate feedback on the masking tools. In particular, how’s the UI? And of course any notes on crashes and other bugs would be good to have as well.

22 thoughts on “Sculpt Masking”

  1. Hi,

    i have uploaded a Build for Linux 32bit:

    It’s a really nice Feature, many thanks for working on it. It works really good, couldn’t find a bug (exept of the known m-key workaround to get the Mask Brush).

    off topic:
    i would really love to hear some news about dynamic topology. do you plan to continue your great work at this project?

    1. Thanks for the build. Regarding dynamic topology, I do plan to work on it more, but not until I get these other projects finished. So probably at least another month.

    2. So stoked on this feature.

      Any chance of a 64-bit linux build? (based on the current 2.62 without Bmesh)

      Thanks in advance.

      Thanks for your great work Nicolas.

      1. Not sure if there are any 64-bit windows builds around, but all builds will have BMesh — the code is written on top of Blender trunk (which of course has had BMesh since the start of this release cycle.)

  2. awesome patch!! Your work on Blender is doing wonders for many artists :). Does this patch include the ability to blur or sharpen a mask too? I reallllllly appreciate that functionality in other 3d sculpting apps.

    1. Yes, pressing the shiftkey while the mask brush is active will cause the brush to smooth the mask. (You can also set the mask brush from ‘Draw’ to ‘Smooth’ in the toolbar.)

  3. It works great, except for Drag Dot and Anchored stroke methods ( it crashes).
    One thing that I really appreciates in Jason GSOC is ability to edit, mix, activate/deactivate several mask layers.
    User have to recreate entirely one mask layer if he delete it to use temporarily another one.
    It is a pity to not have this in your patch. Do you plan to add this, later ?
    In gsoc branch, there is also a texture to mask button. Could you add this, too ?
    Partial vis is working great.
    It is fast but we have to be carefull or smooth borders after revealing hiding parts.
    Maybe editable mask borders could be automatically added when hiding parts of mesh.
    I remember that during Jason’s GSOC , people were asking to have hiding through Mask modifier because Vertex Groups were already created before their sculpting process. Do you think it is possible, now ?

    1. Thanks for report, I’ll look into the crashes.

      Paint mask layers are not particularly difficult to add on top of this code, but I prefer to have this simpler system go in first (I’d consider this the minimum feature set necessary for useful masks. Once this setup is in trunk we can look at more advanced features.) Incidentally, the layers were originally part of my own GSoC, not Jason’s, so it’s my own code that I’m deleting here.

      I can look at adding a texture to mask button, had forgotten about that.

      Not sure what you mean about the editable mask borders? Would it be like a blurred mask extending out from each hidden edge, with full masking at the hidden part and less as it gets a few edges inland?

      Hiding via vertex groups should in general be possible, that might be a feature for the future though.

      1. “a blurred mask extending out from each hidden edge, with full masking at the hidden part and less as it gets a few edges inland”
        It is exactly that.
        At a lower level, I think that a kind of extruding can be done with masking. So user should be able remove unhidden blurred mask by using mask brush.

  4. Why is Blender sculpting with 64 bit does not seem to hold as much polygons as ZBrush which is still 32-bit?

    1. Because ZBrush is better?

      For a slightly less glib answer, compiling something 64-bit doesn’t give it magic polygon juice. It doubles the pointer size, meaning it can address a larger address range (while simultaneously using more memory to store those addresses.)

  5. @young_voter : Zbrush is doing some fancy tricks also where you can have your systems max polycount per object. I’m pretty sure somehow they are converting not active objects to ‘2d’ images so the system is not rendering all those polys. That is the basic layman concept of the ‘pixols’. (Pixels with depth)

    @Nicholas : 1. Glad you know about the masking layers etc – They were nice in that old gsoc branch – Looking forward to them

    2. On the UI – I think you need hotkeys for masking invert and hiding. Additionally you need an unhide in the menu for those who don’t know alt-h. Clear Mask/Fill mask are less important as I don’t feel they are used quite as much. Additionally, I think Blender Users don’t often check drop down menus in headers. It took me a long time to find those tools as I was looking in the toolbar and n key panel. I would love to see buttons in the tool panel for sure for these options.

    1. Agreed that unhide should be in the menus. The sculpt menus in general require fixing up, too many options are missing from them (that’s one of my targets for this release.) Also agreed that mask invert can get a shortcut, maybe CTRL+i.

      Less sure that we need a shortcut for hiding [un]masked areas, not sure how frequent that operation would be? I suppose that I will add a toolbar panel with mask operation buttons, although I worry that the toolbar has gotten too full already.

      Edit: also, bit surprised that you think clear mask would not be used much?

      1. Is there a lot of ‘unusable’ functionality hidden in the code that is not exposed in the UI? It would be great to get that into a usable state, glad to here you are on it.

        I agree that ctrl+i is a good shortcut for invert as it inverts selection in other modes.

        A button in toolbar would be find for hiding masked. Just going into a menu is very slow. I do agree that, all of Blenders tool bars need love, which is no small task.

        When I said clear mask would not be used much I was in the mindset of having masking layers. So, you would want to save each mask and not clear them. Non-destructive.

        1. “Is there a lot of ‘unusable’ functionality hidden in the code that is not exposed in the UI? It would be great to get that into a usable state, glad to here you are on it.”

          No, I just meant that the menu policy is in general supposed to be “everything is there”. I.e. don’t just have a button or hotkey, but rather put it in the menu so that it’s discoverable.

  6. Have you thought of putting your patches into an online repository, like GitHub or Gitorious? I think jesterking is maintaining a mirror of the Blender source on Gitorious, while I keep a mirror (of the trunk only) on GitHub here:

    Basically, fork from one of these, and create your own branch.

    1. Yes, as you’ll notice in the sidebar I do have a Gitorious mirror based off JesterKing’s. The reason I haven’t been using it for this is that I want to keep a clean history, which means doing a fair amount of rebasing still. Of course, I could still use the repo and push a fresh branch (or tag) for each rebase… but seems easiest to just post a tarball of the patches. (After untarring, you need only run ‘git apply *.patch’)

      Of course, if there’s a better way please let me know :)

  7. I have taken the build: for a test spin and I am very pleased with the work you are doing.

    I can’t thank you enough.

    It is working like a dream.

    A suggestion is to have more methods of applying the the mask. A square selection similar to the hide feature and also a polygon lasso. Of course this is not essential.

    I think a shortcut for hiding [un]masked areas is very important.

    Thanks again.

Leave a Reply to nicholasbishop Cancel reply

Your email address will not be published. Required fields are marked *