Boolean

Select an object. > Create panel > Geometry > Compound Objects > Object Type rollout > Boolean

Select an object. > Create menu > CompoundObjects > Boolean

Select an object. > Tab panels > Compounds tab > Boolean Compound Object

A Boolean object combines two other objects by performing a Boolean operation on them.

Operand A (left); Operand B (right)

These are the Boolean operations for geometry:

Union—The Boolean object contains the volume of both original objects. The intersecting or overlapping portion of the geometry is removed.

Intersection—The Boolean object contains only the volume that was common to both original objects (in other words, where they overlapped).

Subtraction (or difference)— The Boolean object contains the volume of one original object with the intersection volume subtracted from it.

The two original objects are designated as operand A and B.

Beginning with version 2.5 of 3ds max, a new algorithm computes the Boolean operation. This algorithm produces more predictable results and less complex geometry than earlier 3D Studio Booleans. If you open a file that contains a Boolean from an earlier version of the software, the Modify panel displays the interface for the earlier Boolean operation. For more information on the differences between the old and new Booleans, see What’s New with Booleans, below.

You can layer Booleans in the stack display, so that a single object can incorporate many Booleans. By navigating through the stack display, it's possible to revisit the components of each Boolean and make changes to them.


Subtraction: A-B (left); B-A (right)


Union (left); Intersection (right)

Booleans with Objects That Have Materials Assigned to Them

Most primitives use several material IDs on their surfaces. For example, a box uses material IDs 1-6 on its sides. If you assign a Multi/Sub-Object material with six sub-materials, the software assigns one to each side. If you assign a multi/sub-object material with two sub-materials, the software assigns the first material to sides 1, 3, and 5, and the second goes to sides 2, 4, and 6.

When you create a Boolean from objects that have materials assigned to them, the software combines the materials in the following way:

  • If operand A doesn't have a material, it inherits operand B's material.

  • If operand B doesn't have a material, it inherits operand A's material.

  • If both operands have materials, the new material is a multi/sub-object material that combines the materials from both operands.

For more information, see Material Attach Options Dialog.

What’s New with Booleans

The Boolean algorithm caused unpredictable behavior in earlier releases. The solutions are discussed here.

Surface Topology

Boolean requires that operands' surface topology be intact: This means no missing or overlapping faces and no unwelded vertices. The surface should be one continuous closed surface.

The Boolean corrects operands that fail to meet this requirement. However, the automatic correction may not be exactly what you want, so in some cases it might be safer to correct the surfaces manually.

To check for holes in the geometry, use the STL-Check modifier or the Measure utility.

To fill holes, use the Cap Holes modifier.

Face Normals

Booleans require that the face normals of the surface be consistent. Flipped normals can produce unexpected results. Surfaces where some faces are facing one way and adjacent faces are flipped are also problematic, and are commonly found in geometry imported from CAD programs. The Boolean fixes these faces as best it can. Again, it might make more sense to correct these manually.

Use shaded viewports to look for normal problems, watching for objects that appear inside-out or look otherwise incorrect. You can also turn on Show in the Editable Mesh (Face) > Surface Properties rollout > Normals group. Fix normals here, or with a Normal modifier.

Overlapping Elements

Because Boolean operations depend on a clear understanding of what is inside and what is outside a mesh, meshes that overlap themselves can produce invalid results.

For instance, if you use the Collapse utility with two overlapping objects without turning on the Boolean feature, the resulting object will not make a good Boolean operand. This is also a problem for the Teapot primitive (with all parts turned on), which overlaps itself.

If you need to use such an object as a Boolean operand, you might reconstruct it as a single non-overlapping mesh by separating the components and combining them with Boolean.

Working with Inverted Meshes

Boolean doesn't always produce the ideal result on "inverted meshes" (meshes that have been turned inside-out by having their normals flipped). The problem is that the area inside the flipped mesh is correctly seen as "outside," but the area outside it may also be seen as “outside.” To remedy this, instead of inverting the mesh, make a very large box or other primitive centered on (but not touching) the mesh and subtract the mesh from it using Boolean. Then convert it to an editable mesh, and delete the box faces. This produces a correctly inverted mesh that works correctly with Boolean.

