Open mbartlett21 opened 5 years ago
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 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
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 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
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.
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!
+1 for reopening and migration to Cura
+1 for reopening
+1 for reopening
What would you like to have re-opened then? This ticket is already open.
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 ;)
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
Depends on how fast you expect to print. Normally the top layer is slow anyway to get a nice looking finish.
That will be a game changes for 3d printing. But I wonder if this feature request should be opened in CuraEngine instead?
We generally prefer to group them here in the Cura repository instead. More people reading it, you see.
This is an amazing features ,+1 to implement it in the next versions.
+1
+1
+1
+100 to be honest... that could make the top surface look so great and reduce the time to sand it afterwards
+1
+1
+1
Using Slic3r there is an experimental version out there: https://github.com/Zip-o-mat/Slic3r/tree/nonplanar
+1!
+1
+1
+1
+1
+1
+1
I'd love to see nonplanar mode in Cura, especially since my experience with Slic3r's output has been less than stellar.
Also experimented with this feature on Zip-o-mat's Sli3r fork. Would love to see something similar in Cura. It was mentioned that this used to be on the Cura roadmap... is that still the case?
I'd like to see it in Cura, too
+1
+1
It might not do anything for print strength or quality of curves, but what about just randomly varying layer height at different places in the same layer? An algorithms could be used so that no point was ever more than half a mm below the plane where the print is "supposed" to be, but the layer thicknessses would be random and uneven, eliminating the obvious layer lines look.
You'd just have to randomly choose regions to make thinner, then eventually start making them thicker again to bring them up to the proper place.
It might not do anything for print strength or quality of curves, but what about just randomly varying layer height at different places in the same layer? An algorithms could be used so that no point was ever more than half a mm below the plane where the print is "supposed" to be, but the layer thicknessses would be random and uneven, eliminating the obvious layer lines look.
You'd just have to randomly choose regions to make thinner, then eventually start making them thicker again to bring them up to the proper place.
actually, that's a good point. if you could create a regular zigzag or 3D ripple on the z-axis that each layer would follow, you could essentially remove layer lines from being a break point in shear forces. tensile strength may weaken a bit, but it would give each layer more surface area to resist bend-breaks and shearing along each layer.
what you're talking about can be pretty well done already if you're willing to use fuzzy skin. The issue with varying flow and nozzle height like that is that height changes are the slowest movement most machines make, and anything but the best calibration would produce blobs and zits if you did that, because of the minute lag the print head receives from mechanical stresses. However, a very small perlin displacement field for the height of extrusion would do exactly what you're talking about.
the issue is that cura is primarily not a 3D slicer. it slices things in 2 dimensions then calculates how to fill them, because of the libraries it uses, so the displacement field would require you to put line segments at regular intervals so there's enough points (line ends) for the perlin field to displace and leave the smallest gaps possible. file sizes would reach gigs pretty fast even with my interpretation, I think. That also increases firmware lag in some cases, if it's too dense.
+1 for non-planar printing!
+1
+1
+1
+1
It might not do anything for print strength or quality of curves, but what about just randomly varying layer height at different places in the same layer? An algorithms could be used so that no point was ever more than half a mm below the plane where the print is "supposed" to be, but the layer thicknessses would be random and uneven, eliminating the obvious layer lines look.
You'd just have to randomly choose regions to make thinner, then eventually start making them thicker again to bring them up to the proper place.
Someone tried this https://hackaday.com/2016/07/27/3d-printering-non-planar-layer-fdm/
bump here!
Wouldn't it nice if one could print nonplanar curved top surfaces? These are often used in industrial design, e.g., here:
I imagine that most of the layers would be printed normally, but then a few nonplanar ones on top, and finally nonplanar ironing. Something along these lines (section view of the layers):
+1 wait!! +2!! :-)
Just came across https://yewtu.be/watch?v=1i-1TEdByZY marketing non-planar 3D printing.
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:
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