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

Enhancement: Do not slow down external perimeters to meet minimum layer time #5148

Conversation

igiannakas
Copy link
Contributor

@igiannakas igiannakas commented Apr 25, 2024

Ready for review - PR description updated 5th June '24.

This PR aims to allow the user to skip adjusting the speed of external perimeters to meet the minimum layer time threshold.

Problem statement:

When printing gloss like material, variations in external wall speed can cause significant change in wall shine, as the filament has less time to melt in the extruder.

The external wall speed variation can be caused by several factors:

  1. Slowdown for overhangs (the old classic version). By using the non classic version this is mitigated
  2. Slowdown of the entire layer to meet layer time targets

The artefact can be seen below. PLA print, at 220C where some areas are printed faster than others, causing a variation in gloss.

IMG_3871

Equally, having uneven external wall print speeds between layers can cause uneven extrusion as the extruder flow rate is not always ideal and it tends to under extrude the faster you print. In addition it can cause uneven material shrinkage resulting in what appears like "z banding".

Also different speeds tend to have slightly different optimal PA value which would cause slight variance in the external corner appearance.

What this PR does:

This PR enables the user to opt out of slowing down the external perimeter to meet minimum layer time targets. The outcome is a consistent external wall print speed (excluding slowdowns for overhangs) which should materially improve surface finish.

This option is available per filament as some filaments may benefit from this more than others and is consistent with the current convention of defining cooling parameters on a per filament basis.

image

Results:

Before:
image
(notice how the speed variations caused by the minimum layer time cause the external wall surface to create "bands". These may be visible as z banding in the final print. these are caused by the slight difference in time each internal sparse infill takes to print)

After:
image

Notice how the external walls are not slowed down but the internal features are.

Before:
image

After:
image

It is also compatible with multi material printing:
The white filament is with this setting on.
image
The white filament external perimeter speed is not slowed down
image
image

The feature respects slowdown for overhangs and extrusion rate smoothing as seen below:
image

Fixes #5147
Fixes #5573

@celtare21
Copy link

Really hope to see this integrated!

@Ataraxia-Mechanica
Copy link

Currently does not seem to be working. Can't wait for this to be a thing.

@igiannakas
Copy link
Contributor Author

igiannakas commented Apr 25, 2024

Currently does not seem to be working. Can't wait for this to be a thing.

New version is up, waiting for the build. Screenshots are up showing the difference.

@ramosglauco
Copy link

Big idea! I hope it is implemented soon.

@Ataraxia-Mechanica
Copy link

No idea why nobody came up with this idea till now, and why I didn't come up with this till I modded my 3d printer to print so fast that almost all things I print have to slow down due to cooling XD.

@Ataraxia-Mechanica
Copy link

Found one case where this would be extremely useful. When printing with "infill combination" on, the layers with infill would take significantly more time than non-infill layers, causing uneven outer surface. Printing the test model right now.

@Ataraxia-Mechanica
Copy link

Ataraxia-Mechanica commented Apr 27, 2024

In this case, the outer wall in 2.0.0 would slow down just enough to hit the VFA speed of my printer causing resonance, while with no outer wall slowdown POC, the outer surface is much smoother.
Tested with PETG, with belts overtightened to show the artifacts as much as possible.
Used inner/outer/inner wall order.

girdfinity-1x1x6-voron.zip

==========================================

slowdown
photo 1

==========================================

no slowdown
photo 2

@igiannakas
Copy link
Contributor Author

Thank you!

@SoftFever
Copy link
Owner

SoftFever commented May 1, 2024

Wow!
This is a fantastic idea!
It will be especially helpful when we print those cooling-sensitive materials.

@SoftFever SoftFever added the Community testers wanted Looking for community testers and feedback label May 1, 2024
@igiannakas
Copy link
Contributor Author

I’ll spend a bit of time working this feature as it’s by far incomplete right now, to get it to a better testing state ;)

