{"id":2637,"date":"2020-02-10T17:53:44","date_gmt":"2020-02-10T17:53:44","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=2637"},"modified":"2023-09-07T15:52:29","modified_gmt":"2023-09-07T14:52:29","slug":"boolean","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/boolean\/","title":{"rendered":"Boolean"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a09057515839\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a09057515839\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.katsbits.com\/codex\/boolean\/#boolean-modifier\" >Boolean Modifier<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/codex\/boolean\/#operation-%e2%80%93-add-or-remove\" >Operation &#8211; Add or Remove<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.katsbits.com\/codex\/boolean\/#boolean-multiple-objects\" >Boolean Multiple Objects<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.katsbits.com\/codex\/boolean\/#boolean-blender-29\" >Boolean &#038; Blender 2.9+<\/a><\/li><\/ul><\/nav><\/div>\n<div style=\"background-color: black; position: relative; padding-bottom: 56.25%; padding-top: 25px; height: 0; overflow: hidden; max-width: 100%;\"><center><iframe style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" src=\"https:\/\/www.youtube.com\/embed\/7DjtTfrIb58\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/div>\n<p>Similar to <a href=\"https:\/\/www.katsbits.com\/codex\/knife\/\"><b>Knife<\/b><\/a> cutting a mesh and <a href=\"https:\/\/www.katsbits.com\/codex\/bisect\/\"><b>Bisect<\/b><\/a> slicing selections, <b>Boolean<\/b> provides another means to add or remove material from a mesh or object, the target, using another, the operator, that defines what gets removed and where &#8211; poking the corner of a cube (operator) into a sphere (target) leaves an impression of the cubes corner in the sphere wherever they intersect. In this way <b>Boolean<\/b> can be used to create positive or negative shapes or make additive or subtractive cuts.<\/p>\n<blockquote style=\"background-color: #e7faea; color: #000;\"><p><b>Download<\/b>: <a href=\"https:\/\/www.katsbits.com\/files\/blender\/katsbits - boolean.zip\">KatsBits &#8211; boolean.zip<\/a> | c. 100 KB (*.blend).<\/p><\/blockquote>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><b>Important<\/b>: Boolean operations have a tendency to produce unusually messy meshes often requiring significant cleanup or (re)optimisation afterwards. In addition, aggressive use of Boolean can cause <a href=\"https:\/\/www.katsbits.com\/codex\/manifold\/\">non manifold mesh issues and\/or Blender to crash<\/a>.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/object-operator.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/object-operator.jpg\" alt=\"Boolean operation require a target and operator objects\" width=\"1280\" height=\"720\" border=\"0\" \/><\/a><br \/>\n<i>Boolean operations require a &#8216;<b>target<\/b>&#8216; object (green and pink blocks above) that is affected by the modifier, and an &#8216;<b>operator<\/b>&#8216; that determines what happens and where (default Cube primitive shown above in Wire mode for clarity &#8211; Object Properties \u00bb Viewport Display \u00bb Display As \u00bb Wire &#8211; although the operator can any shape or form of object).<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"boolean-modifier\"><\/span>Boolean Modifier<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><b>Boolean<\/b> requires a <i>target<\/i> object, an object from or to which material is to be removed or added, and an <i>operator<\/i>, a shape that essentially acts as the cutting element. To use Boolean then, in <b>Object Mode<\/b> select the object (mesh) that is to be affected by the tool then in <b>Modifier Properties<\/b> select <b>Boolean<\/b> from the <i>Generate<\/i> options column.<\/p>\n<blockquote><p><b>Design note<\/b>: subject to <a href=\"#boolean-multiple-objects\">Boolean Multiple Meshes<\/a> below, Boolean applies to one target object at a time, a <b>single mesh<\/b> selection or the <b>Active object<\/b> in a group so removing or adding material where multiple objects would otherwise be the case, requires they be <a href=\"https:\/\/www.katsbits.com\/codex\/join-meshes\/\">joined together<\/a> (<span class=\"shortcutkey\">Ctrl<\/span> + <span class=\"shortcutkey\">J<\/span>) beforehand into a single unified object.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/joined.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/joined.jpg\" alt=\"Complex objects may need to be joined for Boolean\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Object otherwise comprising multiple meshes may need to be joined into a single mesh before assigning Boolean as the Modifier only operates on the (active) object to which the modifier is assigned.<\/i><\/p><\/blockquote>\n<p>This assigns a modifier instance to the object and populates the properties panel. Here click the <b>Mesh object to use for Boolean operation<\/b> input field under <b>Object<\/b> and select the mesh to use. Once set, in the 3D View select the operator object and position it relative to the Boolean operation desired.\u00a0 When done, select the object being affected by the Boolean operator and in the modifiers properties (<i>Modifier Properties<\/i>) click the <b>Apply<\/b> button. This sets the change and removes the modifier from the Modifier Properties stack (panel).<\/p>\n<blockquote><p><b>Design note<\/b>: depending on the target objects structure Blender will make a best effort attempt to &#8216;close&#8217; the mesh and fill gaps caused by Boolean, else leave the modification &#8216;open&#8217; (unfilled) &#8211; the target mesh being closed or open before being modified has little bearing on the end result.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/closed-mesh.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/closed-mesh.jpg\" alt=\"Partial closed mesh after Boolean\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>A sphere set as the Boolean shape removed from a target object illustrates how Blender 2.8+ will attempt to &#8216;close&#8217; the mesh wherever possible but may leave a majority &#8216;open&#8217; because it cannot be reasonable resolved. Some experimentation may be necessary to achieve the correct effect if the operation is to close the mesh entirely.<\/i><\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-modifier.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-modifier.jpg\" alt=\"Assigning Boolean Modifier to active object\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>With object selected in the 3D View the Boolean Modifier is assigned &#8211; this is the object to be affected by the operation with the removal or addition of material (mesh structure).<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-object.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-object.jpg\" alt=\"The Boolean object performs the operation\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Once the Boolean Object is set, in the modifiers properties it can be used to transform the mesh to which the modifier is assigned, adding or removing material as needed, just click and manipulate into position in the 3D View as a normal object.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"operation-%e2%80%93-add-or-remove\"><\/span>Operation &#8211; Add or Remove<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Adjusting the behaviour of the Boolean modifier, whether it adds or removes material, depends on the <b>Operation<\/b> setting and the interaction between both &#8216;target&#8217; and &#8216;operator&#8217; objects. Here three options are provided; <b>Difference<\/b> (default), <b>Intersect<\/b> and <b>Union<\/b>. To set the <strong>Operation<\/strong>, select the object to which the Boolean modifier is assigned then in the modifiers properties click the drop-down menu below <b>Operation<\/b>. Select the appropriate option from the list and move the operator object in the 3D View to assess the effect.<\/p>\n<blockquote><p><b>Design note<\/b>: the operator object defines what Boolean does based on it&#8217;s shape, it being analogous to a clipping &#8216;volume&#8217;, anything inside the volume is culled (or vice versa) and the target adjusted to accommodate the new structure, and left active, both target and operator remain editable, changes immediately propagating between the two.<br \/>\n&#8211; <b>Difference<\/b>: material <i>inside<\/i> the operator is removed from the target object.<br \/>\n&#8211; <b>Intersect<\/b>: material <i>outside<\/i> the operator is removed from the target object (inversion of Difference).<br \/>\n&#8211; <b>Union<\/b>: <i>joins<\/i> both operator and target objects together (material inside the operator is culled).<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/operation.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/operation.jpg\" alt=\"Three types of Boolean operation\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>There are three basic types of Boolean operation; <b>Difference<\/b>, <b>Intersect<\/b> and <b>Union<\/b>, that change the mesh based on the interaction between the target and operator objects.<\/i><\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/operation-settings.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/operation-settings.jpg\" alt=\"Operation changes the behaviour of Boolean\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The shape of the Boolean addition\/removal can be changed based on the <b>Operation<\/b> setting in the modifiers properties, click the drop-down and select the appropriate option to essentially remove, add or join.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"boolean-multiple-objects\"><\/span>Boolean Multiple Objects<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Boolean only affects meshes to which the modifier is assigned. In situations where two or more meshes need to be modified by the same Boolean operation, each needs to have an individual instance of the Boolean modifier assigned, which then in-turn reference the same operator object.<\/p>\n<blockquote><p><b>Design note<\/b>: assigning individual objects within a group their own Boolean modifiers removes the need to <b>Join<\/b> (<span class=\"shortcutkey\">Ctrl<\/span> + <span class=\"shortcutkey\">J<\/span>) collections together into a single unified object, which can cause problems in of itself. Multiple objects with their own Boolean instance also increases the probability of Blender properly closing a mesh based on the Boolean shape.<\/p><\/blockquote>\n<p>To do this, select each object in turn and from Modifier Properties assign a <b>Boolean<\/b> modifier per the above, then in each respective modifiers options set the same <b>Object<\/b> as the operator, i.e. the same cube. Once done, moving the latter (operator) in the 3D View will immediately affect all the former (target objects assigned the modifier and using the same operator object) deforming it per the object and <a href=\"#operation-add-or-remove\"><b>Operation<\/b><\/a> option set.<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><b>Important<\/b>: if additional editing is needing to be done the modifier can be left active so the mesh updates appropriately as clicking <b>Apply<\/b> in the modifier stack prevents this by &#8216;fixing&#8217; the object\/operation in its current state (this is also applicable to the operator object) &#8211; for <b>Blender 2.9 and above<\/b> the Apply button may be presented as a menu option accessible from the Modifiers header.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-apply.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-apply.jpg\" alt=\"Using Apply to 'fix' a Boolean\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Fixing a Boolean operation clicking the Apply button in the Modifier stack\/panel.<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-apply-29+.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-apply-29+.jpg\" alt=\"Apply in Blender 2.9+\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>For Blender 2.9 and above the Apply is menu option accessible in the Modifiers header.<\/i><\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-multiple-objects.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-multiple-objects.jpg\" alt=\"Boolean multiple objects\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Boolean only affects the object to which it is assigned, however, multiple objects can be affected by the same operator &#8211; add a modifier to each and then set the same mesh as the operator <b>Object<\/b> that when moved, will change all objects referencing it.<\/i><\/p>\n<p><video poster=\"\" controls=\"controls\" width=\"100%\" height=\"auto\"><source src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-multiple-objects.mp4\" type=\"video\/mp4\" \/><!--<source src=\"https:\/\/www.katsbits.com\/images\/tutorials\/collections\/collection-shortcut.ogg\" type=\"video\/ogg\" \/>\n<source src=\"https:\/\/www.katsbits.com\/images\/tutorials\/collections\/collection-shortcut.webm\" type=\"video\/webm\" \/>--><\/video><br \/>\n<i>To Boolean more than one object each needs to have a Boolean Modifier assigned and set to be affected by the same operator (or as required) thus avoiding the need to <a href=\"https:\/\/www.katsbits.com\/codex\/join-meshes\/\">Join<\/a> everything together.<\/i><\/p>\n<p><center>&bull; &bull; &bull;<\/center><\/p>\n<h3><span class=\"ez-toc-section\" id=\"boolean-blender-29\"><\/span>Boolean &#038; Blender 2.9+<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>For <b>Blender 2.9<\/b> and potentially future versions of the application, Boolean behaves exactly the same way, with the same options available for use that may however, be presented or formatted differently from previous versions &#8211; menus instead of buttons, buttons instead of menu or text options. These changes do not affect the tool, its functionality, or the Boolean operation itself, just how it&#8217;s presented or organised. With this in mind, to use Boolean follow the steps discussed above; select the mesh object to be affected, assign a <b>Boolean<\/b> Modifier and set the type of cut to be made clicking the <b>Intersect<\/b>, <b>Union<\/b> or <b>Difference<\/b> button.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-29+.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-29+.jpg\" alt=\"Blender 2.9+ Boolean options\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>For <b>Blender 2.9<\/b> and future versions, whilst the modifiers appearance may differ the tools functionality remains the same &#8211; select the object to be affected, assign the modifier and set the type of cut to be made.<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":2738,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,230],"tags":[672,642,671,646,673,674,570,640,312,423,675],"class_list":["post-2637","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-tutorials","tag-active-object","tag-bisect","tag-boolean","tag-cut","tag-difference","tag-intersect","tag-join","tag-knife","tag-modifiers","tag-object-mode","tag-union"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/2637","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/comments?post=2637"}],"version-history":[{"count":6,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/2637\/revisions"}],"predecessor-version":[{"id":5091,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/2637\/revisions\/5091"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/2738"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=2637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=2637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=2637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}