Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Holes on top surface (pillowing) #771

Open
luotinen opened this issue Mar 7, 2014 · 59 comments
Open

Holes on top surface (pillowing) #771

luotinen opened this issue Mar 7, 2014 · 59 comments

Comments

@luotinen
Copy link

luotinen commented Mar 7, 2014

On default settings Cura makes pretty sparse infill. On topmost layers the bridging of these large gaps is difficult. Observing the process the following appears to happen: part of the material sticks to the edges of the holes and forms cantilevers. Due to fan cooling the top and heat radiating, conducting and convecting from below part, the cantilevers bend upwards. After a few passes they act as wipers and result in gaping holes in the model or weakened and thinned centers of the holes.

In other software, the bottom and top infill can be set separately and the problem may be avoided in the slicer. The hardware solution is a stronger fan. For Cura I have some suggestions:

  • enable infill settings for top and bottom regions
  • automatic pillowing prevention (automatically start making more denser infill when approacing top layers and set fan on high)
  • enable fan boost for top layers
  • warn users about the consequences of using sparse infill

wp_20140306_004
Pillowing in top column (worse) and bottom flat regions (uneven quality) using default settings and layer height of 100 um.

@luotinen
Copy link
Author

luotinen commented Mar 7, 2014

wp_20140225_008
More extreme example showing pillowing in various stages

@Kenzu
Copy link

Kenzu commented Mar 7, 2014