@StuSerious
Copy link

@igiannakas let me know if you need some testing like I did for #4333 ;)

@igiannakas
Copy link
Contributor Author

igiannakas commented May 10, 2024

@igiannakas let me know if you need some testing like I did for #4333 ;)

Yes please - testing requirements are in the top post together with limitations. Please disable slowdown for overhangs as it doesn’t play well with it yet. Also try a small model - benchy is a good one as it has layer time variations accross the board (hull, top part where the windows are). This PR is not ready for daily use and only in a controlled environment as there are many things that don’t work yet - trying to demonstrate value and then I can devote time to productionise it.

please be aware that there is no option to enable yet - it’s always on in this Pr. So the before and after need to be done between the current nightly and this.

@Zibit-Meowe
Copy link

Just want to add I've been using this extensively for the last couple weeks. It's been amazing.

I've been getting the best large ASA parts I've ever printed. So far I haven't seen any strange behavior from slowing down for overhangs. But with ASA, my overhangs aren't a ton slower than the external walls anyway unless basically bridging.

I've only had one issue that I'm testing. With thin [basically 6 layer widths thick or less] walls that can't hit minimum time unless outer wall is slowed, and scarf around entire wall, there seems to be some strange behavior.

I don't want to speculate too much. I need to ensure it's something else. Probably just a scarf or general slicing bug.

I'll check against latest live now that I have a model that seems to show this more often than not. If it does end up related, I'll post some pictures.

Other that whatever that issue is, this has been the biggest increase in ABS/ASA print quality from any feature I've seen in a long time.

@Ataraxia-Mechanica
Copy link

Untitled
Other than this I think the option to disable outer wall slow down should disappear when "slow printing down for better layer cooling" is disabled?

@igiannakas
Copy link
Contributor Author

Lol yeah... I'll fix it :)

@igiannakas
Copy link
Contributor Author

Untitled Other than this I think the option to disable outer wall slow down should disappear when "slow printing down for better layer cooling" is disabled?

Fixed

@Disttrack
Copy link

I love this feature so much, I've been waiting for it for years! I have done some tests and the result is amazing!
IMG_20240615_214514
IMG_20240615_214537

@SoftFever
Copy link
Owner

SoftFever commented Jun 16, 2024

@igiannakas
I managed to find some time to review and test it.
I believe the changes are safe to include in the coming RC version!
Thank you for your fantastic work!

@SoftFever SoftFever merged commit 12861a6 into SoftFever:main Jun 16, 2024
12 checks passed
@igiannakas igiannakas deleted the POC---Do-not-slow-down-external-perimeters-to-meet-minimum-layer-time branch June 16, 2024 14:39
@igiannakas
Copy link
Contributor Author

igiannakas commented Jun 16, 2024

Awesome 🎉🎉🎉

@Zibit-Meowe
Copy link

Well, best laid plans and all that. First weekend I've been home since I posted last.

I did try printing the same objects again to reproduce the issue I referenced originally. I'm certain it was filament now.
I could only get it with one roll of overture [ I swear, I have no luck with Overture ] and I can't reproduce it with good filament.

Included are pictures of the only reproducible [across filament] defects I had. A better way to say it might be: These are the defects normally present that this doesn't solve. It only really shows in PETG with a color shifting affect. It's because of the minor shrinkage difference of the thin layer vs the thicker much slower layer below. It's there in the others, but there's no polarizing/color effect in those to enhance it.

These are the worst examples.

With broad face lighting, it's barely visible as a color difference.
20240616_124156

Flashforge Burnt Titanium PETG, brightly lit from steep angle above.
20240616_124226

Same lighting. Below is the overture crap. Not the same issue, but you can see on this one the crazy issues on the seam. Junk filament. I tuned it eventually, but the Flashforge I had tuned in one print and prints with zhop at 3 times the speed. Too much time to waste to save a few bucks a roll.
20240616_124230

