Ultimaker / Cura

3D printer / slicing GUI built on top of the Uranium framework
GNU Lesser General Public License v3.0
6.21k stars 2.09k forks source link

Skin Direction Does not change between layers #4538

Open ctmakro opened 6 years ago

ctmakro commented 6 years ago

Application Version 3.5 installer from cura website

Platform

windows

Printer

custom printer

Two identical part on the plate. One of them is mirrored from the other. Normally the skin would change direction every layer, but I got this:

layer 79 (support top interface) image

layer 80 (skin image

layer 81 (skin image

smartavionics commented 6 years ago

You have not attached a project so I can only guess what the settings are. Anyway, it looks like the old bridged skin detection code has decided those skin areas are bridges (i.e. not supported) and has done its best to orientate the skin lines. If you enable the experimental bridge settings and set the bridge skin support threshold to not a high value (I think the default is 50 which should be OK) then those skins should not be considered to be bridges as they are above support. I hope this helps.

ctmakro commented 6 years ago

sorry for the lack of project file. will experiment bridge settings now, thanks for the advice. D_extrusion_slider_U2.zip


update: i changed the bridge settings, now the skins directions are interleaving again. Thanks @smartavionics , although bridged skin detection code might have a bug here since the entire area is very well supported.

smartavionics commented 6 years ago

although bridged skin detection code might have a bug here since the entire area is very well supported.

The original bridged skin detection code does not take into account the support. When the experimental bridge settings are not enabled, Cura reverts to using the original code.

Ghostkeeper commented 5 years ago

This bug still reproduces in the current Master version.

Ghostkeeper commented 5 years ago

CuraEngine is supposed to explicitly choose the line direction to be perpendicular to skin, but it seems to have an off-by-one issue there. You can see that even if you set the Z distance to an even multiple of the layer height (like 0.2mm in your case) then the line direction is still not perpendicular to the skin.

smartavionics commented 5 years ago

This bug still reproduces in the current Master version.

That's because the original bridged skin detection code is still the same. If you use the experimental bridge settings then this problem should not occur.

Ghostkeeper commented 5 years ago

It has nothing to do with bridging, since this affects only the lines that are not adjusted for bridges (because only those are supposed to be perpendicular to the support interface lines). If there was a fix in the experimental bridge settings then we should remove it from there and implement it to work only on lines that were not adjusted for bridges.

There is a method to ensure that skin lines are always perpendicular to support interface lines, but it seems to suffer from an off-by-one error. Because of how the lines alternate direction, it seems that the current code ensures that they are always parallel, which is the opposite of what we want.

Edit: Smartavionics was right. See below.

smartavionics commented 5 years ago

It has nothing to do with bridging, since this affects only the lines that are not adjusted for bridges (because only those are supposed to be perpendicular to the support interface lines).

OK, well in that case, just ignore what I said above.

Ghostkeeper commented 5 years ago

I'm sorry, @smartavionics I was wrong! I was confused because the bridging lines are in this case exactly 90 degrees rotated so I thought that the other lines were the normal skin direction. @rburema analysed this and established that it was indeed the old bridging routine that just doesn't pay attention to the direction of the supporting lines. You were right all along.

smartavionics commented 5 years ago

OK, no problem.

Ghostkeeper commented 5 years ago

We're planning now to remove the old bridging procedure (and this bug with it). This involves a couple of setting changes to ensure that the default behaviour is still the same as what it was until better profiles have been tuned for it:

That's our plan for fixing this bug and future bugs related to bridging. It's a bit of a refactor though so it'll take some time.

GregValiant commented 1 week ago

Is this still an issue with current Cura versions (5.8.0 and up). Can this be closed?