I have same problem :-(

I have found out that it is done by infill less than 24%, because when the head crosses over to make the squares in the infill, small dots occur in the junction. This dot will then have the head to stop running for a moment when the top layer is laid. It starts a hole and it becomes worse at high temperatures. Because of that I always use 25% or more infill.

@luotinen
Copy link
Author

luotinen commented Mar 7, 2014

I tried a different slicer and it is definitely a problem in Cura. I can go as low as 10 % with other software and it automatically detects approaching top surface and creates a transition zone. In Cura this problem is less pronounced at 25 % infill, but the default 20 % already causes problems.

@nallath
Copy link
Collaborator

nallath commented Mar 10, 2014

This is a known problem. From what we've deducted, this has something to do with the new slicer engine using squares as infil, instead of alternating lines (Skeinforges solution). This creates sealed pockets of hot air which cause this effect.

We're working on this, but we've not found a completely working solution for all cases as of yet.

@daid
Copy link
Owner

daid commented Mar 10, 2014

Note that changing the infill amount and/or changing the top/bottom thickness helps for the pillowing. (or warts as we call them)

@illuminarti
Copy link

I proposed a 'sealed pocket of hot air' theory on the mailing lists 12-18 months ago for this effect. However I later came to think that it was nothing to do with that - but mostly just a problem with poor bridging.

See: http://umforum.ultimaker.com/index.php?/topic/1872-some-calibration-photographs/?p=17300

It is cooling related, but I saw it start to form even on the first layer, when there was no sealed pocket of hot air. The bottom of the filament catches the infill line as it passes over it, but the top keeps moving, causing the broken tail of filament to curl. Better cooling helps the filament to curl less in that circumstance.

I always thought it would be worth experimenting with doing the first layers of solid infill over grid infill at 45º to the sparse infill, so that some of the corners of the squares can be bridged first.

@daid
Copy link
Owner

daid commented Mar 10, 2014

My tests also show that it's not fully related to sealed air pockets. I adjusted the code so it does not generate pockets once, didn't yield much change. I did experiment a bit with the angles, but I didn't get much improvements yet.

@luotinen
Copy link
Author

wp_20140310_001
I replaced the stock Ultimaker fan duct with the Gijs high throughput duct (https://www.thingiverse.com/thing:21182) and the top warts disappeared. The low warps stay as the fan is on low power at lower heights.

For a software solution I propose 45deg rotated support pattern with 80 % of the bridge span length. This should make the bridges shorted and easier to connect.

80 pattern

@Salandora
Copy link

Hello, I had the same problems my solution ist to slow down the print in the regions where the solid infill begins, I'm printing with 80mm/s and slow down to 40mm/s. (20% infill)

@luotinen
Copy link
Author

This is a known problem of Cura. There are some workarounds:

  1. Increase top and bottom thickness to 1.0 mm
  2. Increase infill from 20 % -> 30 %
  3. Install a more efficient fan duct (or go dual fans)

The simplest code fix would go like this:

  1. Detect approaching local roof
  2. If infill has been set lower than 30 %, increase infill to 30 % for the layers directly beneath the roof to reduce warting

@m-vo
Copy link

m-vo commented Dec 11, 2014

+1 for a dynamic infill density, that is increased towards the top layers!

This would solve a lot of problems (and also save filament).

@luotinen
Copy link
Author

Bug confirmed in Cura 14.12.1
wp_20141219_006_crop

@hAmpzter
Copy link

hAmpzter commented Jun 8, 2015

I'm curious to why this was closed?
The problem is still there in 15.04 slicing engine..

@derekhe
Copy link

derekhe commented Jun 9, 2015

@BagelOrb yes, same problem for me.

@luotinen
Copy link
Author

luotinen commented Jun 9, 2015

@BagelOrb Bug confirmed in Cura 15.04.

@nallath nallath reopened this Jun 9, 2015
@nallath
Copy link
Collaborator

nallath commented Jun 9, 2015

Yeah, this is still not fixed. Mostly because this is a quite complex problem. Part of this is hardware, part of it is the software.

@luotinen
Copy link
Author

luotinen commented Jun 9, 2015

Which software approaches have been attempted so far? There are several suggestions from several different people in the thread above.

@hAmpzter
Copy link

hAmpzter commented Jun 9, 2015

But just because the problem is complex the issue shouldn't be closed.

Though why not do the proposed solution as luotinen proposed in his comment: https://github.com/daid/Cura/issues/771#issuecomment-37218393

Or maybe just put up a warning (red triangle icon with on hover text, NOT a popup) in Cura when you choose a small amount on the Bottom/Top thickness combined with lower than 25% infill?!
Then the user (that already are in advanced mode) can make an active choice to ignore the warning or change the settings.

@daid
Copy link
Owner

daid commented Jun 9, 2015

Material, cooling and print temperatures are the biggest factors in this.

@luotinen
Copy link
Author

luotinen commented Jun 9, 2015

For my part, I have to disagree:

  • for me (=Ultimaker Original) this happens with pretty much all materials
  • I've tried with additional and stronger cooling and it does help a little
  • I've tried printing temperatures (and speeds), but there is very little effect. [edit: see bottom of thread]

It seems to be a bridging thing like @illuminarti suggested in his message. When I shorten the bridge distance (=increase fill ratio), the problem disappears.

The problem with the increased cooling is that it is not very user friendly to the less tech savvy. Also, the fan is not on fully from the bottom layers, so you will still get the warts at low points. You will also get warts wherever the air blow is impeded by the built object itself.

@nallath
Copy link
Collaborator

nallath commented Jun 9, 2015

Well, for me printing slower and changing the temperature removed the problem. Odd.

@BagelOrb
Copy link
Collaborator

BagelOrb commented Jun 9, 2015

I have no idea why I closed this initally (perhaps a misclick?), but I have just implemented the idea of @luotinen, of which I thought was already implemented. Do mind that you need at least 4 layers top/bottom skin for it to be enabled.

Lower density infill regions (and thus higher density closer to roofs) are on the todo-list, but may be removed because it will be quite a hit on performance (computation could take 30% longer) and it is not really a trivial problem.

@hAmpzter
Copy link

hAmpzter commented Jun 9, 2015

Sounds nice @BagelOrb. :)
So If I understand you correctly and I have 0.1 mm in layer height I would need at least 0.4mm Top/Bottom thickness for it to take effect?

@BagelOrb
Copy link
Collaborator

BagelOrb commented Jun 9, 2015

Indeed. For smaller top/bottom thickness is it automatically turned off (in the engine, not the setting in the frontend).

@BagelOrb
Copy link
Collaborator

Testing didn't quite lead to the desired results.
Although this is a very small sample size, the skin_alternate_rotation setting doesn't seem to have a positive effect.

I am doubtful whether we should keep the option.
skin_alternate_rotation

@nallath
Copy link
Collaborator

nallath commented Jun 10, 2015

Looking at the drawing of @luotinen, it makes sense that it doesnt really help. The holes aren't that much smaller. It could help if we rotate the infill and then shift it by half the width and height
pillowpattern

@nophead
Copy link

nophead commented Jun 10, 2015

Print thicker layers or wider tracks so that the filament doesn't snap when
it tries to bridge the gaps. I.e. keep the filament cross sectional area at
least half the nozzle area.

On 10 June 2015 at 22:35, M. Vondano notifications@github.com wrote:

Just my two cents: When I did my first 3d prints I encountered the 'wart
problem' quite often. I elminated it by reducing speed and print
temperature. If I look at it now, I don't think that the bridges (alone)
were the problem, but the junctions of the infill (were there is twice as
much material each layer). I think whenever I had warts during prints the
printhead came too close to the surface (at these junctions) or even
scratched it on higher prints which caused them to bend up and prevent a
good bridging.


Reply to this email directly or view it on GitHub
https://github.com/daid/Cura/issues/771#issuecomment-110921613.

@BagelOrb
Copy link
Collaborator

@luotinen I don't think the curling up is the problem, but it is a symptom. Fact is that the gaps cannot be bridged.

Of course this problem can be solved by making the gaps smaller, or reducing speed, but I am trying to speed up the printing process and so I'm trying to reduce warts without introducing more lines or turning the speed down.

@nallath
Copy link
Collaborator

nallath commented Jun 12, 2015

This hasn't always been a problem. It started a while ago. I still believe that it has something to do with the way we create infill patterns.

@luotinen
Copy link
Author

The troubleshooting guide (http://support.3dverkstan.se/article/23-a-visual-ultimaker-troubleshooting-guide#pillowing) mentions a big jump with the pattern between 24 % and 25 %. Why is there the jump with the infill pattern?

infill_24
infill_25

@daid
Copy link
Owner

daid commented Jun 12, 2015

Because it goes from both directions each layer to one direction each layer around 25%.

@hAmpzter
Copy link

How about a solution with the holes gradually smaller but still with a bit more support from the underlying layers.

The second and third image could be printed as the same layer of course. But I separated them in images to make a better visual. Hope you by the pictures can see how think.

Regards,

new-pattern-1
new-pattern-2
new-pattern-3
new-pattern-4

@hAmpzter
Copy link

Now when I look into what I just sketched I realized it's the same idea as @nallath posted!

@nallath
Copy link
Collaborator

nallath commented Jun 15, 2015

@hAmpzter Great minds think alike ;)

@BagelOrb
Copy link
Collaborator

So what you great minds are saying is that we should alternate the rotation and shift of the infill instead of the skin?

@hAmpzter
Copy link

Yeah, but rotate and shift does not do all the work. The pattern when going diagonally must be minimized a bit for the pattern to fill in the holes a bit. It just makes the hole a little bitt smaller (if you watch the image the lines are a bit closer to the yellow x's than the holes between the x's). I'm not sure if just one layer of the red and green needs to be printed or if it should be maybe two of those.
A first try might be to make the 4 first (of the still total needed 8) top layers with a combination of red/green, blue, red/green, blue and then the 4 normal coating (is this the one you call skin?).

@BagelOrb
Copy link
Collaborator

Indeed, the line distance should also be scaled by a factor of sqrt(2).

The fully filled top is called 'skin', while the sparse infill inside the object is what I call 'infill'.

You seem to be talking of the skin, but the skin is not put down in two directions at the same layer, only the infill is. Doing two directions of fully filled skin at the same layer would be overextrusion by a factor of 2.

I don't think your idea enhances the infill.
Thing is that we can only apply this to every infill layer: alternate between straight and diagonal, instead of only doing this for the topmost infill layers.

@hAmpzter
Copy link

Just to get things clear, the skin then is the same number of layers calculated by dividing bottom/top thickness with the layer height?
And all of these (say 8 layers if we have 0.8 bottom/top thickness and 0.1 layer height) are filled 100% in two directions right?

So then the deal to do this would be to make maybe the last four layers of the infill (or maybe just two is enough) with this kind of structure to make a better support for the last layers on top to fill nicely when fill density is lower than 25%..
Is this possible to program and test if it solves the issue?

If this is successful maybe the amount of layers of skin don't need to be that many also, which will make an extra bonus! :)

@luotinen
Copy link
Author

Did a quick test to see if the infill really influences so much. Test methodology:

wp_20150616_006_crop

@BagelOrb
Copy link
Collaborator

@hAmpzter no, as I said, the skin layers are not filled in both directions, but in either direction, alternating between layers. Your ideas are based on the wrong premisses.

@luotinen Perhaps the infill structure should default to alternating line infill instead of square infill also for infill percentages below 25%

@hAmpzter
Copy link

No, we speak of the same thing. Just that I did not say two alternating directions. But that was what I meant.

I do not think the problem is how the layers are laid out, I think it is the fact that the amount of space between the lines when it is to fill over them is to long. The higher the infill the smaller that distance is. So I think we should gradually make that distance smaller with use of the places where it still has as much support as possible. Hence the fact that the red lines are crossing more lines than open areas.

If we make the infill alternate at low infill values wouldn't that just make the structure more fragile?

I think one of the things that makes the infill "curl up" when it tries to lay those last layers are the fan. You need a good fan, but when it will blow down in the cavities as it is creating the long lines the airflow will also aid the plastic to separate and curl upwards. So if we make the structure gradually stitch the air will still flow through and maybe not have as much impact on those.
Just a thought. :)

