Skip to content

Conversation

SoftFever
Copy link
Owner

@SoftFever SoftFever commented Mar 21, 2025

Description

Implement #8929
Change top surface pattern with archimedeanchords, in a hope to make it easier to determine the right flow value.

Update: Add logic to print Archimedean chords from inside to outside.
Inspired by jimcorner: https://makerworld.com/en/models/189543-improved-flow-ratio-calibration-v3#profileId-209504

Screenshots/Recordings/Graphs

Screenshot 2025-03-21 at 11 46 46 PM

Tests

@SoftFever SoftFever added enhancement New feature or request Community testers wanted Looking for community testers and feedback 2.3.1 labels Mar 21, 2025
@MxBrnr
Copy link
Contributor

MxBrnr commented Mar 21, 2025

Wouldn't concentric be a better choice by eliminating the PA and small area flow issues commonly found at the edges of the top surface? This chord pattern will still have those same issues, which seem the be the biggest confusions people have.

@SoftFever
Copy link
Owner Author

Wouldn't concentric be a better choice by eliminating the PA and small area flow issues commonly found at the edges of the top surface? This chord pattern will still have those same issues, which seem the be the biggest confusions people have.

In all flow rate tests generated by OrcaSlicer, edge regions should always be discarded as irrelevant. One should only check the center area.
The change is not intended to improve these edge regions.

@SoftFever
Copy link
Owner Author

Test shows very promising results!
IMG_4872

@Hammerfest
Copy link

Ok, thats very cool (and I just said it out loud in a voice call)

There are some filaments that are a PITA to calibrate, I REALLY wanna give this a spin, hopefully I get a chance but sadly not till Sunday night/Next week, watching this PR with interest.

@SoftFever SoftFever changed the title Use ipArchimedeanChords pattern for flow rate calibration Improve flow rate calibration: use ipArchimedeanChords pattern for flow rate calibration Mar 22, 2025
@SeeTurtlee
Copy link

would changing the top surface to archimedeanchords manually in the objects tab exactly replicate this? Or is there something more in the background where i should merge this PR to get the full results?

@MxBrnr
Copy link
Contributor

MxBrnr commented Mar 23, 2025

Wouldn't concentric be a better choice by eliminating the PA and small area flow issues commonly found at the edges of the top surface? This chord pattern will still have those same issues, which seem the be the biggest confusions people have.

In all flow rate tests generated by OrcaSlicer, edge regions should always be discarded as irrelevant. One should only check the center area. The change is not intended to improve these edge regions.

So then what benefit does the change actually give? I am not seeing it in the examples; looks equally easy to decipher to me either way.

@SoftFever
Copy link
Owner Author

would changing the top surface to archimedeanchords manually in the objects tab exactly replicate this? Or is there something more in the background where i should merge this PR to get the full results?

Yes, that’s essentially the change this PR introduces. You can manually modify the settings to test it.
Additionally, I’ve disabled gap filling in this implementation.

@dewi-ny-je
Copy link
Contributor

Why only top surface?

Cool idea, nevertheless.

@dewi-ny-je
Copy link
Contributor

dewi-ny-je commented Mar 24, 2025

Actually, was the change validated against the old infill?

I ask because if you think about it, the closer to the centre the tighter the curvature radius is, so that it might very well be that the printer reduces the print speed. This should be checked, since flow multiplier is speed dependent already at quite low speeds (no time to dig it up, but I saw graph with various recent high speed printers already deviating at 8 mm3/s).

Since the goal of this PR is to have the largest surface without change of flow/speed, wouldn't it be "safer" to simply use left/right infill for the top surface? instead of 45° as it is now. The artefacts due to the print head reaching the set speed would be limited to a small area on either side, and long straight lines would be used for most of the surface.

And no risks of a printer slowing down near the centre.

@Benik3
Copy link

Benik3 commented Mar 24, 2025

Actually, was the change validated against the old infill?

I ask because if you think about it, the closer to the centre the tighter the curvature radius is, so that it might very well be that the printer reduces the print speed. This should be checked, since flow multiplier is speed dependent already at quite low speeds (no time to dig it up, but I saw graph with various recent high speed printers already deviating at 8 mm3/s).

Since the goal of this PR is to have the largest surface without change of flow/speed, wouldn't it be "safer" to simply use left/right infill for the top surface? instead of 45° as it is now. The artefacts due to the print head reaching the set speed would be limited to a small area on either side, and long straight lines would be used for most of the surface.

And no risks of a printer slowing down near the centre.

It should not be problem, because the helix should be printed from the center, but the most important thing is the last round of the helix, where it have to fit into the one line space (as described in the issue). That's what makes the biggest difference compared to simple line infill, where you will never the right flow so easily.

