Skip to content

Boolean Operators

Nika Kutsniashvili edited this page Jan 20, 2025 · 10 revisions

Brush Boolean Operators

"Brush Boolean" operators are a quick way of adding boolean modifiers to the object and configuring cutter objects that those modifiers use. It works with selection and treats active object as the canvas (one that will receive modifiers), and other selected objects as cutters, therefore multiple cutters can be added with one operation.

There are four brush boolean operators. Three for corresponding three modes of boolean modifier (you can read more about the general behavior of those modes in official documentation), and a fourth one that combines previous two. Each operator can be called from any of the add-on menus, or with listed shortcuts in object mode.

  1. Ctrl + Numpad + Union for joining canvas with the cutter (and welding geometries by removing interior faces).
  2. Ctrl + Numpad - Difference for subtracting (cutting out) the part of the canvas that intersects with the cutter.
  3. Ctrl + Numpad * Intersect for only keeping the geometry that overlaps with cutter object(s), and removing everything else.
  4. Ctrl + Numpad / Slice for cutting out intersection with difference, but keeping the intersecting part as a separate object.

boolean_operation_modes


Anatomy of the Operator

Boolean operators are essentially just combining multiple steps (that otherwise user would have to do manually) into one click. Besides adding a modifier and its object, the operator also makes changes to the cutter object so that it's excluded from renders, parented to canvas, and etc. Most importantly, it sets the viewport display of cutters to a bounding box (or wireframe, depending on user preference), so that the solid body of the object isn't visible, which makes it possible to preview cut on the canvas while repositioning a cutter. This is a full list of steps that the operator does when it's called:

Filtering (Invoking) Phase

  • Checks if there are enough viable objects selected for the operator, cancels if not.
  • Filters selected objects (potential cutters):
    • Excludes objects of unsuitable types (cameras, lights, etc.)
    • Excludes linked and library-overriden objects.
    • If an object is a Curve or Text type that outputs the mesh (with bevel or extrude), converts it to mesh so that it's usable as a cutter.
    • Excludes objects that are already cutting the canvas (to avoid duplicated modifiers).
    • Excludes objects the canvas is cutting (to avoid dependency cycle).

Execution Phase

  • Configures cutter objects visibility:
    • Hides cutter objects from render.
    • Changes viewport display type of cutters from Solid to Bounds (or Wireframe, depending on user preference).
    • Excludes cutter objects from grease pencil line art.
    • Turns off visibility of all rays for cutter objects, so that they don't appear in renders or render previews.
  • If the cutter doesn't already have a parent, the operator parents it to canvas. [*]
  • Links cutters to the boolean cutters collection, while keeping existing collections. [*]
  • Adds boolean modifier to the canvas, selects mode and cutter object, and chooses solver based on user preference.
  • (In Slice Mode) Duplicates canvas object and adds boolean modifier set to Difference with the same cutter.
  • Enables modifier visibility in edit mode. [*]
  • Moves modifier to the first place in the modifier stack. [*]
  • Marks canvas and cutters with custom properties, so that utility operators (like select, apply, remove) can recognize them.

[*] means that the step can be turned off in add-on preferences.

Adjustment Phase

When the operator is executed, solver options for new boolean modifiers can be changed in the "adjust last operator" pop-up.

image


Auto Boolean Operators

"Auto Boolean" operators work the same way "Brush Boolean" ones do, there is no difference in behavior for any of the modes, but these operators additionally apply the modifiers they create and finalize the cut. This makes auto operators destructive. Operator anatomy looks mostly the same, except that cutter objects are removed from the scene and purged, instead of turned into non-rendered wireframe objects.

The operators can be called from any of the add-on menus, or with shortcuts (same as "Brush Boolean" shortcuts, except with Shift key):

  1. Ctrl + Shift + Numpad + Destructive Union
  2. Ctrl + Shift + Numpad - Destructive Difference
  3. Ctrl + Shift + Numpad * Destructive Intersect
  4. Ctrl + Shift + Numpad / Destructive Slice

Apply Order

The behavior of the operators themselves changes drastically based on which modifiers are applied, which depends on the "Apply Order" user preference that offers three options:

  • Apply All Modifiers: The operator will apply all existing modifiers (and shape keys) to the object alongside boolean modifiers, essentially "flattening" the mesh.
  • Apply Booleans & Everything Before: The operator will look for the last boolean modifier in the stack, and apply it alongside every modifier before it, keeping modifiers that came after it intact.
  • Only Apply Booleans: The operator will only apply boolean modifiers it created, regardless of what comes before or after them in the modifier stack.

Tip

The last two options by themselves aren't useful. Applying only boolean modifiers can give unexpected results if there are existing modifiers on the object (and therefore applied modifier isn't first), and applying everything before booleans acts exactly like Apply All Modifiers, because the last modifier was a boolean added by the operator itself. But both of them become very powerful when combined with "Pin Boolean Modifiers" user preference, which puts boolean modifiers first in the stack. That allows for workflows where destructive booleans are made essentially on the mesh level and don't interfere with the modifier stack.

Warning

When applying only selected modifiers, if canvas object has shape keys the operator will cancel, because in Blender modifiers can't be applied to objects with shape keys.

Clone this wiki locally