supermerill / SuperSlicer

G-code generator for 3D printers (Prusa, Voron, Creality, etc.)
4.11k stars 519 forks source link

Add support for detecting Upper overhangs #3851

Open lettore opened 1 year ago

lettore commented 1 year ago

I'm printing many double wall objects without infill and I'm often incurring in the problem where top surfaces angled more than 45° aren't printed well. image Detail of the top view image This is the bottom view image The geometry is the same but the difference is that Superslicer correctly detect the bottom as a Overhang and slow down the print speed accordingly but doesn't the same on the upper face. image Looking at the sliced section it's obvious that the inner wall is an ovehang, and with that circular shape the extrusion tend to be pulled inside the print because it have not enough time to stick to the previous layer. So I think it will be useful to detect not only "negative" overhangs ( with negative I mean the classic ones) but also "positive" overhangs.

neophyl commented 1 year ago

What settings do you have for Ensure Vertical Shell thickness and no solid infill over ? Without an attached project as requested its very hard to tell if it could be handled with a settings change or if there is an actual need for a software change.

lettore commented 1 year ago

The key point is, the face pointing down is printed correctly because the speed is slowed down automatically by the Overhangs detection. The same face pointing up instead is printed badly because it's printed at full speed. So my question is, it's possible to set as overhangs every surface angled more than x° not just one facing downward. As if it can be handled with settings change I can say yes, but it cost much in terms of time and material. Adding Ensure Vertical Shell increase the print time of 20% and is wasting 10% of material. image And this more printed material is added also to the downward surface that was already printed well because it have slower speed and more fan speed.

martian099 commented 8 months ago

Same problem here. Waiting for a fix

supermerill commented 8 months ago

I'm not sure what you want. Like neophil said, using the 'Ensure Vertical Shell thickness' and a bigger 'no solid infill over', there is infill put where you need it.

you don't want the infill, but still something to fill the gap?

Fabface commented 8 months ago

I assume the "problem" will go away if you import your model as a shell, because the model itself does not actually have overhangs where you want them to be detected - these overhangs only exist because you print without infill. If you import a hollow model, it will be detected correctly.

lettore commented 8 months ago

I assume the "problem" will go away if you import your model as a shell, because the model itself does not actually have overhangs where you want them to be detected - these overhangs only exist because you print without infill. If you import a hollow model, it will be detected correctly.

Yes but actually if I print without infill overhangs exist also "inside" the closed shell. So, as I said ,there's should be an option do enable overhang detection also on the inside of the print, from my point of view top surfaces with more than X degrees angle. Making an hollow version of the object obviously not work as it needs to be closed

Fabface commented 8 months ago

I assume overhang detection is performed on the 3D model as it is imported into the slicer, so if it isn't hollow, it will not detect any overhangs, but as you say it should be possible to detect slopes with more than e.g. 45° in both directions and then apply overhang settings to the inward slopes if it is printed without infill.

Making an hollow version of the object obviously not work as it needs to be closed.

This part I don't understand - hollow doesn't mean open - a football is hollow and still closed - the same can be done with your models if you create them yourself, every CAD program lets you convert filled solids into shells - if you just download your stuff, it might not be as easy.

supermerill commented 8 months ago

ok, I understand. when there is 0% infill, detecting overhangs over infill. mmm. Not that straitforward. Currently, periemters are computed in parallel. But here, you need to know where the previous perimeters are. So I need to change the workflow with this new setting enabled, so I can get the infill part of the previous layer, to use it as a 'not supported' area.

martian099 commented 8 months ago

Thank you for looking into it! Here are more similar posts that explains this issue better than I could: https://forum.bambulab.com/t/detect-internal-overhangs/45239, https://forum.prusa3d.com/forum/prusaslicer/internal-overhang-and-bridging-speeds/