Also if speed really affect the flow that bad way, you would never be able to calibrate the flow, no matter what pattern you select.

@dewi-ny-je
Copy link
Contributor

Still, a validation of some kind should take place.

Also, the spiral must start from the centre, can that be ensured without people having to check each time?

@Benik3
Copy link

Benik3 commented Mar 24, 2025

That's good question and I'm afraid, that it's not possible to automatize that.
For me it e.g. started from the outside:
obrazek
But what is interesting, when you rotate the model by 45°, it prints from inside. I found this behavior already with the original model.
obrazek

So it probably should have this position by default.
Checking the start of spiral should be mentioned in manual of course.

Maybe using Classic instead of Arachne wall generator can make it more consistent?

@dewi-ny-je
Copy link
Contributor

Indeed classic should be used, since we want to have predictable line width.

@Andreas-strg
Copy link

How about making the entire test Part round, so we have no problems with starting Point and prints faster?

@Noisyfox
Copy link
Collaborator

Noisyfox commented Mar 25, 2025

How about making the entire test Part round, so we have no problems with starting Point and prints faster?

Then that will actually break the test. This is the part which actually makes the most differences when filaments are printed into each other from two sides, so you actually want the surface to be printed as two parts instead of one continues spiral loop:
image

@dewi-ny-je
Copy link
Contributor

How about making the entire test Part round, so we have no problems with starting Point and prints faster?

Then that will actually break the test. This is the part which actually makes the most differences when filaments are printed into each other from two sides, so you actually want the surface to be printed as two parts instead of one continues spiral loop:

Well it would at least allow a smaller test part, with just five or so arcs on each of the two sides, before the concentric region begins.

@Noisyfox
Copy link
Collaborator

Well it would at least allow a smaller test part, with just five or so arcs on each of the two sides, before the concentric region begins.

Good point, that should be possible. Though I wonder if it will make it more accurate to let the "test" part far away from the edges.

@dewi-ny-je
Copy link
Contributor

Another idea is to have a test part which is just circular, as long as it's large enough and it can be predictably started from the center. The outer part is not needed.

The idea of this calibration is:

  • we have a fixed wall on the outside, where the innermost chord ends
  • we have a wall which gets closer and closer from the center after each full circle.
  • if the flow is perfect, each previous wall will be shifted by the line width, so it will match.
  • if the flow is excessive, each inner wall will be shifted a bit more, since the filament will be forced to deposit on the free space available, it won't overlap with the previous wall, and the last gap will be insufficient.

Well, if the flow is excessive, a large enough, centre-starting spiral will at a certain point be offset so much that it will be perfectly flat, until the spiral itself will shift sideways so much that artefacts will appear, even without outer "reference" wall.

However, this might require larger test parts, since the metric would be "radius before artefacts appear.

Anyway: the spiral portion is the one that provides accuracy, not the outer portions, they are there just as reference wall. It is important to maximise the ratio inner/outer chords, so taller and narrower test parts (keeping the overall surface identical, for a given target print time) would provide better results. As it is now, with as many outer chords as inner loops, I think a lot of filament and surface is wasted.

Five outer chords will most likely suffice to provide a reliable outer wall against which the inner spiral will be pushed against (if the flow is excessive).

@dewi-ny-je
Copy link
Contributor

Test shows very promising results!

@SoftFever would you say 0 is best, or -1? it's not that clear. For validation, the same flow rates with the previous test patterns should be shown next to each other

@Benik3
Copy link

Benik3 commented Mar 25, 2025

Another idea is to have a test part which is just circular, as long as it's large enough and it can be predictably started from the center. The outer part is not needed.

The idea of this calibration is:

* we have a fixed wall on the outside, where the innermost chord ends

* we have a wall which gets closer and closer from the center after each full circle.

* if the flow is perfect, each previous wall will be shifted by the line width, so it will match.

* if the flow is excessive, each inner wall will be shifted a bit more, since the filament will be forced to deposit on the free space available, it won't overlap with the previous wall, and the last gap will be insufficient.

Well, if the flow is excessive, a large enough, centre-starting spiral will at a certain point be offset so much that it will be perfectly flat, until the spiral itself will shift sideways so much that artefacts will appear, even without outer "reference" wall.

However, this might require larger test parts, since the metric would be "radius before artefacts appear.

Anyway: the spiral portion is the one that provides accuracy, not the outer portions, they are there just as reference wall. It is important to maximise the ratio inner/outer chords, so taller and narrower test parts (keeping the overall surface identical, for a given target print time) would provide better results. As it is now, with as many outer chords as inner loops, I think a lot of filament and surface is wasted.

