## Advanced Boolean Operations

Realsoft 3D has a very powerful Boolean feature set that allows the user to create subtractions and unions of objects in many ways. Not limited to simply cutting a hole through an object, Realsoft 3D can cut entire scenes in half and have complex level structures join together to create very detailed objects.

Most commonly, Boolean operations are used to subtract one object from another. For example, a drill cutting a hole into a desk. But the power of Booleans allows us to use more than just one object. By dropping a whole series of objects to a level, we can make multiple cuts into one object:

1. Create an analytical cube.

2. Duplicate the cube (Ctrl+d) and size it so it is a very thin slit, smaller than the original using the handles. Position it so that it is slightly inside the original cube.

3. Drop this thin cube into its own level (Right click "drop to a Level") and rename the level: "Cuts"

4. Select the thin cube in the level. Make the "cuts" level the current level (Right click "Make Current")

5. Turn on Macros/Record (Macro pull down menu).

6. Duplicate the thin cube and move it up slightly. (Do not use the handles to duplicate - use either the pull down menu, right click, or the keyboard shortcut Ctrl+d to duplicate)

 7. Turn off Macros/Record. Press the Ctrl+g key to execute the macro once. Repeat until you have the desired number of thin cuts (say 10). 8. Make the Root level the current level (Right click "Make Current"). Select the first cube, and the level "Cuts". 9. Select the Boolean tab of the toolbar. 10. Select the 'Remove' icon. Leave all other values to default and accept.

The Boolean operation now cuts the thin cubes from the original cube. This is dependent on the selection order - always select the object you want to cut FROM, then the object to be cut OUT.

Note that we can now add object freely to this "Cut" level and they all cut out from the original cube. Typically, if only 2 objects are used in a Boolean operation, the Cut object is set the attributes: invisible in wire, and volume inverted.

 By dropping these objects to a level before applying the Boolean operation, the level inherits these attributes and all objects underneath inherit the level's properties. Hence we can also change the level's color to change all the cut colors. This ability to add objects to the level without having to set the Inverted volume attribute allows us to take this example further: Adding materials to a cut object level allows us to create all sorts of interesting effects - For example, having a brick outer wall, then cutting holes in the wall with wood mapped cubes would yield a wooden window sill in the walls.

It is important to note that Booleans can include other Boolean objects. To create a piston ring, one creates a cylinder, cuts a hole in the middle, then uses that object to cut out from another cylinder, then duplicating the first cut ring to create a piston with a ring cut and piston ring inside. Such nesting of Booleans is limitless - cutting and shaping an object until the final form is realized.

Primarily analytical objects are used as they are closed shapes and the volume is easily inverted. The polyhedron shape is of particular use - it is an 'analytical freeform' shape. By using polyhedrons creatively, one can create almost any shape.

 Attached is a relatively simple scene making good use of Boolean operators. Starting from a simple cylinder we "chiseled" out the form of a piston. Thinking in terms of subtraction is the key - How you want to "Cut" the object to obtain the shape you desire. Often this means cutting the cut tool - as with this scene. Examine how chamfers were cut from the shape with cones, then cut again from the piston cylinder. Note that this object was created solely from analytical objects - predominantly cylinders.

A useful technique for modeling complex forms such as this is to duplicate many of the objects from the original cylinder. This creates objects in the correct transform space and often only requires simple scaling or rotating.

When attempting to visualize the shapes inside a Boolean - creating the cut shapes OUT of the Boolean level is useful, placing them in the correct location, then dragging the icon into the "Cut" level.

Boolean representations can often be quite confusing and the Wire and Open GL representations quite inaccurate. Remember that these are merely previews of the object - renderings show the final form. Working in wireframe is by far the fastest method with Booleans - as the Open GL view is constantly being updated, computation times can sometimes be too slow for complex Booleans. Working in wireframe is best with complex scenes.

Under the object properties/wire tab of a Boolean level is a tag "AND wireframe off". This can be set to turn off the automatic Boolean wireframe representation if needed.

### Problem solving Booleans

Occasionally, after much cutting and pasting between levels - errors can appear. These errors can either be strange artifacting - which is quite possibly the result of two shapes exactly on top of each other. Or Booleans looking completely wrong. If this is the case, the easiest method to check your objects is to drag half of the objects out of the Boolean level and render (Often the wireframe representation is enough). If the Boolean looks OK then slowly add various shapes back under the Boolean level until you can pinpoint which shape is causing the problems (drag the icons out of the Boolean level and turn off render.) The problems are most likely due to having 'Invert Volume' on. Check the problem objects for unusual attributes under the 'Object properties/Gen' tab.

One must be very careful with the placement of cutting objects. Sometimes duplicates may appear unnoticed by the user and strange artifacting may result as two identical objects may be cutting another. The finite accuracy of computers allows us to place objects in exactly the same positions, but when cutting two objects, it is imperative that the cut object is slightly away from the edge or corner to allow at least some cut or no cut at all. Otherwise strange results might appear. This is also applicable when mapping scope or finite materials.

When mapping Boolean objects, it is often a good idea to drop the Boolean level to another level, then apply the material.