prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.79k stars 1.94k forks source link

Outer perimeter doesn't always follow on from inner perimeter #6741

Closed iso250 closed 3 years ago

iso250 commented 3 years ago

Version

2.3.3

Operating system type + version

OSX 11.4

3D printer brand / version + firmware version (if known)

Mk3s

Behavior

I print a lot of 2 perimeter thin walled objects using large nozzles. When the outer perimeter follows on from the inner perimeter the outer seam looks nice and neat. I'm not sure why but on some objects the slicer will plot the course of the inner perimeter, retract, then move the extruder to another part of the print and then start the outer perimeter.

Not only does this cause neatness issues for larger nozzle prints but it's also extremely inefficient.

There are certain things that almost always cause the problem to happen. For example, if I print a single object where this issue does NOT happen, if I duplicate the object and try to print more than one then the problem will manifest on every item but the first.

When the object splits in to multiple parts the problem will manifest itself on either the split part or below the split part. Never both.

The Nearest and Aligned seam position settings can sometime eliminate the problem. Sometimes it just moves the problem to different areas.

If an object needs supports that almost always causes the issue to monifest.

Sometimes switching the seam from aligned to nearest gets rid of it, as can rotating the object by 90 degrees. When that didn’t fix it I have to use superslicer as the problem didn’t exist there. The thing is I HATE super slicer. It doesn’t produce as nice a finish as PrusaSlicer.

Problem Example.3mf.zip

n8bot commented 3 years ago

What you are describing sounds like the opposite of the intended behaviour.

The slicer should plan the extrusion as grouped into islands. So, each little island will have all parts of it printed before moving onto the next island.

What you are describing sounds like the opposite of that: printing the internal perimeters of one island, and before completing all the extrusion on that island, moving to another one. Is this correct?

iso250 commented 3 years ago

It is completing islands one at a time but in a disjointed manner.

Imagine its printing a cube with 2 perimeters. It starts printing the inner perimeter at the front of the cube to the left and prints counter-clockwise. As soon as the extruder reaches the start point of that perimeter (the front left) instead of continuing on to the outside perimeter it is retracting, moving to the rear right and then starting the outside perimeter.

It’s inefficient and can cause seam issues.

n8bot commented 3 years ago

I understand now what you mean! I'm unaffiliated with prusaslicer/prusa team, so you'll have to wait a bit more for someone with expert knowledge. I was just trying to get further clarification. Thank you!

I can see how that could be unwanted.

iso250 commented 3 years ago

Anyone from Prusa had a chance to look at this yet?

bubnikv commented 3 years ago

@iso250 could you please post pictures here? It will saves us a lot of time.

iso250 commented 3 years ago

So let's use this as an example. This is seam set to aligned.

Screen Shot 2021-08-12 at 3 42 39 pm

When printing the inner walls you can see where the line begins.

Screen Shot 2021-08-12 at 3 43 15 pm

When it completes the inner perimeter it continues on to do the outer perimeter. That's how it should work.

Screen Shot 2021-08-12 at 3 43 25 pm

When you print multiples of the same object then issues appear. The first object prints in the manner I outlined above. The second object has errors in the path. Here, the first object has printed as it should. Now with teh second object it has started the inner perimeter...

Screen Shot 2021-08-12 at 3 44 13 pm

It completes the inner perimeter...

Screen Shot 2021-08-12 at 3 44 23 pm

But then it retracts and moves to another point...

Screen Shot 2021-08-12 at 3 45 08 pm

And then unretracts and starts the outer perimeter.

Screen Shot 2021-08-12 at 3 45 17 pm

iso250 commented 3 years ago

This is an issue for a number of reasons.

1 - When you're printing with a large nozzle and large layer heights the unretraction on the outer perimeter can look ugly.

2 - It shows that the process that calculates the path has something wrong with it.

3 - When using large nozzles you can see the seam. This prevents you from printing exact copies of the same object. (This is actually important to me.)

iso250 commented 3 years ago

I've also noted that rotating an object 90 degrees can sometimes cause or eliminate the issue. This makes no sense to me. I hope this will be addressed.

iso250 commented 3 years ago

I logged this issue before the launch of the previous incarnation of PrusaSlicer. The issue wasn't fixed. Now it seems that this version of PrusaSlicer won't be addressing this.

99.9% of all prints have perimeters. Perimeters are one of the most important paths that a slicer needs to consider and this issue shows that there is a problem with how the perimeter path is calculated.

Instead of this even being looked at they add a "feature" whereby the slicer recognises when a print may be a sign. Seriously, 5% of people may use that once or twice in their printing life, yet practically every print of theirs will have perimeters. Absolutely insane.

dartrax commented 3 years ago

When that didn’t fix it I have to use superslicer as the problem didn’t exist there. The thing is I HATE super slicer. It doesn’t produce as nice a finish as PrusaSlicer.

I think @supermerill would be interested in why superslicer doesn‘t produce the same nice finish for you. Improving that could be another possible solution for you. As you may know, Superslicer has a feature that connects the perimeters into one continuous loop, perfect for leaky nozzles!

iso250 commented 3 years ago

When that didn’t fix it I have to use superslicer as the problem didn’t exist there. The thing is I HATE super slicer. It doesn’t produce as nice a finish as PrusaSlicer.

I think @supermerill would be interested in why superslicer doesn‘t produce the same nice finish for you. Improving that could be another possible solution for you. As you may know, Superslicer has a feature that connects the perimeters into one continuous loop, perfect for leaky nozzles!

I don't know why but I've found that top layers on PrusaSlicer seem smoother. Yes, you can always iron but for what I print ironing would make the prints take a lot longer than I want.

Interestingly enough, the one loop perimeter isn't needed for what I print as SuperSlicer doesn't have the issue I' made this ticket about.

bubnikv commented 3 years ago

Fixed in PrusaSlicer 2.4.0-beta1