@nophead
Copy link

nophead commented Jun 17, 2015

You simply have to extrude more plastic so it doesn't snap when spanning a gap. If you can successfully print bridges then those settings will be able to close the gaps in the infill.

If not then the problem is the crossing filament in the sparse infill pattern is lifting your nozzle and so leaving a bump that breaks the flow when the next layer passes over it. As this problem seems to be Cura specific that may be the reason as extruding two lines over the same spot is unique to Cura I think.

@BagelOrb
Copy link
Collaborator

@hAmpzter you are still confused about terminology. Let's not talk of 'infill', but of 'inside' and not of 'skin', but of 'top'. (The infill doesn't curl up, the skin does!)

@nophead Indeed infill (inside) is similar to support and so top skin is similar to bottom bridges. However, there is no code separating the bottom first bridge from the bridge above it. It is therefore not easily implementable to have only the first layer of a bridge, or the first layer of the top skin print with more volume.

Implementing such a thing would be a considerable hit on computation time, and it would be very hard to print. The area for the first-top-skin-layer and for other top skin must either be printed separately, which causes the print to have less structural integrity, or in one go, in which case a single extrusion line must switch between higher and lower extrusion rates, corresponding to bridges and non-bridge-skin.

@nophead
Copy link

nophead commented Jun 18, 2015