Alignment

If two Boolean operands are perfectly aligned without actually intersecting, the Boolean operation might produce the wrong result. Although this is rare, if it does occur, you can eliminate it by making the operands overlap slightly.

Relative Complexity Between Operands

Boolean works best when the two operands are of similar complexity. If you wish to subtract text (a complex object made of many faces and vertices) from a box without any segments, the result is many long, skinny faces that are prone to rendering errors. Increasing the number of box segments produces better results. Try to maintain a similar complexity between operands.

Coplanar Faces/Collinear Edges

Previously, Boolean required that objects overlap. If two objects did not overlap but merely touched an edge to an edge, or a face to a face, the Boolean would fail.

Boolean allows for non-overlapping objects. Coincident faces/edges and vertices are no longer a problem. You can use objects completely encased within another object, where no edges intersect, to create Booleans.

See also Collapse Utility to create Booleans with multiple objects.

Procedures

To create a Boolean object:

  1. Select an object. This object becomes operand A.

  2. Click Boolean. The name of operand A appears in the Operands list on the Parameters rollout.

  3. On the Pick Boolean rollout, choose the copy method for operand B: Reference, Move, Copy, or Instance. (These methods are described in the Pick Boolean rollout section, later in this topic.)

  4. On the Parameters rollout, choose the Boolean operation to perform: Union, Intersection, Subtraction (A-B), or Subtraction (B-A). You can also choose one of the Cut operations, described later in the Operation group section.

  5. On the Pick Boolean rollout, click Pick Operand B.

  6. Click in a viewport to select operand B. The software performs the Boolean operation.

    The operand objects remain as sub-objects of the Boolean object. By modifying the creation parameters of the Boolean's operand sub-objects, you can later change operand geometry in order to change or animate the Boolean result.

Example: To create and modify a single object that contains multiple Booleans:

Suppose you want to create a box with two holes in it. One hole is to be cut by a sphere, and the second by a cylinder. If you want to make changes to the sphere or the cylinder later, you can do so by following these steps:

  1. Create a Boolean following the steps in the previous sections. The original object (the box) is converted to a Boolean, and is designated operand A. The second object (the sphere) is converted to operand B.

  2. Deselect the Boolean object. Build the cylinder if it does not already exist.

  3. Select the Boolean object; under Compound Objects click Boolean again.

  4. Click Pick Operand B and click the cylinder in the viewport. It is converted to operand B.

  5. On the Modify Panel, select Operand B from the Parameters rollout > Operands list. If you want to see operand B, choose Display/Update rollout > Display group > Operands or Result + Hidden Ops.

    If you want to animate the Cylinder or the Cylinder’s parameters you can now access them in the modifier stack display.

  6. If you want to modify the sphere’s parameters, select the box in the Operands list.

  7. Now there are two entries labeled Boolean in the stack display. Choose the lower entry. The Sphere is displayed in the Operands list.

  8. Select the Sphere from the Operands list. The sphere’s parameters are available by clicking the sphere's name in the modifier stack display.

  9. Use this technique to change parameters or animate any of the operands within the multiple Boolean.

You can also navigate multiple Booleans through Track View. Clicking the operand in Track View gives you direct access to its entry in the modifier stack display. In complex objects with many Booleans, this is an easier method than the one outlined above.

Interface

Pick Boolean rollout

When you select operand B, you designate it as a Reference, Move (the object itself), Copy, or Instance, according to your choice in the Pick Boolean rollout for Boolean objects. Base your selection on how you want to use the scene geometry after you create the Boolean.

Because you usually create Boolean objects from overlapping objects, if the B object isn't removed (if you don't use the default Move option), it often obstructs your view of the completed Boolean. You can move the Boolean or the B object to better see the result.

Pick Operand B—Use this button to select the second object to use to complete the Boolean operation.