I was able to mostly get rid of these issues on the Flashforge material by tweaking fan and layer time. But we're dealing with optical physics here. You move that wall in 0.01 mm in or out and you will have some change in perceived color as the angle of incidence changes. You can't feel the one on the right.

Speaking of which. I really do think this is why speed works when it seems layer time would be better. Now bear with me... it's amateur plastics scientist time!

You have a laminar flow of material which cools and crystalizes. How fast and at what temp it is extruded seems to affect the final crystal structure. It's likely related to how uniform the heating is. Keep the temp and flow [ because speed ] constant and you'll get consistent heat transfer on long stretches like walls. I'll ask one of the injection mold designers at work about it.

Oh and I still want an outer layer fan setting. ;D

Second issue I think is something unrelated to the change. I'm having strange issues with small gap bridging on text, but haven't got to test vs 2.0 or 2.1 beta. I think it's related to the number of upper layers and some interaction with Ensure Vertical Shell Thickness. When that isn't set to ALL, it goes nuts. Here you can see the anchoring is only about 10% wall width.

Screenshot 2024-06-16 125738

Gotta see if there's an open issue for that. Almost certainly not just this build.

Thanks everyone for your hard work!

@igiannakas
Copy link
Contributor Author

igiannakas commented Jun 16, 2024

Agree with you that speed is more of a factor compared to layer time- also because there is the factor of extrusion variation the faster you go. Typically the nozzle flow is not constant. Ie the faster you go the more you under extrude which can show as slightly thinner the extrusions, appearing like external wall artefacts.

Cnc kitchen has plenty of graphs that show extrusion flow rate compared to the ideal flow rate . It’s fairly typical to have a 2-3% variation in flow which would translate to a difference between a 0.42 and 0.4 extrusion line width. Some times and with some filaments that is easily visible…

then you also have variation in pressure advance with speed - I’ve seen deltas between 0.04 and 0.023 between a 50mm/sec and 200mm/sec print speed. So this would also play a factor especially for artefacts that show around corners.

So all in all, trying to keep speed as constant as possible for the surfaces that are visible I think is a big win :) But I do wonder why this has not been implemented before! In retrospect it’s so obvious!

@igiannakas
Copy link
Contributor Author

I love this feature so much, I've been waiting for it for years! I have done some tests and the result is amazing! IMG_20240615_214514 IMG_20240615_214537

That is indeed a big difference!! 🎉 exactly the use case this PR was trying to solve.

@tastyratz
Copy link

Speaking of which. I really do think this is why speed works when it seems layer time would be better. Now bear with me... it's amateur plastics scientist time!

You have a laminar flow of material which cools and crystalizes. How fast and at what temp it is extruded seems to affect the final crystal structure. It's likely related to how uniform the heating is. Keep the temp and flow [ because speed ] constant and you'll get consistent heat transfer on long stretches like walls. I'll ask one of the injection mold designers at work about it.

A bit off topic, but, this is something I've always thought about where concept of cooling and time/shift was thought of backwards when it comes to 3d printing.
When we know the volume of material being extruded and the temperature with which it's extruded we can probably calculate the amount of BTU being put into a printed part and better understand cooling if we can somehow calculate the material BTU, the heat transfer rate of a stationary nozzle (which applies BTU as a function of time over speed), and the amount of heat removed by cooling/fans while having a scalable offset considering chamber temperature making for more dynamic resilient prints. It's always bothered me that sliced files are assuming performance with a fixed chamber temperature and the slicer doesn't typically assume more chamber temperature scaling.
Some materials might hold more BTU, have a slower heat transfer/cooldown rate, etc. and that could be considered in material profiles.

All of this is a calculation math/science well beyond my capacity. I don't know if I'm making sense or not.

@mikeq3
Copy link

mikeq3 commented Jun 19, 2024

This feature made a huge difference on my K1-Max prints. I had everything dialed in and still had a slight ringing on the outer walls. After this setting was enabled the ringing is gone.