Well you simply can't span gaps when the filament area is too small so the options are use 100% fill so there are no gaps or increase the filament area so it doesn't snap. I think Slice3r treats the first skin layer as a bridge to cope with this.

The way I avoid it is to always print with a cross section that can span a gap without snapping. I don't have special settings for bridges, so no need for flow rate changes. I print the whole object with the same flow rate for best quality.

@hAmpzter
Copy link

@BagelOrb Right now I'm more disturbed that you did not at all comment on what I said than the text it self.

And I can't see what was wrong with my comment. When I was talking about "the higher infill" and "low infill values" I was referring to the percentage of fill. And that is the "inside" you are talking about in your comment.
And yes, in my last sentence I accidentally said infill (inside) instead of skin (top).

When you have a higher "percentage of fill" the distance between the lines in the infill (inside) is smaller, hence lesser amount of distance needed to be bridged. Therefor I think that my theory to make the distances smaller (with making the distance gradually smaller between them) may work.

I still think my thought on why the plastic in the skin (top) is curling up because of the returning air-flow is a valid one. Is that anything that has been tried?

And as I said, if we make the infill (inside) alternate between the layers on the low percentages. Wouldn't that make the part much more fragile?

PS. In this comment I have put you new definitions in parentheses, I hope we now can engage in discussing the issue instead of what part in the print we are talking about. DS.