Reference/Copy/Move/Instance—Lets you specify how operand B is transferred to the Boolean object. It can be transferred either as a reference, a copy, an instance, or moved.

  • Use Reference to synchronize changes to the original object with operand B, but not vice-versa.

  • Use Copy when you want to reuse the operand B geometry for other purposes in the scene.

  • Use Instance to synchronize animation of the Boolean object with animated changes to the original B object, and vice-versa.

  • Use Move (the default) if you've created the operand B geometry only to create a Boolean, and have no other use for it.

    Object B geometry becomes part of the Boolean object regardless of which copy method you use.

Parameters rollout

Operands group

Operands list field—Displays the current operands.

Name—Edit this field to change the name of the operands. Select an operand in the Operands list and it will also appear in the Name box.

Extract Operand—Extracts a copy or an instance of the selected operand. Choose one of the operands in the list window to enable this button.

Note: This button is available only in the Modify panel. You can't extract an operand while the Create panel is active.

Instance/Copy—Lets you specify how the operand is extracted: as either an instance or a copy.

Operation group

Union—The Boolean object contains the volume of both original objects. The intersecting or overlapping portion of the geometry is removed.

Intersection—The Boolean object contains only the volume that was common to both original objects (in other words, where they overlapped).

Subtraction (A-B)—Subtracts the intersection volume of operand B from operand A. The Boolean object contains the volume of operand A with the intersection volume subtracted from it.

Subtraction (B-A)—Subtracts the intersection volume of operand A from operand B. The Boolean object contains the volume of operand B with the intersection volume subtracted from it.

Cut—Cuts operand A with operand B, but doesn't add anything to the mesh from operand B. This works like the Slice modifier, but instead of using a planar gizmo, Cut uses the shape of operand B as the cutting plane. Cut treats the geometry of the Boolean object as volumes rather than closed solids. Cut does not add geometry from operand B to operand A. Operand B intersections define cut areas for altering geometry in operand A.

There are four types of Cut:

  • Refine—Adds new vertices and edges to operand A where operand B intersects the faces of operand A. The software refines the resulting geometry of operand A with additional faces inside the intersected area of operand B. Faces cut by the intersection are subdivided into new faces. You might use this option to refine a box with text so that you can assign a separate material ID to the object.

  • Split—Works like Refine but also adds a second or double set of vertices and edges along the boundary where operand B cuts operand A. Split produces two elements belonging to the same mesh. Use Split to break an object into two parts along the bounds of another object.

  • Remove Inside—Deletes all operand A faces inside operand B. This option modifies and deletes faces of operand A inside the area intersected by operand B. It works like the subtraction options, except that the software adds no faces from operand B. Use Remove Inside to delete specific areas from your geometry.

  • Remove Outside—Deletes all operand A faces outside operand B. This option modifies and deletes faces of operand A outside the area intersected by operand B. It works like the Intersection option, except that the software adds no faces from operand B. Use Remove to delete specific areas from your geometry.

Display/Update rollout

Display group

Visualizing the result of a Boolean can be tricky, especially if you want to modify or animate it. The Display options on the Boolean Parameters rollout help you visualize how the Boolean is constructed.

The display controls have no effect until you've created the Boolean.

Result—Displays the result of the Boolean operation; that is, the Boolean object itself.

Results + Hidden Ops—Displays the "hidden" operands as wireframe.

Operand geometry remains part of the compound Boolean object, although it isn't visible or renderable. The operand geometry is displayed as wireframes in all viewports.

Operands—Displays the operands instead of the Boolean result.

Tip: When operands are difficult to see in a viewport, you can use the Operand list to select one or the other. Click the name of the A or B operand to select it.

Displaying the operands

Displaying the result (A-B)

Displaying the hidden operand after A-B

Displaying the hidden operand after B-A

Update group

By default, Booleans are updated whenever you change the operands. A scene that contains one or more complicated, animated Booleans can impede performance. The update options provide alternate methods to improve performance.

Always—Updates Booleans immediately when you change an operand, including the original object of an instanced or referenced B operand. This is the default behavior.

When Rendering—Updates Booleans only when you render the scene or click Update. With this option, viewports don't always show current geometry, but you can force an update when necessary.

Manually—Updates Booleans only when you click Update. With this option, the viewports and the render output don’t always show current geometry, but you can force an update when necessary.

Update—Updates the Boolean. The Update button is not available when Always is selected.


Comments