Oh hey there!
It’s been a while since I’ve delved into any technical 3D modeling projects. I thought I’d change that today by talking a bit about one of the most crucial parts of modeling for 3D printing: overhangs.
Layer-based 3D printing consistently beats other manufacturing processes in its ability to create complex, self-intersecting geometry. For example, I used interlocking parts in Puzzle X to form the internal mechanisms without requiring any assembly in post-processing. 3D prints can vary the percentage of plastic used internally to support the part, a feature referred to as “infill.” Parts can be printed with cavities that would be difficult or impossible to replicate with processes like injection molding, whose geometrical limitations are far more stringent than layer-based 3D printing.
As great as layer-based 3D printing is at printing some types of geometry, it falls apart quickly on parts that break a few key rules, defined by gravity and tension.
3D prints have a variety of different infill types, as generously demonstrated by the best treefrog ever.
Most common types of 3D printing might be contemptuously referred to by CNC machinists as “2.5D,” since planar 3D printing isn’t really a 3D process – it’s a 2D process repeated for hundreds of layers until a three-dimensional part starts to form (non-planar 3D printing not included). This means that every layer of molten material must be supported from below by some structure, or else it droops down into the print area, largely ruining the accuracy of the part. This is the effect gravity has on 3D printing.
Slicers account for this fact, and give the designer the option to automatically generate a tower of “support material” underneath overhanging layers, reducing the impact gravity has on printing. These auto-generated supports have improved greatly over the past 5 years, but they still are far from perfect: the first and most prevalent issue is that they use extra material to produce, and are wasted as soon as the print completes. For expensive or environmentally unhealthy materials, this induces a huge print cost, which incentivizes designers to create models that can be printed with as little auto-generated support material as possible.
Tension within extruded plastic opposes the effect of gravity. I like to explain this property with a visual: imagine trying to pull a garden hose across a chasm. As long as there’s a substantial force of tension acting on the rope, from your hands and the hose reel, the hose will remain mostly horizontal. As soon as your grip on the hose slips, however, it’ll begin to droop into the chasm. Extruded plastic acts similarly within tool movements. I’m excited to talk more about the effects of tension on overhangs later on.
However, before I delve into my own process, I should mention a few well-known strategies to avoid auto-generated supports. There are dozens of these, so I’ll only touch on the most useful ones I frequently employ.
Model-in supports are exactly as their name suggests – supports the designer creates within the model itself. These can be included within the base file, as with the Ultibot below, or as a separate file added into the slicer. There are advantages to each approach; having supports in a base file simplifies the process such that any user can simply import the model and hit print. However, this complicates the design process for the supports, and may decrease their effectiveness due to the slicer’s inability to differentiate them from the base model. On the other hand, model-in supports added via a separate file allow more advanced users to change part-specific settings in advanced slicers including Simplify3D and PrusaSlicer. They’re also far easier to model. However, they require the end user to be knowledgeable enough about their slicer to adjust settings accordingly.
Personally, I use model-in supports rarely, often for aesthetic purposes. Here’s a model I made a number of months ago that uses separate file model-in supports to produce a neat wireframe look:
This wireframe controller mount uses model-in supports to allow it to print long, off-axis bridges, as well as non-bridgeable circular profiles.
And here’s what model-in supports can look like for a file where supports are within the base file:
For many reasons, model-in supports should be used only when entirely necessary. They provide some extremely limited advantages over modern auto-generated supports; they require extra modeling time, and still waste material. Fortunately, there are quite a few other techniques that can help eliminate the need of model-in supports.
The 45 Degree Rule
Generally, 3D printer-friendly models abide by the “45 degree rule,” which is a general rule-of-thumb to keep vertical angles below 45 degrees to vertical. As the slicer generates layers, this rule ensures that no extrusion lines have less than 50% of their width supported – of course, given that the set extrusion width is less than the layer height (which is essentially a slicing rule in and of itself).
This rule is useful for many features, including vertical holes or arcs that increase in steepness dramatically as they close, outset features that have free “chamfer-able” space beneath them, and internal ceilings that can afford superfluous material. Personally, I use it in just about every part I design – Puzzle X actually uses the 45 degree rule on the internal mechanisms used to make it work.
The process for using the 45 degree rule is simple: add angled chamfers wherever it’s feasible. Angus at Maker’s Muse has an excellent tutorial for using the 45 degree rule to eliminate artifacts in vertical holes.
However, there are quite a few cases I’ve come across where limiting a vertical angle to 45 degrees is impractical. As an example, you might have an H-shaped part where the middle section is unsupported. For cases like this, where a part feature bridges two points parallel to the build plane, the printer performs “bridging” moves. This is the secret ingredient I use to print without supports: tension.
Remember the hose-and-chasm example I gave earlier? Let’s apply this to the print head: as the extruded material leaves the hotend, the bead of plastic resembles the hose, the nozzle resembles the hose reel, and the bridge contact point resembles your hand. The plastic from previous layers and the movement of the head pull the material into tension; just as the hose remains horizontal as long as you keep it taught, the bead of plastic doesn’t droop until the print head stops pulling.
To visualize this, I put together a few tests. Here’s one of them:
This test compares a sheer overhang with a bridge. The test on the left will print perfectly fine due to tension holding the plastic taught as it moves across the gap. On the right, however, the plastic will droop as soon as the head turns to complete the perimeter of the overhang.
I then printed some similar primitive objects to prove that this theory works in practice. The lofted profiles I used also prove that angled bridges also work, as long as they are made up of planar bridges themselves (meaning that the bridge is essentially a compound of many simpler bridges on prior layers). Here’s that next test:
Clearly, designing with bridges can be a lifesaver for designers looking to minimize the use of sacrificial supports. Of course, this rule is limited to a few use cases, just like the 45 degree rule. However, I’ve developed a method to exploit this rule to make my printer print perfect overhangs nearly every time, without support material, and without severely compromising geometry. It uses tension to produce bridging profiles, and as soon as I got it to work, it genuinely seemed like magic.
Bridge-Based Overhang Prevention (BBOP)
My method takes into account the process slicers use to find bridging profiles. Essentially, when the slicer sees a layer with two points separated by a gap, it tries to produce a path between them along the XY grid. Most current slicers are able to generate more effective bridge profiles by foregoing the grid and choosing the closest path between any two bridgeable points – for the sake of universality, I mostly model my parts accounting for the grid. By modeling parts in a way that forces the slicer to turn overhangs into valid bridges, I was able to trick my printer to print overhangs perfectly every time. I’m naming this process bridge-based overhang prevention, or BBOP for short.
As I mentioned previously, bridging only works if the print head moves continuously away from the initial bridge “anchor point” – my name for the location where the bridge move begins. So, if your part has features in the middle of the bridge, it acts as an unsupported overhang, not a bridge; the print head has to change directions, forfeiting the tension it produced on the tool’s outward stroke from the anchor point. This means that bridges only work if they have two valid anchor points connected with a straight line.
Before I go in-depth on the method, I’ll show you a scenario where it will be extremely useful. In this test, I show a model similar to the H-style test above, with a square-shaped hole through the middle:
The main reason this part will fail is because there is only one valid anchor point on all the bridges connecting the wall to the hole. The slicer thinks that the hole is a valid spot to start or end the bridge, but the fact that the hole was produced with a complete overhang means that there will be no material to connect the bridge to. PrusaSlicer would decide to regard the entire underside of that bridge as an overhang for auto-generated supports for that reason. That’s why I named my method bridge-based overhang prevention: it uses the properties of bridges to prevent the slicer from regarding bridges as overhangs in situations like this.
Here’s the modified mesh’s new bridging toolpaths:
As you can tell, the toolpaths that created invalid bridges have now been replaced with bridges that will succeed; these bridges print perpendicular to the previous layer’s bridges. The original model had two distinct sections on the bottom of this part’s ceiling – bridges and overhangs. The bridge areas are preserved, while the overhang areas are removed by bridge-based overhang prevention. In the case of this test part, this process is extremely simple:
However, it’s more than likely that parts have non-rectangular holes in them. What happens if, for example, you have a counterbored hole in a part ceiling? Here’s an example of what that might look like:
The fix for a situation like this is a bit more complex than a rectangular profile, but it’s essentially the same process: find which areas are designated as overhangs, and remove them with an extrusion the width of a layer line (I tend to use 0.4mm, as very few printing profiles actually use layer heights above 0.350mm). Here’s what my solution looks like:
This process involves four separate extrusions comprised of two sketches. Each one has an extrusion depth of 0.4mm. The process leaves some rounded corners that are not technically bridges, but with small holes like this one, the printer will successfully produce the feature regardless.
These tests show that bridge-based overhang prevention would save tons of material by entirely removing the need for any automatically generated support material. See for yourself:
The slicing statistics show that the non-BBOP test (left) will use an extra 2.12 grams of material than the BBOP-improved test (right). This may not be much in the case of this test, but for more complex parts, the extra material costs increase dramatically.
If you’d like to check out an uploaded model of mine that uses BBOP to print crazy overhangs with no supports, I’d recommend you take a look at my Ultimaker Original + Spool Holder that I designed a while back. It’s a pretty incredible example of how magical BBOP can actually be for real parts. The video, specifically, is super satisfying.
You may be thinking to yourself, “Hey, these test models are great, but are these strategies actually useful in real life?”
This is a corner brace I designed for my Werder XL1 MK0 RepRap 3D printer. Within it, all three techniques were used. There are sheer overhangs, much like the L-shaped test from before, and improper bridge profiles all over the place. Luckily, I was able to work around all those issues using tiny model-in supports, the 45 degree rule, and bridge-based overhang prevention. Check it out:
And, just out of curiosity, I tried slicing the above model with and without support material:
Sliced with support material (left), the part will require 3.74 grams more material than without (right). Even more shocking, however, is the difference in print time: roughly an extra hour for support material. This part, which usually prints in batches of 4, would require 4 extra hours of machine time to produce with supports.
Essentially, the point I’m trying to drive home is that small differences in parts are designed can create drastic effects on the “printability” of 3D models. That’s why every model I produce has 3D printing in mind: by using less support material, and keeping parts funky and low-volume, prints are more material-efficient.
If you want to help support my site, maybe pick up a cool t-shirt from my shop! It really does help to offset the cost of keeping this site online.
That’s about it from me. Hopefully my examples were helpful to you!
Thanks for dropping by, and keep on printing!