@BagelOrb
Copy link
Collaborator

@hAmpzter Yes I finally understand what you are saying. Damn the gods of confusion!

I do indeed think it might have something to do with airflow, but currently I do not have the time test the hypothesis.

Gradually changing the infill percentage is a hard thing to do, because on every layer top skin might be present and so at a single layer multiple areas of different percentage gradually less overlap can occur.

I've been thinking of implementing a two stage infill, where the lower infill is such that it covers half the higher infill lines. This is a feature which is on the roadmap, but currently not top priority.

@nophead, Yes the safest and easiest option is to just turn op the infill percentage and turn down the speed.

@luotinen
Copy link
Author

Did a quick test to see if the speed really influences so much. Test methodology:

wp_20150622_002_printspeeds

@luotinen
Copy link
Author

Suggested remedy: mark first layer of skin (top) as bridge. Limit the speed for succesful bridging. Speed can probably be recovered back to user setting after the first layer.

@BagelOrb
Copy link
Collaborator

You can already set the top/bottom speed separately from the rest of the speeds.

Separating the first top layer results in bad prints when the top of the object is not perfectly horizontal.

@luotinen
Copy link
Author

Is it possible to only set the Top (skin) speed? The bottom speed is OK and does not contribute to the problem. Then 100 mm/s could be achieved by setting 100 mm/s to global speed and 50 mm/s to Top speed. Then I have double speed and same amount of surface warting as with default settings.

Note: the original issue still remains: with Cura default settings there will be poor surface quality. To maximum user friendliness the default settings could be revised to produce smooth surfaces. [edit: see below]

@luotinen
Copy link
Author

Problem: Cura with higher than standard speed (e.g. 100 mm/s) will cause bulging or pillowing or warting of the top surface (poor surface quality).

Conclusions: The problem is alleviated with 25 % infill and solved with 30 % infill. However, the infill is not the problem. This is a bridging problem and can be solved by dropping the top (skin) surface speed. This does not increase material consumption and only slightly slows down the printing speed.

Remedy: Two things are suggested: first add a separate top speed control (currently it is a shared top/bottom setting). This will help to target the actions and maintain highest possible speed. Secondly, add a control box to advanced setting with [ ] Pillowing prevention. If set, it overrules the top speed and sets 50 mm/s (or printing speed if lower than 50 mm/s).

wp_20150627_002
Cura 15.02.1 with default settings, no heated bed, custom dual fans, model: https://www.youmagine.com/designs/ultimaker-axis-alignment-tool

@BagelOrb
Copy link
Collaborator

BagelOrb commented Jul 6, 2015

The top speed cannot be set separately from the bottom speed, since the areas for top and bottom are simply classified as top/bottom. Classifying them separately means that they have to be printed separately, which can result in disconnected areas.

Simply setting the speeds lower is a good fix, but not what I am looking for.

@hAmpzter
Copy link

hAmpzter commented Jul 6, 2015

I nearly always print in 50mm/s but I still get that problem. It's probably because I have the heated bed platform on and maybe because I normally have a warm area where the printer is.

@luotinen
Copy link
Author

luotinen commented Jul 6, 2015

Well it has been identified as a bridging problem and can be remedied with the typical bridging remedy (reducing speed). Slic3r solves it by classifying the first top (skin) layer as bridge. We could look into alternative bridging techniques? Or somehow scam Cura into believing this is an area to be bridged?

@BagelOrb
Copy link
Collaborator

BagelOrb commented Jul 6, 2015

Bridging is currently implemented quite naively. Currently bridging only determines the angle of the top/bottom skin. Indeed bridge areas should be identified and handled separately from the top/bottom skin. I agree that this could quite well solve the pillowing problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests