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
Middle outer inner wall ordering mode (Draft) #4333
base: main
Are you sure you want to change the base?
Conversation
commit cf39ba0 Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Mar 4 12:22:39 2024 +0000 Update PerimeterGenerator.cpp commit ff4347f Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Mar 4 12:09:03 2024 +0000 Middle Outer Inner implementation commit 00486f7 Merge: 3b34635 1cb88d0 Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Mar 4 11:34:25 2024 +0000 Merge branch 'middle-outer-inner' of https://github.com/igiannakas/OrcaSlicer into middle-outer-inner commit 3b34635 Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Mar 4 11:34:20 2024 +0000 Update PerimeterGenerator.cpp commit 1cb88d0 Merge: 78e23b6 27439ed Author: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Mon Mar 4 11:23:00 2024 +0000 Merge branch 'SoftFever:main' into middle-outer-inner commit 78e23b6 Merge: 4e7a0f9 5dab9b2 Author: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Sat Mar 2 11:36:57 2024 +0000 Merge branch 'SoftFever:main' into middle-outer-inner commit 4e7a0f9 Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Feb 5 10:01:26 2024 +0000 First commit - MiddleOuterInner
commit cf39ba0 Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Mar 4 12:22:39 2024 +0000 Update PerimeterGenerator.cpp commit ff4347f Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Mar 4 12:09:03 2024 +0000 Middle Outer Inner implementation commit 00486f7 Merge: 3b34635 1cb88d0 Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Mar 4 11:34:25 2024 +0000 Merge branch 'middle-outer-inner' of https://github.com/igiannakas/OrcaSlicer into middle-outer-inner commit 3b34635 Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Mar 4 11:34:20 2024 +0000 Update PerimeterGenerator.cpp commit 1cb88d0 Merge: 78e23b6 27439ed Author: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Mon Mar 4 11:23:00 2024 +0000 Merge branch 'SoftFever:main' into middle-outer-inner commit 78e23b6 Merge: 4e7a0f9 5dab9b2 Author: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Sat Mar 2 11:36:57 2024 +0000 Merge branch 'SoftFever:main' into middle-outer-inner commit 4e7a0f9 Author: igiannakas <ioannis@my-spot.co.uk> Date: Mon Feb 5 10:01:26 2024 +0000 First commit - MiddleOuterInner
In summary I have mixed feelings about this mode. In most regular printing scenarios, inner outer inner works best and gives the best external wall finish. Also overhang wise, it can easily achieve 45-50 degrees angles without much issue, especially if attention is paid to extrusion step over. On the other hand, this setting is marginally better in terms of external wall quality compared to inner-outer mode, as there is one (or more) less internal perimeters deforming the external perimeter. It always is affected by the one neighbouring perimeter. This also theoretically means it can print better overhangs. For me, its a mode that I will use on rare occasions. I always print with inner-outer-inner mode as most models that I print do not contain 50+ degree overhangs. And when they do they are at limited locations which can be addressed with careful support placement. The rare models where this may work best are models of threads and also to print the Voron parts. That is because threads need specific external dimensions that are working best with inner-outer-inner mode but inner-outer-inner can on occasion lead to extrusion "detachment" from the wall. Equally with Voron parts, the fixed 0.4mm extrusion width and 0.2 layer height doesn't allow for much step over meaning some parts suffer due to their steep overhangs. In the above two situations, this mode may be useful. I'll leave to the community to test further if there is interest in this mode. |
Well that confirms my findings, that the middle-outer-inner mode is a compromise between print quality and overhang issues. Are you printing ABS by any chance? Even overhangs of 45° can get tough with outer-inner or inner-outer-inner, because you cannot just increase part cooling beyond a certain point due to warping issues. Also for the Voron print settings, the perimeter width is forced to 0.4mm so you cannot adjust the stepover (EDIT: Oops, that is what you have already written). The improvement compared to inner-outer mode will be much more apparent, if you use the Voron 4-perimeter setting (or even more than that). I am having a hard time finding the artifact (Linux) for the PR build, can you give me a hint? |
All artefacts are here: https://github.com/SoftFever/OrcaSlicer/actions/runs/8141514816 bottom of the page - you need to log in to GitHub to download. |
Completely agree with you. Theoretically this wall ordering mode should reduce artefacting on external walls when printing with more than 2-3 perimeters as there is less material squishing the perimeter. Combined with the precise wall feature which increases the spacing between the first and second perimeter, it should give good smooth walls. However, the quality for me is still not 100% there. I was hoping that it would replace the inner-outer-inner mode for me but turns out that is not the case as still there is some slight deformation due to the first internal perimeter, even with precise wall on. Agree that for the Voron parts specifically this could be a good use case to improve quality - its the ideal combination for this feature - thin extrusion widths, with large layer heights leading to small step over together with 4 perimeters leading to more squish. It would be great if someone from the community did an AB test with Voron parts to test that - I've finished printing all of mine so done with ABS right now :D BTW, printed them all using inner-outer-inner with some limited exceptions and they worked great btw. |
Okay, that was surprisingly hard to find :-) I have done some more testing, this time with Precise Wall actually turned on for Inner-Outer mode (I never bothered to enable it before) and I have to admit, that there really is not much difference between Middle-Outer-Inner and the regular Inner-Outer mode anymore. I am curious, is there any downside to the precise wall feature? Do overhangs still perform good? From left to right: Inner-Outer, Middle-Outer-Inner, Inner-Outer-Inner. It almost looks like Middle-Outer-Inner (No precise wall) loses against Inner-Outer (With precise wall). Material is ABS, printed on a Micron+ with a Vz-Hextrudort Extruder and Dragon SF hotend. |
As you didn’t enable precise wall for middle outer inner it will look worse for sure. indeed, there is very little benefit from what I see but you’re not comparing apples to apples :) Precise wall slightly increases the spacing between the middle extrusion and the wall to allow for more space for any extrusion deviations coming from the internal walls to go to without affecting the external perimeter too much. It doesn’t have really any downside print quality wise. |
I was a bit thrown off by the tooltip saying it's for inner-outer only, but that may be currently outdated. Slicer was Classic in this case, but preview looked fine in middle-outer-inner mode.
I see, thanks. It looks to me a bit like, if your extrusion factor is reasonably well tuned, there is not much difference between one wall and three walls printed, before external perimeter is printed. At least with the additional "decoupling" that precise wall provides. So in a sense, "precise wall" actually already achieves, what I set out to achieve with the proposed wall order mode. Without precise wall, the difference is larger (as shown by the images in the earlier pull request of mine). But precise wall may be a cleaner solution. |
Yeah I didn’t update all the tool tips yet - it’s draft to evaluate quality and whether it’s worth it as a mode. It may be beneficial if you could also run an Arachne test with precise wall on and the three modes to do a final comparison. Maybe with 4 walls too, to check whether that is a reasonable use case or not. thank you for this 👌🏻 |
Yeah, happy to. I switched to Arachne however and the perimeter order looks different. Is it supposed to be 1, 3, 4, 2 (with 1 being innermost, 4 being external perimeter)? |
Yeap that is intentional - it prints inside out for overall better overhang performance and then swaps to print the two external perimeters then the final remaining one. Appreciate that is slightly different to the classic implementation; however it shouldn't create any downsides as the perimeters are still well spaced because of the middle perimeter printed last to prevent external impact from internal perimeters. |
I'm not completely sold on that - with more layers (for example 10), this "middle" (2nd outer) perimeter will get squished quite a lot and this will propagate the only way it can - upwards. That material still needs to go somewhere... Usually it ends as a blob on the nozzle (I printed lots of parts with PETG CF which tends to do this and with 10+ walls and I had to clean the nozzle for this exact reason during the print even with Inner-Outer where the filament should have a way to go). |
That can change if there is value in the mode. Currently it’s not certain whether there is any visual impact… |
I've pushed a new commit to change the handling of wall ordering for Arachne. Now it does first internal, external, then the remaining internal perimeters outside in, to move the excess material towards the inside of the model. Build files should be available soon here: https://github.com/SoftFever/OrcaSlicer/actions/runs/8176241198 |
Can confirm, thanks a bunch! |
Can you have a look at this model? In the first few layers, Arachne also seems to have some wall ordering problems.. |
hey there @igiannakas! thanks for the work, looks interesting! here are some test results sliced on the Windows build artifact of this run (commit 4b63ff3) hardware
profileNOTE: I know the profile is a bit weird, but this is a production machine so this is the baseline. I welcome any suggestion of speed, accel, PA, geometry, whatever. looking forward to do more testing on this. Outer Wall Speed: 100mm/s | Outer Wall Accel = 4000mm/s² for the results I suggest clicking on the pics to see the full res image results: angle 1
results: angle 2
results: angle 3
conclusionspictures do not really show the details as much as i wanted to. (I should probably try more directional lighting, I have a lightbox for product pictures but that really drowns out the imperfections) to me it looks like on paper I had expected I hope this has been useful, open to a lot more testing and suggestions NOTE: I've had some issues getting the Windows Portable and Linux builds to work reliably (or at all) but this is most likely due to something off on my side or with |
Thank you for this! Excellent test. I’ve personally used this profile a couple of times on my Voron parts. It helps a bit there, marginally, as they are printed with 4 walls which causes more bulging than 3 walls when using inner outer mode. That being said, it’s an experimental mode, with a very very limited use case (4+ perimeters) to show any benefit. would be great to know how many walls did you use in the prints above? |
ah! there goes the mistery then! I am printing with just 3 perimeters! will retest with 4, do you have any more suggestions? maybe a different geometry to make the benefits more visible? |
The biggest benefit is if you print with large number of walls. The only way to get a really exact print with 10 wall sis outer-first, which has very poor overhangs. |
@zviratko thanks for the tip! I suspected this ordering would also be beneficial to lower numbers of perimeters, but was in fact wrong. I will retest with more perimeters on a more sloped geometry, maybe with some accuracy measurements and report back here! |
Building on the PR #3809 bringing this feature to Arachne, including handling of multiple islands following the inner-outer-inner code model and incorporating the above PR (classic) in its code.
Marking it as draft as this needs testing to confirm to what extent it benefits print quality and, hence, whether it is beneficial as a wall ordering mode. Also the classic mode could do with more development to handle multi-island special cases.
Fixes #3924
I'll be running the following print tests:
Voron cube - Middle Outer Inner vs Inner Outer Inner vs. Inner Outer Objectives:
Precise wall enabled. Objectives:
Test improvement and delta in wall extrusion consistency compared to baseline
Overall testing objective: Can this mode reasonably supplement inner-outer-inner and if so with what tradeoff in print quality. Is this mode an improvement over inner-outer mode and if so to what extent.