@ramorimdias
Copy link

I have been getting failed prints when this feature is active for two reasons I think:

  • in tall parts, at the end it prints too quick and even when slowing internal perimeters or infill, it cannot meet the minimum layer time
  • in some prints, some small shells that only external perimeters

For example: I've tried to print twice the mouse 002 shell from bambulab and get failed at the same part even after brim added.

WhatsApp Image 2024-07-06 at 08 41 51

WhatsApp Image 2024-07-06 at 08 41 51 (1)

Could we think in a way to bypass this option when the minimum layer time is not respected? This would avoid some of my problems, I think

@igiannakas
Copy link
Contributor Author

This failure is related to bed adhesion, not minimum layer time.

The minimum layer time artefacts show as “melted” perimeters where they have normally solidified. In this case I don’t see any perimeters suffering from low cooling - they are shaped correctly.

Suggest a few of things that will help you:

  1. Use hairspray or glue stick on the bed (I’m assuming it’s already clean, as in with a kitchen sponge and dish soap).
  2. Enable slowdown for overhangs if it’s not enabled and make sure slowdown for curled edges is enabled too
  3. Make sure your z hop is set up
  4. Make sure the right bed plate is selected in the slicer. Bambu applies automatically lower z offset to the textured plate and if you select the smooth pei or cool plate it won’t so you will get adhesion issues

@ramorimdias
Copy link

Yeah, I know that improving bed adhesion can help with this print. The thing is that I've rerun the print with the default slowing down and it printed flawlessly. I'm not trying to accuse anything but I thought it could have room for improvement for some cases if you haven't though about that.

I understand also that with such high speed external perimeters, the drag forces during extruding would be enough to tip the part off....

@igiannakas
Copy link
Contributor Author

igiannakas commented Jul 6, 2024

Yes of course, the reason it printed flawlessly when slowdown is enabled for all surfaces, is because the print was slower hence there were less forces on the part to knock it over.

However what really needs to be addressed is the underlying reason for the failure.

If the wall speeds are too fast for the nature of the model, the solution should be to reduce the wall speeds in the profile to something that better matches the model, not create exceptions in this feature.

Why I’m saying this? Imagine you printed 3-4 copies of this model on the same plate. Then the speeds on the top would not be slowed down due to minimum layer time, at all. Because you’re printing more copies, the others have time to cool down. To make matters worse the internal perimeters would also be printed at full speed too!

So your model would still fail because the profile speed is too fast and the nozzle would knock it over anyway, even though minimum layer time is effectively inactive.

no offence taken at all :) I just think the approach suggested above is backwards. Enable this option and just reduce the wall speeds to 100mm/sec or so which would allow you to both have excellent surface finish, consistent shine and address the bed adhesion issue :)

@ramorimdias
Copy link

This makes completely sense. You are right!

@raphael008
Copy link

raphael008 commented Jul 25, 2024

Hi @igiannakas
It seems that we have discovered the same issue(I linked your issue in my ticket, please see above). I have already submitted a ticket to Bambulab in May. But they still put the appearence enhancement feature in backlog I guess. Could you also submit a PR for this feature in Bambulab repo? Thank you so much for fixing this appearence issue.

@igiannakas
Copy link
Contributor Author

Hi @igiannakas It seems that we have discovered the same issue(I linked your issue in my ticket, please see above). I have already submitted a ticket to Bambulab in May. But they still put the appearence enhancement feature in backlog I guess. Could you also submit a PR for this feature in Bambulab repo? Thank you so much for fixing this appearence issue.

There are many factors that influence external print appearance, one of them being speed. This PR addresses the external wall speed only - and as such works best for shine variations. However as the internal perimeters are still printed slowly there will be or may be some deformation of the external perimeter if printing in inner outer mode.

id be curious to see your test results with this change using orca and report back if you can?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Community testers wanted Looking for community testers and feedback
Projects
None yet