Masking

A mask protects part of the model from change. Masked areas are drawn darker, and every brush, the Paint brush and colour fills leave them alone. This chapter covers painting masks with Ctrl, masking with a lasso or rectangle, the background gestures, and the Tool > Masking controls for inverting, blurring, growing and building masks from cavities or polygroups.

A mask painted on the lion's mane, with the Masking sub-palette
A mask painted on the lion's mane, with the Masking sub-palette

How masks work#

  • A mask is a value per vertex from 0 (free) to 1 (fully masked). Values in between give partial protection, so a soft mask edge blends sculpting into the protected area.
  • Masks belong to a SubTool: each SubTool has its own mask.
  • Masks are saved in projects (.sfproj) and in .GoZ files, so they survive a round trip to ZBrush.
  • Masking is not a layer and isn't affected by sculpt layers: a mask stroke always works on the model itself.
  • Mask strokes and mask commands are undoable like any other change.

To see the mask, keep Mask on in the right shelf (it is on by default). The same toggle is Show mask in Tool > Masking, and Show Mask in the Render palette. Turning it off hides the darkening; the mask still protects the surface.

Paint a mask#

  1. Hold Ctrl and drag on the model. The area under the brush becomes masked.
  2. Hold Ctrl+Alt and drag to erase the mask.

Mask strokes use the current Draw Size, symmetry and, with a pen, pressure (when Pressure > Strength is on). How much each stroke masks is set by Mask Strength in Tool > Masking (0.01 to 1, default 1): lower values build up a soft, partial mask over several strokes. Mask strokes always use a round tip, whatever alpha you have selected, and a DragRect stroke masks with dabs along the path instead of one stamp.

On macOS, Cmd works wherever this guide says Ctrl.

Mask with a lasso or rectangle#

To mask a large or sharply outlined area in one go, pick a mask selection shape. As in ZBrush, holding Ctrl turns the brush on the left shelf into the mask brush: with Ctrl held, click the brush tile (or press B) to pick MaskPen, MaskLasso or MaskRect, or click the stroke tile to pick the stroke (Dots, Lasso or Rect). The same shapes sit at the top of Tool > Masking:

ShapeCtrl + drag
MaskPen (default)Paints the mask with the brush, as described above.
MaskLassoDraws a free-hand outline that closes back to where you started. Everything inside is masked.
MaskRectDraws a rectangle. Everything inside is masked.

With MaskLasso or MaskRect:

  1. Hold Ctrl and drag around the area. The drag can start on the model or on the background. The shape is drawn as you drag, white with a dark veil.
  2. Let go to mask what's inside. Hold Ctrl+Alt instead to unmask what's inside (the shape is drawn blue). You can press or release Alt while dragging; what counts is whether it is held when you let go.

The selection works in screen space, like the visibility rectangle: a vertex counts as inside when it falls inside the shape as you see it, including vertices on the far side of the model. Hidden parts are left alone. Mask Strength sets how much a selection masks or unmasks, and each selection is one undo step. A lasso that crosses itself leaves out the areas it encloses twice.

The cursor turns into a small cross while Ctrl is held, since the brush size doesn't matter for a selection.

Background gestures#

With Ctrl held, clicks and drags on the empty background act on the whole mask:

GestureEffect
Ctrl + click the backgroundInvert the mask
Ctrl + drag on the backgroundClear the mask (MaskPen)
Ctrl + drag on the background, with nothing maskedNothing, as in ZBrush (the SculptForge input style zooms the view, see Coming from ZBrush)

On the model, a Ctrl + click that doesn't drag works on the mask's edges, as in ZBrush:

GestureEffect
Ctrl + click the modelBlur the mask (once per click; same as Blur)
Ctrl+Alt + click the modelSharpen the mask (same as Sharpen)

Mask keys#

KeyEffect
Ctrl+AMask All
Ctrl+Shift+AClear Mask
Ctrl+IInvert Mask
Ctrl+HShow or hide the mask's shading (View Mask)
Ctrl+WGroup Masked: the masked part becomes a new polygroup and the mask is cleared (see Polygroups)