Five outer chords will most likely suffice to provide a reliable outer wall against which the inner spiral will be pushed against (if the flow is excessive).

I'm not sure if circular object will really work, because it's helix, not circles. So when you will start to reach the wall, the gap will constantly shrink, instead of single line gap like with this model.
Also I don't think that it's good idea to test infill against wall to prevent different settings between infill and walls. Or it would be necessary to set the settings to the same value and disable settings which can affect it too (like overlap).

The idea about printing enough big spiral line, so it will start offset by itself, doesn't differ much from the current test with lines, so I don't see benefit in it.

I agree that smaller count of outer half rings can be enough, I will test it.

@SoftFever
Copy link
Owner Author

Test shows very promising results!

@SoftFever would you say 0 is best, or -1? it's not that clear. For validation, the same flow rates with the previous test patterns should be shown next to each other

In this case, I prefer to use 0 (this is also the flow rate value I got from the existing calibration). It’s not that obvious from the photo, but once you feel it, it’s pretty clear there’s no actual bulge there. So I prefer using 0 to reduce the chance of a gap.

That said, flow rate isn’t super "strict"—if you want to go with -1 for a more pleasing surface, I think that’s totally fine. Or just pick "-0.05" and call it a day ;)

Anyway, give it a try. You can only gain that kind of "experience" by doing it yourself.

@dewi-ny-je
Copy link
Contributor

I will, I have to calibrate a new filament today.

Important: if this is going to get implemented, someone able to read code (I am not) should understand what makes the algorithm start from the centre or from the outside, and adapt the design to ensure the spiral goes in the correct direction.
No vague vodoo like "I found the spiral goes the right way if I orient it 45°" or another a posteriori approach, but an a priori one which matches the algorithm to ensure the desired direction of the spiral.

@Benik3
Copy link

Benik3 commented Mar 27, 2025

I made a test print, and yes, the most difficult part is to get the helix to be printed from the inside :/
Even with 45° rotation it's not always true. Nor with classic wall generator. I even have problem that 2 pieces printed from inside, but on from outside. I had to find a correct angle until it was generated from inside...

Also I noticed few things:

  1. The flow values are not "nice". That means 01 model has flow 1.0109 and -01 model has flow 0.9891. Why?
  2. The test changes top layer line width to 120%. Why it doesn't use width from the profile?

@dewi-ny-je
Copy link
Contributor

I would keep the discussion on topic. You can better discuss that in the section "Discussions", open a thread

@Benik3
Copy link

Benik3 commented Mar 28, 2025

OK.
@SoftFever I tested the last changes, but it looks like it has exactly opposite effect. It always start from outside and I wasn't able to force Orca to start from inside...

Copy link
Owner Author

@SoftFever SoftFever left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update: Add logic to print Archimedean chords from inside to outside.

Copy link
Owner Author

@SoftFever SoftFever left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merge to main branch so more people can test

@SoftFever SoftFever merged commit 5dac629 into main Mar 29, 2025
8 checks passed
@SoftFever SoftFever deleted the feature/different_pattern_flowrate branch March 29, 2025 12:27
@Benik3
Copy link

Benik3 commented Mar 29, 2025

I downloaded artifact build with the last changes, but for me it's still generated from outside :/
obrazek
obrazek

@SoftFever
Copy link
Owner Author

I downloaded artifact build with the last changes, but for me it's still generated from outside :/ obrazek obrazek

What printer model and process did you use?
Did you slice it right away after the test blocks were generated or you made some changes after generating the block?

@Noisyfox
Copy link
Collaborator

I downloaded artifact build with the last changes, but for me it's still generated from outside :/ obrazek obrazek

Please give this a try
#9145

@Hammerfest
Copy link

Hammerfest commented Apr 1, 2025

Circling back on this now that I have had time to print with my 3 most annoying non-transparent filaments (wood, white asa, and tpu)

Referencing the source material:

  • it appears we should not be choosing the smoothest result, but rather 2 steps back, is that still correct or has this implementation altered the expected results?
  • from testing the source v3, the right side prints first, then the circle from the inside out, then the left side, however with the latest nightly as of this posting, it prints the left side first, then the circle proper, then the right side, i don't see this documented yet so I am unsure of if I am seeing an issue needing a ticket raised to make it print in the "correct" order

@Benik3
Copy link

Benik3 commented Apr 1, 2025

I downloaded artifact build with the last changes, but for me it's still generated from outside :/ obrazek obrazek

What printer model and process did you use? Did you slice it right away after the test blocks were generated or you made some changes after generating the block?

I use Klipper General printer with 0.4mm nozzle (i have Sunlu S8).
I just open Orca, select new project, select calibration -> Flow Rate -> YOLO (recommended) -> hit Slice

