-
-
Notifications
You must be signed in to change notification settings - Fork 900
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
Scarf joint seam enhancement: conditional scarf joint and slowdown for scarf joint only #4317
Conversation
how can I try this ? |
OrcaSlicer PR 4317 https://github.com/SoftFever/OrcaSlicer/actions/runs/8131221473 |
@SoftFever Printables post has been updated to include these binaries and documentation of what this feature does. where do you want me to start documenting this on the wiki so it doesn't live only in printables ? |
@SoftFever , @Noisyfox : Because one of the major complaints about scarf seams is needing to slow down outer walls (thereby increasing print time), conditional scarf seams feels like it should naturally have a speed modifier that applies only for scarf-seam'd walls vs the regular walls... as the scarf seam'd ones need to go slower than everything else for good results. Any thoughts on how to accomplish this in the UX ? not sure if it belongs in this PR or another ? Of course if we slow down only for certain walls, that could change the sheen/finish on the walls and be undesirable.. so maybe a better solution is a "slow down for scarf section" speed modifier ? Not sure the best way to accomplish this.. but feels like the next natural improvement? |
Perhaps a "minimum radius for scarf joint seam" parameter could be added, along with logic like this: |
I’m curious what we are trying to accomplish with something like a radius filter ? I’m not sure I see the purpose of adding that complexity? Presently the code filters scarf vs traditional based on finding a “sharp” corner by comparing segment angles against a threshold value. Are you asking to adjust this threshold angle , and if so , why ? |
An accessible and easily-understood threshold criteria would be good. Currently the condition is hidden (without looking at the code, I don't know if it's curvature based, total perimeter length based, or what). Here is an illustrative example with Teaching Tech's test model scaled down to 50%. Where the diameter of this curved feature is less than about 9.5mm, it switches to traditional seams: |
As I mentioned above , Presently the code filters scarf vs traditional based on finding a “sharp” corner by comparing segment angles against a threshold value. The code was largely copied from the already present seam placement code as @SoftFever noted in the code comments. Currently looks like it’s checking to see if the segment angle exceeds 10 degrees . It would be nice to have an adjustable threshold of some kind for the “crossover”… but we need to make it something easily conceptually understood if possible . Alternatively I guess we could allow people to paint the seam type onto objects ? The other way to consider doing this @SoftFever is to use arc fitting .. and anything that would naturally be turned into an arc move should not be a candidate for a traditional seam ? That way you could reuse the arc fitting threshold parameters as filtering … Not sure if that works in practice tho .. |
@RnDMonkey Great observation! @psiberfunk That's a good idea. ARC fitting info can be useful too – consider it added to my to-do list! Just a little heads-up: I can only tackle this in my spare time outside of regular work hours (and my day is just starting, so please bear with me 😉 |
2. Expose scarf_angle_threshold to UI
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Cool. To update this WIKI page, we can raise PRs to this file: https://github.com/SoftFever/OrcaSlicer/blob/main/doc/Seam.md |
With cylinder it does work quite good. WhatsApp.Video.2024-03-04.at.15.42.03.mp4 |
So here is a sample with the threshold at 119: and here is a sample with the threshold at 120: |
So the threshold appears to be the largest angle for which a normal seam will be used. Above that threshold angle, a scarf seam will be used. |
I'm considering adding a feature to render scarf joints in different colors tonight. In the meantime, you can either check the toolhead moves, as I did in the animated image, or change the scarf speed and then switch to speed view mode. |
Yeah, @tsmith35 's pictures were helpful. Now I'm thinking of it as "Scarf joint seam will be used conditionally if all interior angles in the wall loop are greater than 155°" or "Scarf joint seam will be used conditionally unless there is an interior angle of 155° or less". Not entirely sure which version of saying the same thing will stick in my head long-term. |
I think the difficulty has to do with interpretation of the threshold as being an exclusion vs an inclusion. Perhaps it would be more intuitive to say "Largest included angle for traditional seams" or "Traditional seam maximum included angle". I'm also wondering whether or not external angles (corners) are evaluated for traditional seams. |
I'm currently working on a newer test model and additional optimizations with new features.. and one of the things i'm scanning is angles.. you can see here how decreasing the angle leads to "more and more scarf seam" on this model. Ignore for a second the garbage overhangs and other defects and focus on how much of the seam is traditional vs. scarf in these images. Notice how the traditional seam "creeps up and disappears" as you decrease the tolerance angle. From left to right : -old (no scarf) |
(@psiberfunk I'm totally using "scarf'd") A convex 120° angle on the same model uses a regular seam. When I change the threshold to 121°, I get an interesting mix of regular and scarf'd seams (that is all-regular seams once I further change the threshold to 122°): |
Indeed, it's not that accurate like we draw in CAD. |
Newest test results w/ 21 new model prints so far , particularly with a focus on overhangs.. : Inner/outer confirmed to be worse than inner-outer-inner. Smaller wall thickness (0.42 or 0.5 vs 0.6) is worse. Smaller layers also confirmed to be generally worse (0.16 vs 0.2). All of this was expected, but i'm just confirming its still true on a new model with overhangs... so the results seem to be generalizable so far. Also tried slowing down further just for the scarf, which yielded little to no improvement over going at the already suggested wall speeds. (100 mm/sec . Tried 75, 65, 50 with no real differences). With the theory that cooling could be the issue causing wall ripples for the overhang area.. I've also tried facing the scarf facing "into the wind" (directly in front of my aux fan on full blast) vs facing away (in a "low flow" area of the print bed)... and have not seen a huge overhangs improvement... suggesting i'm not cooling limited at the moment. I'm running out of ways to try and improve my previous best settings here... ideas? |
As you can all see from this video of one of the samples, the issues with the scarf seam with overhangs seems to start when the nozzle comes around and intercepts the start of the first half of the scarf , which I will call the "lead in". When the nozzle hits the lead in, and the lead in isn't flat/ well-behaved or otherwise is blobby, we start to get pressure and extrusion oscillations and artifacts and blobs as the nozzle either is rammed into the plastic or has nowhere to extrude other than outwards into the overlap space (with nothing supporting it). This problem compounds and grows until the artifacts are quite large .. although as you go up the print slowly "repairs itself" as 3D prints often do. By the middle of the video.. the seams have resumed idealized behavior, with the lead-in barely visible as a thin line between the thick ones. The challenge here is apparently how to prevent this issue from starting in the case of overhangs. I believe a bad lead-in is leading to bad artifacts in these cases, and i've not yet figured out how to fix that. Ideas i haven't mentioned above yet that i've tried are welcome. SeamsVideo_264.mp4 |
So on a vertical wall, pushing into the previous layer as flow tapers off works as expected. But on an overhang, the tilt causes the flow to be biased outward, toward the path of least resistance. I wonder if maintaining the path vertical to the previous layer (as opposed to moving outward to follow the tilt of the wall) would reduce the blobs. Perhaps a slight inward tilt may even be required to compensate? But at the least, I am curious to see what the results of the vertical path might be. I need a toothpaste extruder simulator. lol Anybody here good with CFD? 🤣 |
I think what you're proposing may be particularly tricky to calibrate.. it sounds like you're suggesting basically a bit of elephant foot style compensation ? However, your understanding is similar to mine, but I note that the biggest problems don't happen at the final flow tapering, but when the "full fat flow" hits the lead in after the first pass has finished. So the problems seem to start to occur when that crossover point is reached, not necessarily as it begins to taper later in the scarf (although that can be a problem the quality is significantly better later in the scarf vs early). I have two other proposals to try that might also let us tune:
As an aside, I do think the flow rationale/physical understanding explains why I inner/outer performs worse than inner-outer-inner... because when the wall is laid down it is pushed up against the inside wall in the former, but not in the latter, where there will still be space for it to flow (less resistance). |
A potentially related bug to scarf seam starting and potentially quite related to the cosmetic outcomes .. there seems to be a mistake in the "start speed" based on this example @SoftFever . I noted this even before your speed control, but had chalked it up to weird pressure equalizer behavior. However now that we have what should be a speed cap (75 in my example), the speed for this extrusion should be locked at max 75.. but somehow is hitting 82 for the indicated segment. |
👍 Nice catch. |
Thanks for all this testing! However, adjusting the flow rate can achieve a similar effect. |
Note: My focus will be on consolidating and stabilizing the existing features for the upcoming release. I won't be introducing any new options or features in the next few days. |
This PR enhances @Noisyfox's scarf joint seam implementation (#3839) by adding a new strategy that allows scarf joint seams to be applied smartly to smooth perimeters only. For perimeters with sharp corners, traditional seams are used instead, as they effectively conceal seams by placing them at the corners.
1. Conditional scarf joints:
A simple testing model:
TeachingTech's testing model:
scarf_conditional_test1.zip
scarf_conditional_test_TT_model.zip
2. Scarf joints slowdown