{"id":6190,"date":"2022-07-07T00:00:50","date_gmt":"2022-07-06T23:00:50","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=6190"},"modified":"2023-09-07T15:50:03","modified_gmt":"2023-09-07T14:50:03","slug":"boolean-text-curves","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/boolean-text-curves\/","title":{"rendered":"Emboss, Engrave Text in Curved &#038; Non-linear Surfaces"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 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-69fe4bc311013\" 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-69fe4bc311013\"  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-text-curves\/#basic-boolean-setup\" >Basic Boolean Setup<\/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-text-curves\/#simple-curves-boolean\" >Simple Curves &amp; Boolean<\/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-text-curves\/#complex-curves-boolean\" >Complex Curves &amp; Boolean<\/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-text-curves\/#compound-curves-multiple-axis\" >Compound Curves (Multiple Axis)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.katsbits.com\/codex\/boolean-text-curves\/#subdivision-surfaces\" >Subdivision Surfaces<\/a><\/li><\/ul><\/nav><\/div>\n<p>Embedding, engraving or <a href=\"https:\/\/www.katsbits.com\/codex\/boolean-text\/\">embossing text into a flat surface using Boolean<\/a> is relative straightforward. Curves and non uniform shapes however, present an entirely different challenge. There are two ways text can be made to Boolean non-flat surfaces; by manually shaping text to fit approximately (simple), or using a guide to fit more accurately (complex).<\/p>\n<blockquote><p><b>Design note<\/b>: as a general rule-of-thumb it&#8217;s preferable to edit non-destructively, that is, modifiers assigned to meshes should remain active rather than being applied so adjustments can be made as needed, negating rebuilds to change something. Using Boolean to engrave or emboss text into surfaces is no different in this regard.<\/p><\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"basic-boolean-setup\"><\/span>Basic Boolean Setup<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>For Boolean to work properly at least two objects are needed; a <b>target<\/b> and an <b>operator<\/b>. The <i>target<\/i> is the object affected by the Boolean process, the <i>operator<\/i> the object that does this. The basic set up then is to add a <b>Text<\/b> object &#8211; <b>Add \u00bb Text<\/b> &#8211; and in <b>Object Data Properties<\/b> [1] give it some initial substance, <b>Extrude<\/b> for example to make the flat text more three-dimensional. Once done, the Text can be converted into a mesh object ready for use &#8211; <b><i>Mesh \u00bb Convert \u00bb Mesh<\/i><\/b>.<\/p>\n<blockquote style=\"background-color: #ddecf3; color: #000;\"><p><b>Download<\/b>: <a href=\"https:\/\/www.katsbits.com\/files\/tutorials\/katsbits - boolean text curves.zip\">KatsBits &#8211; Boolean Text Curves<\/a> (c. 600KB, *.blend).<\/p><\/blockquote>\n<blockquote><p><b>Design note<\/b>: for more on <a href=\"https:\/\/www.katsbits.com\/codex\/boolean\/\">Boolean generally see here<\/a>, and here for <a href=\"https:\/\/www.katsbits.com\/codex\/boolean-text\/\">standard Boolean text<\/a>.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-text.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-text.jpg\" alt=\"Text object operator\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Text object that acts as the Boolean operator with some basic properties assigned [1] before being converted to a mesh &#8211; wireframe enabled for clarity.<\/i><\/p>\n<p>Once the text is setup, the object to be affected by it needs a <b>Boolean<\/b> modifier assignment. In <b>Modifier Properties<\/b> click <b>Add Modifier<\/b> then <b>Boolean<\/b> from the available options &#8211; <b><i>Modifier Properties \u00bb Add Modifier \u00bb Boolean<\/i><\/b>. In the panel that appears the basic properties can be set; the type of operation &#8211; <b>Intersect<\/b>, <b>Union<\/b> or <b>Difference<\/b>; the <b>Object<\/b> to target, e.g. &#8216;<i>Text.001<\/i>&#8216; [2]. These two steps set up the basic parameters needed for the text to Boolean the object when moved into position [3].<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-object.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-object.jpg\" alt=\"Target object of Boolean operation\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The parent mesh of a Boolean operation, a cylinder, showing the the text set as the target <b>Object<\/b> [2] operator (Text.001 in the above), and the resulting Difference effect [3] this has on the cylinder &#8211; wireframe shown for clarity. Text, being flat, only cuts into the mesh where it touches the curvature of the cylinder.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"simple-curves-boolean\"><\/span>Simple Curves &amp; Boolean<span class=\"ez-toc-section-end\"><\/span><\/h3>\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\/FFSHuuxD8_k?rel=0\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/div>\n<p>To emboss, engrave, indent or otherwise curve or shape text around an object, before conversion to a mesh the objects <b>Origin<\/b> [4] may need to be adjusted so text bends or wraps uniformly around this <b>Pivot Point<\/b>. To realign the text so the Origin sits centre-of-mass, in <b>Object Data Properties<\/b> with Text object selected, access the options under <b>Paragraph<\/b> [5] (click heading to expand if not visible) and adjust the <b>Horizontal<\/b> and <b>Vertical<\/b> settings under <b>Alignment<\/b> [6], e.g. <b>Horizonal: Center<\/b>, <b>Vertical: Center<\/b>. The text will realign itself center\/center relative to its Origin [7].<\/p>\n<blockquote><p><b>Design note<\/b>: the Origin is the point around which the meshes are manipulated or deform; in this context centre-mass equates to uniform deformation on all axes; off to one side or the other and text will warp based on that point (the object itself may need to be repositioned in Object Mode to compensate for the Origin&#8217;s realignment).<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-origin.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-origin.jpg\" alt=\"Default Origin of Text objects\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-alignment.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-alignment.jpg\" alt=\"Repositioned Origin\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Generally speaking the <b>Origin<\/b> [4 &amp; 7] of the Text object should be adjected to ensure the text curves uniformly. This is optional and depends on the type of deformation needed from the procedure. In <b>Alignment<\/b> [5] properties change the <b>Horizontal<\/b> and <b>Vertical<\/b> values both to &#8216;<b>Center<\/b>&#8216; [6].<\/i><\/p>\n<p>Next, to ensure the text deforms reasonably well a <b>Remesh<\/b> modifier can be assigned to reconstitute the text object so each letter is defined by quadradic faces instead of <a href=\"https:\/\/www.katsbits.com\/codex\/boolean-text\/#cleaner-mesh-text\">Planar surfaces as would be done using Decimate<\/a>. This creates a more formalised internal structure or topology.<\/p>\n<blockquote><p><b>Design note<\/b>: Remesh can be assigned while the text remains a dynamic vector-based object or after conversion to a mesh. The former (dynamic text object) accommodates changes of font, style, resolution and so on without unduly affecting Remesh itself. The latter (mesh object) does not.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-remesh-text-object.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-remesh-text-object.jpg\" alt=\"Changing font\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>If Remesh is assigned to text before conversion to a mesh it can be modified on-the-fly without negatively affecting the retopology that occurs.<\/i><\/p><\/blockquote>\n<p>With Text object (before conversion) or mesh (after conversion) selected, in <b>Modifier Properties<\/b> click <b>Add Modifiers<\/b> and select <b>Remesh<\/b> [8] from the Generate list &#8211; <b><i>Modifier Properties \u00bb Add Modifier \u00bb Remesh<\/i><\/b>. In the properties panel that appears click <b>Sharp<\/b> [9] and disable or deselect the <b>Remove Disconnected<\/b> [10] checkbox. The text will appear albeit in low, blocky resolution. To change this and increase the clarity of the text increase the <b>Octree Depth<\/b> value, initially until the entire object is visible or legible, for example <b>Octree Depth: 6<\/b>.<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><b>Important<\/b>: increases to <b>Octree Depth<\/b>, like Subdivision Surface, greatly increases the resolution of the mesh, which in turn increases the structure considered for a Boolean operation.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-remesh.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-remesh.jpg\" alt=\"Adding a Remesh modifier\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The <b>Remesh<\/b> [8] modifier will initially seem to &#8216;destroy&#8217; the object as it tries to reconstitute the underlying structure and rebuild it using quads instead of Planar surfaces as would be used with Decimate.<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-remesh-sharp.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-remesh-sharp.jpg\" alt=\"Enable Sharp\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Increasing <b>Octree Depth<\/b> essentially subdivides the mesh, bringing back the initially lost detail. Enabling <b>Sharp<\/b> [9] and disabling <b>Remove Disconnected<\/b> [10] ensures the effect applies to the entire object.<\/i><\/p>\n<p>Once the Text object is set up it can be converted to a mesh as normal. In the <b>Object<\/b> menu click <b>Convert<\/b>, then <b>Mesh<\/b> [11] &#8211; <b><i>Object \u00bb Convert \u00bb Mesh<\/i><\/b>. In the <b>Convert To<\/b> [12] overlay bottom-left enable <b>Keep Original<\/b> to keep and maintain the original Text object [13] (the new mesh is appended .001 to identify it from the original text).<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-convert.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-convert.jpg\" alt=\"Converting Text to Mesh\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>As always for Boolean operations, Text needs to be converted to a Mesh [11] before it can be used. Keep the original text object [12] so its easier to update and re-convert it if need be [13].<\/i><\/p>\n<p>With this done the mesh is ready for Boolean. However, when linked to the Boolean modifier as the operator <b>Object<\/b>, this will perform a standard <b>Intersect<\/b>, <b>Union<\/b> or <b>Difference<\/b> operation and won&#8217;t bend to fit the object. To address this two additional steps are needed; assigning a <b>Simple Deform<\/b> modifier and dropping in an <b>Empty<\/b> to act as the modifiers orientation target.<\/p>\n<blockquote><p><b>Design note<\/b>: depending on the type of deformation required other Deform modifiers can be used with differing results, Warp, Mesh Deform etc.<\/p><\/blockquote>\n<p>With this in mind, from <b>Modifier Properties<\/b> add a <b>Simple Deform<\/b> modifier from the <b>Deform<\/b> column &#8211; <b><i>Modifier Properties \u00bb Add Modifier \u00bb Simple Deform<\/i><\/b> [14]. The mesh may twist (default behaviour) or change shape slightly confirming assignment.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-simple-deform.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-simple-deform.jpg\" alt=\"Add a Simple Deform modifier\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>To bend the text mesh around something a <b>Simple Deform<\/b> [14] modifier needs to be assigned which twists the mesh by default in confirmation.<\/i><\/p>\n<p>Next add the <b>Empty<\/b>. From the <b>Add<\/b> menu select <b>Empty<\/b>, then any one of the available options, e.g. <b>Arrows<\/b> &#8211; <b><i>Add \u00bb Empty \u00bb Arrows<\/i><\/b>. This places the object at the cursors location. For this technique to work relative to the text mesh and it wrapping around the cylinder in the Scene, the Empty needs to be located relative to the text&#8217;s Origin. This can be done using <a href=\"https:\/\/www.katsbits.com\/codex\/snap\/\">Snap<\/a>. To do this first select the Empty then shift-click the Text creating a selection group. From the <b>Object<\/b> menu select <b>Snap<\/b> then <b>Selection to Active<\/b> &#8211; <b><i>Object \u00bb Snap \u00bb Selection to Active<\/i><\/b> [15]. The Empty immediately jumps to the Origin of the text object [16].<\/p>\n<blockquote><p><b>Design note<\/b>: as the text object&#8217;s Origin was set to center\/center prior to conversion this is where the Empty will snap, however, it <i>can<\/i> be manually moved or located anywhere using the manipulation widgets or numerically changing the Location, Rotation coordinates available in Object Properties or the Sidebar. Additionally, as the Empty is an orientation target or reference for the modifier, the type or specific form this takes has no bearing on the end result.<\/p><\/blockquote>\n<p>Now the orientation target is in place select the text mesh and in the <b>Simple Deform<\/b> modifier [17] set the Empty as the <b>Origin<\/b> target object using the eyedropper and selecting the Empty in the 3D Viewport, or selecting it from the <b>Offset the origin and orientation of the deformation<\/b> list (square icon with outline). As the text is to wrap around the cylinder (in this example) set the type of operation clicking the <b>Bend<\/b> button and setting the <b>Axis<\/b> to <b>Z<\/b>. This will wrap the text around the vertical pole defined by the Empty and based on the <b>Angle<\/b> set. Change this to alter how well the text deforms to match and wrap the object while continuing the Boolean operation.<\/p>\n<blockquote><p><b>Design note<\/b>: if the Remesh modifier is assigned to the text object after conversion it can be changed [i], altering the degree to which structure is cut and formed based on the Octree Depth set while the effect is live and still being shaped by the Simple Deform modifier [ii].<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-remesh-boolean.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-remesh-boolean.jpg\" alt=\"Remesh assigned after conversion\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>If Remesh is assigned after the text object is converted [i], mesh structure can be changed on-the-fly while Boolean and Simple Deform are live [ii].<\/i><\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-empty-snap.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-empty-snap.jpg\" alt=\"Snapping Empty into place\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Using Snap [15] the Empty can be positioned at the text objects Origin [16]&#8230;<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-bend-axis-angle.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-bend-axis-angle.jpg\" alt=\"Bend, Axis and Angle\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>&#8230; which then accommodates the properties needed to deform the mesh to match the cylinder [17].<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-bend-boolean.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-bend-boolean.jpg\" alt=\"Wrapped Boolean\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>With everything set up correctly the Boolean operation will remain active and behave based on the operation set for that modifier &#8211; text mesh displayed as Bounding Box for clarity.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"complex-curves-boolean\"><\/span>Complex Curves &amp; Boolean<span class=\"ez-toc-section-end\"><\/span><\/h3>\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\/5kvvDgEgZ50?rel=0\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/div>\n<p>Using Boolean to indent, emboss or engrave text on more complex shapes requires a slightly different approach as the text operator needs to be guided more formally so it matches the shape rather than it being deformed to fit. The initial prep is basically the same so the target and operate objects should be <a href=\"#basic-boolean-set-up\">set up as normal for a Boolean operation<\/a>; text converted to a mesh [18]; Boolean modifier assigned to object that targets the operator (text), which ultimate has the text clipping or adding to the surfaces being acted upon [19].<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-sharp.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-sharp.jpg\" alt=\"Initial Boolean setup\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Initial Boolean setup is the same as for other types of operation; text object converted to a mesh and cleaned up using Decimate or Remesh [18]&#8230;<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-object.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-object.jpg\" alt=\"Boolean targeting text mesh\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>&#8230; which then operates on the mesh to emboss or engrave text into surfaces [19] &#8211; text displayed as Bounds for clarity &#8211; <b>Object Properties \u00bb Display As \u00bb Bounds<\/b>.<\/i><\/p>\n<p>Once the basic Boolean operation is set up, the next step is to define the path along which the text deforms and assign the modifier that facilitates that. As this needs to be relatively accurate the simplest way to do this is to select an edge loop within the mesh, detach it as a separate object and then convert that to a vector-based path. With that done the <b>Curve<\/b> modifier can be assigned to the text and targeted at the path.<\/p>\n<blockquote><p><b>Design note<\/b>: for sake of accuracy the path is converted from a segment of the mesh but can be a manually placed curve that&#8217;s edited into shape &#8211; <b><i>Add \u00bb Curve \u00bb [option]<\/i><\/b>.<\/p><\/blockquote>\n<p>First then, is to set up the path. With <i>target<\/i> object selected, that is the mesh affected by the text, in <b>Edit Mode<\/b> select an edge loop that&#8217;s to be used as the path [20] and from the <b>Mesh<\/b> menu copy it using <b>Duplicate<\/b> [21] &#8211; <b><i>Mesh \u00bb Duplicate<\/i><\/b> (or <span class=\"shortcutkey\">Shift<\/span> + <span class=\"shortcutkey\">D<\/span>). Press <span class=\"shortcutkey\">Esc<\/span> to reset the new loop and whilst still selected use <b>Separate<\/b> [22] to detach it as an independent object &#8211; <b><i>Mesh \u00bb Separate \u00bb Selection<\/i><\/b> (or <span class=\"shortcutkey\">P<\/span> \u00bb Selection). Exit <b>Edit Mode<\/b> and select the new edge loop object.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-path.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-path.jpg\" alt=\"Edge loop duplication\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>With an edge loop selected in Edit Mode [20] it can be duplicated [21] (shown in Wireframe for clarity)&#8230;<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-path-separate.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-path-separate.jpg\" alt=\"Separating the edge loop\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>&#8230; and detached as an independent object using <b>Separate<\/b> [22] ready for conversion (shown in Wireframe for clarity).<\/i><\/p>\n<p>The object may not be immediately visible or selectable because the previously assigned Boolean modifier has also been duplicated. This needs to be removed. In the <b>Outliner<\/b> highlight the corresponding entry and in <b>Modifier Properties<\/b> remove the Boolean clicking the <b>X<\/b> [23]. The object should then appear, which can now be converted to a path. To do this, from the <b>Object<\/b> menu select <b>Convert<\/b> then <b>Curve<\/b> [24] &#8211; <b><i>Object \u00bb Convert \u00bb Curve<\/i><\/b>. The object will now be a <b>Poly<\/b> based path.<\/p>\n<blockquote><p><b>Design note<\/b>: after converting nothing will appear to have changed because line-art and edge loops are almost identical in appearance. To confirm toggle into <b>Edit Mode<\/b> [iii] and check whether edge loop vertices are instead node points [iv].<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-path-confirmation.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-path-confirmation.jpg\" alt=\"Confirming path conversion\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Confirming conversion of the edge loop in Edit Mode [iii], check to see if vertices are now node points [iv] (other scene objects hidden for clarity).<\/i><\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-path-convert.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-path-convert.jpg\" alt=\"Convert to Curve\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Once the edge loop is separated and the Boolean modifier removed [23] it can be converted to a Curve [24] ready for use (other scene objects hidden for clarity).<\/i><\/p>\n<p>Before linking to the path object, the mesh needs to be positioned so the two Origins match. To do this, select the mesh then shift-click the path. From the <b>Object<\/b> menu select <b>Snap<\/b> then <b>Selection to Active<\/b> [25] &#8211; <b>Object \u00bb Snap \u00bb Selection to Active<\/b> (or <i><span class=\"shortcutkey\">Shift<\/span> + <span class=\"shortcutkey\">S<\/span> \u00bb Selection to Active (3)<\/i>). The text mesh will snap to the same location as the path based on the two objects Origin points [26].<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><b>Important<\/b>: the physical relationship between path and object is determined by the relationships between Origins. If both are in the same place the text mesh generally deforms along the path itself. If displaced the text still follows the path but may be some distance from the object its operating on. This behaviour can be changed altering the position of the text mesh in Object Mode, or moving the mesh in Edit Mode, relative to the path.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-origin.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-origin.jpg\" alt=\"Snap text to path\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>For Boolean the text mesh should be positioned to travel along the path, which is done by snapping [25] the two objects together so their respective Origin points [26] are in the same location (curved mesh hidden for clarity).<\/i><\/p>\n<p>With this done, to link the text mesh to the path a <b>Curve<\/b> modifier is used. To do this, with text selected, in <b>Modifier Properties<\/b> assigned a <b>Curve<\/b> modifier from the Deform column [27] &#8211; <b><i>Modifier Properties \u00bb Add Modifier \u00bb Curve<\/i><\/b>. In the panel that appears set the <b>Curve Object<\/b> [28] to the path just created; use the eyedropper to select the path in the 3D Viewport or select it from the <b>Curve object to deform with<\/b> list (white square icon). Immediately upon doing this the text object will warp and deform to fit the path where it can also be repositioned relatively using the manipulation widgets Move, Rotate and Scale.<\/p>\n<blockquote><p><b>Design note<\/b>: once linked to the path, if the text appears backwards this can be fixed in one of two ways by changing the direction of the path or changing the rotation of the text. To change the path, select the curve and toggle into <b>Edit Mode<\/b>. Here select all the path nodes [v] &#8211; <b><i>Select \u00bb All<\/i><\/b> (<span class=\"shortcutkey\">A<\/span>), then in the <b>Segments<\/b> menu click <b>Switch Direction<\/b> [vi] &#8211; <b><i>Segments \u00bb Switch Direction<\/i><\/b>. The text will flip the correct way around (may need to be repositioned along the path).<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-direction.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-direction.jpg\" alt=\"Inverting a Curve\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>If the text appears backwards it can be reverted the correct way round by flipping the direction of the curve in Edit Mode using <b>Switch Direction<\/b>.<\/i><\/p>\n<p>To change the text mesh, with it selected, in the <b>Sidebar<\/b> [vii] or <b>Object Properties<\/b> [viii], change the <b>Z<\/b> value for <b>Rotation<\/b> to <b>180<\/b>, i.e. <b>Rotation Z : 180<\/b>. The mesh will flip around the Z axis to face the right way (changing the orientation of the text itself can be done on multiple axes whereas the path can only be reversed).<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-rotation.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-rotation.jpg\" alt=\"Flipping text along a path\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The text itself can be inverted from the <b>Sidebar<\/b> or <b>Object Properties<\/b>, simply change the Rotation value appropriately, i.e. 180.<\/i><\/p><\/blockquote>\n<blockquote style=\"background-color: #9d2600; color: #fff;\"><p><b>Important<\/b>: depending on the type of path described certain types of Boolean operation may have issues crossing what is in effect a positive or negative coordinate threshold, i.e. 1.000 vs -1.000 or face normals being concave versus convex. In these situations Boolean sections may disappear or render incorrectly relative to what may be wanted, the effect embossing or engraving entirely in a surface. The issue can be resolved to a degree changing the <b>Solver<\/b> for the Boolean operation from <b>Exact<\/b> (default) to <b>Fast<\/b>.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-broken.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-broken.jpg\" alt=\"Incomplete Boolean operation\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The complex nature of surfaces that curve in more than one direction can cause issues for certain Boolean operations, which result in incomplete or broken renders.<\/i><\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-modifier.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-modifier.jpg\" alt=\"Adding a Curve modifier\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>With path now available and objects positioned where they need to be a Curve modifier [27] can be assigned to the text mesh&#8230;<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-target.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex-target.jpg\" alt=\"Boolean text fit to path\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>&#8230; which is then targeted, via the <b>Curve Object<\/b> setting [28], at the path, which the text now conforms to and follows.<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-complex.jpg\" alt=\"Boolean on complex cuve\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Text mesh and background merged using a Boolean operation (Union), text following a path and deforming dynamically to fit as its moved and manipulated.<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"compound-curves-multiple-axis\"><\/span>Compound Curves (Multiple Axis)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Generally speaking text embossed or engraved around or across curved surfaces using Boolean more often than not run in one direction or along a single axial plain however that might be shaped &#8211; an extruded &#8216;S&#8217; shape for example. For surfaces that curve on multiple axis this setup needs to be adjusted through the inclusion of additional modifiers catering to specific axes.<\/p>\n<blockquote><p><b>Design note<\/b>: due to the way meshes deform when traversing a curve it may lead to issues when other axes need to be considered even though the set-up may be correct.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-single-multi.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-single-multi.jpg\" alt=\"Single vs multi axis orientation\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Embossing or engraving text is usually done along one axis (image-left) making it easier to setup. On the other hand multiple axes (image-right) need a slightly different approach.<\/i><\/p>\n<p>To accommodate multiple axes manually, <a href=\"#boolean-text-simple-curve\">set up the initial deformation as described for Simple Curves above<\/a>, that is, text mesh positioned where it intersects the target object, Boolean assigned to object being modified and text assigned a <b>Simple Deform<\/b> [29] modifier (optionally Solidify and\/or Remesh depending on how the text is given thickness and definition) that&#8217;s targeted at an <b>Empty<\/b> used to define the modifiers deformation orientation. This will Boolean the the two meshes around one axis, which in-turn may result in a partial effect if text doesn&#8217;t intersect too deeply [30].<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-initial.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-initial.jpg\" alt=\"Manually deforming a text mesh\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>To accommodate multiple axes set the target and operator up as for a single axis curve with <b>Simple Deform<\/b> [29] modifier assigned to the text that&#8217;s to be bent to shape.<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-partial-clip.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-partial-clip.jpg\" alt=\"Partial Boolean\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Bent around a single axis Boolean doesn&#8217;t properly penetrate the mesh top and bottom [30] (text hidden for clarity).<\/i><\/p>\n<p>To address this, with text mesh selected add a second <b>Simple Deform<\/b> modifier [31] and make sure it sits <i>below<\/i> the first instance, then changes the settings to match so; <b>Bend<\/b> as the type, <b>Origin<\/b> to use the same Empty as the first modifier instance, and <b>Axis<\/b> to <b>X<\/b> (or another axis other than the one initially used in the first modifier instance). Finally change <b>Angle<\/b> to bend the mesh so top and bottom [32] now clip.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-second-modifier.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-second-modifier.jpg\" alt=\"Second Simple Deform modifier\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Adding a second instance of the <b>Simple Deform<\/b> modifier [31] to cater to a second axis around which text should bend, resulting in top and bottom [32] of text properly clipping (text hidden for clarity).<\/i><\/p>\n<p>If the surface affected curves on all three cardinal axes, X, Y and Z, then another final instance of Simple Deform can be added to accommodate the axis not previously covered. With text mesh selected, again add a <b>Simple Deform<\/b> modifier [33] to the stack and change its settings to reflect the other instances [34]; <b>Bend<\/b> set as the type, <b>Origin<\/b> set to the same Empty and <b>Axis<\/b> set to <strong>Y<\/strong>. Finally change the <b>Angle<\/b> value to account for any bending or twisting that might be needed for the text to properly, positionally and proportionally intersect the mesh.<\/p>\n<blockquote><p><b>Design note<\/b>: when using separate Simple Deform instances to accommodate each axis, their order in the stack may also influence the effect, for example <i><b>Z<\/b> being above <b>X<\/b> and <b>Y<\/b><\/i> may cause a slight taper to the text, something that might be addressed switching the order so Z sits at the bottom. This can be done by click-dragging the panel handle [ix] upper-right corner of each panel and re-ordering them in the stack.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-panel-handle.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-panel-handle.jpg\" alt=\"Reordering modifier stack\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The order modifiers appear in the stack can have a positive or negative affect on the effects applied to projects. They can however be reorganised click-dragging the panel handle [ix] to move panel up or down the stack.<\/i><\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-third-modifier.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-third-modifier.jpg\" alt=\"Adding a third Simple Deform\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Adding a third instance of Simple Deform [33] then accommodate all three cardinal axes and straightens out the text [34].<\/i><\/p>\n<p>Where a path [35] has been used to define the general behaviour of the text mesh, <b>Simple Deform<\/b> instances can be included to accommodate axes not influenced by the <b>Curve<\/b> modifier [36]. For this, once the Curve path has been established, add a <b>Simple Deform<\/b> [37] modifier and set it up similarly as described above; <b>Bend<\/b> as the type, <b>Origin<\/b> set to an Empty target in the scene as described above, with <b>Axis<\/b> set appropriately. Finally change <b>Angle<\/b> to adjust the text to suit [38].<\/p>\n<blockquote style=\"background-color: #fc0; color: #000;\"><p><b>Important<\/b>: the underlying set up that defines how a text mesh conforms to a path differs sufficiently from using other deform modifiers that their behaviour may be affected as a result. This might mean Simple Deform not behaving quite the same way despite being set up as it ordinarily would be.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-curve-incomplete.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-curve-incomplete.jpg\" alt=\"Text not warping to fit\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>When following a path [35] text will only do that, follow the path, it doesn&#8217;t deform or shape itself [36] in any other way so gaps can appear&#8230;<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-curve-deform.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-multi-curve-deform.jpg\" alt=\"Text warps to fit mesh\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>&#8230; the solution is to add a <b>Simple Deform<\/b> [37] modifier to adjust the mesh along specific axes to compensate [38].<\/i><\/p>\n<h3><span class=\"ez-toc-section\" id=\"subdivision-surfaces\"><\/span>Subdivision Surfaces<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In most instances the use, or presence, of a <b>Subdivision Surface<\/b> modifier in the modifier stack won&#8217;t adversely affect indenting, engraving etc. text into surfaces using Boolean so long as modifier stack order is correct; Subdivision Surface must sit before (above) Boolean. If not the Boolean operation becomes the basis upon which Subdivision acts, which distorts the result. This should be the reverse; Boolean should always act upon a subdivided surface, never the other way around.<\/p>\n<blockquote><p><b>Design note<\/b>: Subdivision Surface may cause meshes to clip or occlude Boolean text. To compensate edit the mesh carrying the Subdivision Surface modifier and\/or repositioned or adjust the texts curvature to compensate.<\/p><\/blockquote>\n<p>If a Boolean operation has already been performed but has not been &#8216;made real&#8217; (Apply), add a Subdivision Surface Modifier &#8211; <b><i>Modifiers \u00bb Add Modifier \u00bb Subdivision Surface<\/i><\/b>. It should initially appear at the bottom of the stack below other modifiers. Click-drag the manipulation handle top-right [39] and position the panel above the Boolean instance [40]. This reorganises the stack and instantly corrects the active operations.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-subdivision.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-subdivision.jpg\" alt=\"Subdivision, curves and Boolean\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Adding more modifiers to the stack places them at the bottom below others. To re-order modifier click-drag the panel manipulation handle top-right [39]&#8230;<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-subdivision-stack.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 100%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/boolean\/boolean-text-curve-subdivision-stack.jpg\" alt=\"Subdivision stack order\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>&#8230; and drag the panel above any Boolean modifiers that might be present in the stack [40]. This corrects the operation order and fixes the operation.<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":6264,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,230],"tags":[793,613,882,671,889,609,887,312,890,888,891,886,520,892],"class_list":["post-6190","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-tutorials","tag-3d-text","tag-bevel","tag-bfont","tag-boolean","tag-curve","tag-empty","tag-font","tag-modifiers","tag-path","tag-remesh","tag-simple-deform","tag-solidify","tag-vector","tag-warp"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/6190","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=6190"}],"version-history":[{"count":66,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/6190\/revisions"}],"predecessor-version":[{"id":6322,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/6190\/revisions\/6322"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/6264"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=6190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=6190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=6190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}