Here is bundled export. I use 0.2mm 0.4 nozzle test widths process:
MyKlipper 0.4 nozzle - user.zip

@Benik3
Copy link

Benik3 commented Apr 1, 2025

I downloaded artifact build with the last changes, but for me it's still generated from outside :/ obrazek obrazek

Please give this a try #9145

This works for me, thanks!
It's interesting that this mode print both side first and then the helix as the last (from inside correctly), but I don't see it as problem, it can maybe give even better results, I will test it and report.

@Noisyfox
Copy link
Collaborator

Noisyfox commented Apr 1, 2025

It's interesting that this mode print both side first and then the helix as the last

It was simpler/more stable to implement the new algorithm like this instead of left/middle/right, so I went that way.

@Hammerfest
Copy link

Hammerfest commented Apr 1, 2025

It's interesting that this mode print both side first and then the helix as the last

It was simpler/more stable to implement the new algorithm like this instead of left/middle/right, so I went that way.

Interesting, I will test again with the latest nightly from 45min ago, but mine is not doing both sides then center but left center right, this is probably going to be difficult to hammer out

EDIT: NEVERMIND, I will test this specific PR, today is a confusing day, was mixing the merged with unmerged (open)...

@Benik3
Copy link

Benik3 commented Apr 1, 2025

You must download the version from the pull request. It's not in the nightly yet:
https://github.com/SoftFever/OrcaSlicer/actions/runs/14153813021/artifacts/2846166142

@Hammerfest
Copy link

You must download the version from the pull request. It's not in the nightly yet: https://github.com/SoftFever/OrcaSlicer/actions/runs/14153813021/artifacts/2846166142

Yep, edited my comment, its a day...

@Benik3
Copy link

Benik3 commented Apr 1, 2025

Please give this a try #9145

Looks nice to me!
20250401_185236

* it appears we should not be choosing the smoothest result, but rather 2 steps back, is that still correct or has this implementation altered the expected results?

Well it depends in my opinion.
If you want really precise print with details, select the "smooth" one. But for better adhesion and lower chance to have gaps, select the one which start to have the ring.
Or select the value between :D

@dewi-ny-je
Copy link
Contributor

Please give this a try #9145

Looks nice to me! > > ```

  • it appears we should not be choosing the smoothest result, but rather 2 steps back, is that still correct or has this implementation altered the expected results?

Well it depends in my opinion. If you want really precise print with details, select the "smooth" one. But for better adhesion and lower chance to have gaps, select the one which start to have the ring. Or select the value between :D

@Benik3 which one did you pick? I would say 0.

@Benik3
Copy link

Benik3 commented Apr 1, 2025

Yeah, I had 0, now I set it to 0,05 more (the value is 0,945 now).

@RodentVienna
Copy link

RodentVienna commented Apr 5, 2025

I love this concept! Would using square or round, or square-with-rounded corners objects not be better than the default rectangular ones?
Also, I believe, a "result" is clearly shown pretty early in the print. this is an opportunity to reduce filament used for calibration. every little counts. cool stuff!

@Benik3
Copy link

Benik3 commented Apr 5, 2025

Round will not work. You need to make "borders" first. With round object it would just fill in one step and it will also not end with constant width of the line. With square object it would print just very small corners, which can also be problem (too short lines).
But yes, rounded corners (or better the smaller walls to make as inscribed circle) would save some time and filament.

I would be careful with downsizing the object to save filament. You need some number of lines to be printed, also you want some minimal line length (to avoid negative effects of too short lines). Also you must consider that the object is the same now for different nozzle sizes. Of course these things can be solved by programming the generation of the model more dynamically, but in my opinion there are things which deserves this time more :)
Still this test takes pretty low amount of filament, so I don't see it as problem. People then start to print the benchmark boat, which will eat much more :)

@Benik3 Benik3 mentioned this pull request Apr 7, 2025
1 task
@MxBrnr
Copy link
Contributor

MxBrnr commented Apr 10, 2025

FYI, possible issue with this new test. Not sure if it is directly related to the top solid infill pattern, or if it is a bug elsewhere in Orca.
#9261 (comment)

@dewi-ny-je
Copy link
Contributor

For info, I started a discussion on #9609 about the interpretation of the bulge: it's quite clear from macro shots that the best setting is not where the bulge is flat, but where the bulge starts to appear.

Please check the discussion and give me your opinions.

Even in the post linked by @MxBrnr above the issue I mention, with the bulge required to give the optimum flow, is visible.

@MxBrnr
Copy link
Contributor

MxBrnr commented May 14, 2025

We definitely need to make sure that detail is very clearly mentioned in the Calibration Tutorial Wiki.

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

Successfully merging this pull request may close these issues.

9 participants