A drag starts after the cursor moves a few pixels, so a slightly shaky click still inverts. With MaskLasso or MaskRect, a Ctrl + drag on the background draws the shape instead; clear the mask with Clear, or Ctrl+Alt + drag a shape around the whole model.

The Masking sub-palette#

Open Tool > Masking (the Tool palette is in the right tray by default). Every button is one undo step.

ControlWhat it doesCommand
Show maskDarken masked areas in the viewport.
MaskPen / MaskLasso / MaskRectWhat Ctrl + drag does: paint with the brush, or mask inside a lasso or rectangle.mask_lasso / mask_rect
Mask StrengthHow much each mask stroke or selection masks (0.01 to 1), and the mask value By cavity gives the deepest cavities.
ClearUnmask everything.mask_clear
InvertMasked becomes free and free becomes masked.mask_invert
AllMask every visible vertex.mask_all
BlurSoften the mask edges by averaging with neighbouring vertices.mask_blur
SharpenTighten soft edges, pushing values toward fully masked or free.mask_sharpen
GrowExpand the masked region by one ring of edges per pass.mask_grow
ShrinkContract the masked region by one ring of edges per pass.mask_shrink
passesHow many times Blur, Sharpen, Grow and Shrink run (1 to 20 here, default 1).iterations=
By cavityMask concave areas (creases, folds, pores), replacing the current mask.mask_by_cavity
thresholdHow concave a spot must be for By cavity (-0.2 to 0.5, default 0.02). 0 masks anything concave; higher values keep only deep creases.threshold=
By polygroupMask one polygroup, replacing the current mask. The number field next to it is the polygroup id.mask_by_polygroup

Mask operations only change visible parts of the model; hidden parts keep their mask. Clear is the exception and frees everything.

Common tasks#

Protect detail while smoothing#

  1. Click By cavity to mask the creases and pores.
  2. Smooth with Shift. The cavities keep their sharpness while the surface between them relaxes.
  3. Ctrl + drag on the background to clear the mask when you're done.

Raise threshold if too much is masked; lower Mask Strength for partial protection.

Sculpt one part only#

  1. Paint a mask over the part you want to work on with Ctrl.
  2. Ctrl + click the background to invert it. Now everything except that part is protected.
  3. Sculpt freely; strokes that cross the edge stop at the mask.

Mask a whole polygroup#

The quickest way works without knowing the group's number:

  1. Ctrl+Shift + click the group to isolate it (see Polygroups and visibility).
  2. Click All: only visible vertices are masked.
  3. Ctrl+Shift + click the background to show everything again. The mask stays.

By polygroup masks a group by its id. The viewport doesn't show ids, but the console does: isolate the group, then open the console (`) and read the isolate_polygroup group=N line. Enter that number in the field next to By polygroup and click it.

A soft-edged mask#

Paint the mask, then click Blur a few times (or set passes to 3-5 first). Sharpen does the opposite.

Turn a mask into a polygroup#

Click From mask in Tool > Polygroups: the masked triangles become a new polygroup. See Polygroups and visibility.

Masks and painting#

Polypaint respects the mask too: the Paint brush, Rgb strokes and Fill leave masked areas alone, so you can mask an area and fill the rest with a colour. See Polypaint and materials.

Masking from a script#

CommandOptions
mask_clear, mask_all, mask_invert
mask_blur, mask_sharpen, mask_grow, mask_shrinkiterations (1-100, default 1)
mask_by_cavitystrength (0-1, default 1), threshold (-1 to 1, default 0.02)
mask_by_polygroupgroup (required), add=true to add to the current mask instead of replacing it
mask_rectx0 y0 x1 y1 (-1 to 1, y up), unmask, strength (0-1, default 1), optional view_proj matrix; without a view the rectangle spans the mesh seen from the front
mask_lassopoints (required): the outline as "x0 y0 x1 y1 ...", at least 3 points in the same -1 to 1 space; unmask, strength, view_proj as for mask_rect
sculptforge-cli -c 'open path=head.obj; mask_by_cavity threshold=0.05; mask_blur iterations=2; save_project path=head.sfproj'

See also#

Also in the app: Help > User Guide (Shift+F1). Found a mistake? Edit this page on GitHub.