Cura icon indicating copy to clipboard operation
Cura copied to clipboard

Non-Planar Skin Layers

Open mbartlett21 opened this issue 5 years ago • 47 comments

Is your feature request related to a problem? Please describe. When slicing slopes with only a small deviation from horizontal (<10 degrees), it generates many steps on the slop

Describe the solution you'd like I would like to have skin layers printed with a slope, like in the example below.

Describe alternatives you've considered I did edit the gcode generated by Cura and add some sloped layers on the top, but this would be very tedious

Affected users and/or printers Everyone

Additional context Example results: image

Example GCode with sloped skin (Only tested on my delta printer. This will probable not work on a cartesian printer; I can upload another if you like) slopedsurface.gcode.txt

mbartlett21 avatar Jul 05 '19 12:07 mbartlett21

This is a big change! In a way, it violates one of the first assumptions that CuraEngine makes when starting a slice, that all layers are horizontal. The case in this ticket is an edge case but the more general problem is a very interesting one that Ultimaker's project managers had put on the long term road map from time to time under the nomer of "non-planar layers". The idea is that the bottom of a print would be flat, but the top of a print would follow the surface topography of the mesh.

The problem lies in the implementation, which makes this a long term project. Following the mesh surface turns many of our current algorithm from 2D into a 3D problem: collision avoidance, generating enough skin layers, calculating overhang, etc.

It'd certainly be interesting to research in this area. However as you said, it's mostly the Delta printers that would benefit from this since the rest can't move the Z position as fast. That makes the target audience for such a feature very limited and the cost-benefit ratio too low for us to work on this right now.

Ghostkeeper avatar Jul 08 '19 05:07 Ghostkeeper

@Ghostkeeper On Onshape, I have been trying an implementation of this. Currently, I project the layer surface to horizontal and do my infill work on that, then project it back to the original surface. I have found this to work fairly well, with the extrusion amounts being calculated relative to the original surface.

Here is an example GCode on a curved surface for my AnyCubic Delta machine.

EDIT: New GCode Test.gcode.txt

mbartlett21 avatar Jul 08 '19 07:07 mbartlett21

Currently, I project the layer surface to horizontal and do my infill work on that, then project it back to the original surface.

Yeah so that would cause the nozzle to crash into the surface if you have multiple pieces and it needs to travel past a raised piece of the print. It would also cause the skin to be too thick in some places and too thin in others.

Ghostkeeper avatar Jul 08 '19 07:07 Ghostkeeper

@Ghostkeeper Currently I have 3 layers that follow the topology of the mesh, then go to horizontal layers after that. I have assumed that all the horizontal layers are infill and the top two layers that follow the topology are skin

mbartlett21 avatar Jul 08 '19 08:07 mbartlett21

hmm... This is an interesting idea, though there's the inherent issue of crashing. However, this could just about solve the issue of terrible stepping artifacts on parts with shallow slopes!

I think, however, it would require some way to model the print head in order to avoid moves that would crash into a part, and an unintended consequence is that if a part gets too close to a heat block, chaos may ensue.

my first instinct would be to use the "overhang algorithm", but in reverse, to target shallow, near-horizontal faces, then use a frustum the height of the nozzle to both set the collision mesh and number of top-facing layers to target which ones are viable in a horizontal direction. some considerations:

-will you horizontally expand the layers to calculate which will be too close for the print head to reach

-if you want to get fancy, you could, for example, break it up every 5mm or so to target an entire model. this would be "stepped slanting" or something

-if you want to get really, really fancy, you could make it wait till the next layer would come into contact with the nozzle, then print slanted layers on all the layers currently due for them. this would be "adaptive slanting" or something

-the slanted areas will need their height removed, to produce the proper stepped layers, then the slanted layers build on top of that. How that will work in concave areas I do not know.

nubnubbud avatar Jul 16 '19 05:07 nubnubbud

It is called non planar printing and was added to Slicer, read https://www.reddit.com/r/3Dprinting/comments/ctxns4/nonplanar_3d_printing_functionality_added_to/ Anyway, I vote for this feature! It is GREAT!

kyjak avatar Aug 23 '19 12:08 kyjak

+1 for reopening and migration to Cura

thesec avatar Aug 26 '19 10:08 thesec

+1 for reopening

devonjones avatar Aug 28 '19 23:08 devonjones

+1 for reopening

AlbeRCLife avatar Sep 02 '19 20:09 AlbeRCLife

What would you like to have re-opened then? This ticket is already open.

Ghostkeeper avatar Sep 03 '19 13:09 Ghostkeeper

What would you like to have re-opened then? This ticket is already open.

Its probably confusion of the people with some other items. As far as this item includes non-planar printing upgrade, it is great ;)

kyjak avatar Sep 03 '19 14:09 kyjak

However as you said, it's mostly the Delta printers that would benefit from this since the rest can't move the Z position as fast

Wait, what? On Ender: https://www.youtube.com/watch?v=gmePlcU0TRw

adrianmihalko avatar Sep 03 '19 15:09 adrianmihalko

Depends on how fast you expect to print. Normally the top layer is slow anyway to get a nice looking finish.

kyjak avatar Sep 03 '19 20:09 kyjak

That will be a game changes for 3d printing. But I wonder if this feature request should be opened in CuraEngine instead?

alexander94dmitriev avatar Sep 06 '19 04:09 alexander94dmitriev

We generally prefer to group them here in the Cura repository instead. More people reading it, you see.

Ghostkeeper avatar Sep 06 '19 13:09 Ghostkeeper

This is an amazing features ,+1 to implement it in the next versions.

tom-truc avatar Sep 13 '19 14:09 tom-truc

+1

pwbecker avatar Sep 15 '19 08:09 pwbecker

+1

FrancescoTalotta avatar Sep 15 '19 14:09 FrancescoTalotta

+1

hunterirving avatar Oct 12 '19 02:10 hunterirving

+100 to be honest... that could make the top surface look so great and reduce the time to sand it afterwards

oezzi avatar Oct 16 '19 15:10 oezzi

+1

Aikufurr avatar Oct 26 '19 13:10 Aikufurr

+1

oswaldo-be avatar Nov 08 '19 21:11 oswaldo-be

+1

JannSchulte avatar Nov 23 '19 10:11 JannSchulte

Using Slic3r there is an experimental version out there: https://github.com/Zip-o-mat/Slic3r/tree/nonplanar

LostKatana avatar Nov 30 '19 21:11 LostKatana

+1!

Cugio avatar Jan 19 '20 00:01 Cugio

+1

ThomasSc avatar Jan 20 '20 10:01 ThomasSc

+1

Foozinator avatar Jan 20 '20 18:01 Foozinator

+1

sinanisler avatar Feb 02 '20 11:02 sinanisler

+1

straccio avatar Feb 14 '20 10:02 straccio

+1

raiscan avatar Mar 02 '20 11:03 raiscan