Skip to content

Reduce artifacts from short travel moves before external perimeters#10722

Merged
SoftFever merged 2 commits into
OrcaSlicer:mainfrom
kisslorand:Accel-of-short-travel-to-external-loop
Nov 20, 2025
Merged

Reduce artifacts from short travel moves before external perimeters#10722
SoftFever merged 2 commits into
OrcaSlicer:mainfrom
kisslorand:Accel-of-short-travel-to-external-loop

Conversation

@kisslorand

@kisslorand kisslorand commented Sep 14, 2025

Copy link
Copy Markdown
Contributor

Description

This PR improves print quality by addressing artifacts caused by very short travel moves immediately before external perimeters. The idea originates from PrusaSlicer, and the approach here builds on tests from PR #10643. These tiny moves no longer inherit high travel acceleration, which can otherwise introduce vibrations and surface imperfections at the seam.

The solution applies the same acceleration and jerk values as the external perimeter to those short moves. This eliminates unnecessary bursts of motion, prevents artifacts, and preserves seam quality.

The change is internal and automatic — no user settings or preset adjustments are required. It assumes a well-tuned printer configuration (accel, speed, input shaping, PA, SCV, jerk, etc.), which naturally depends on the firmware/OS in use (Klipper, RepRap, Marlin, etc.).

Benefits:

  • Eliminates vibrations/artifacts at external perimeter starts.
  • Maintains seam quality and external surface smoothness.
  • Requires no user intervention or preset changes.

Tests

Compiled locally and printed many rectangular and cylindrical objects like these (but not only):

20250914_212224

Fixes #11208

@igiannakas

Copy link
Copy Markdown
Collaborator

This is an interesting take indeed. External perimeter acceleration should indeed work nicely for the smaller travel moves.

I do wonder what test results did Prusa have to indicate that a slower acceleration for the external perimeter travel was beneficial vs an approach like this which is much simpler (and consistent).

@kisslorand

kisslorand commented Sep 14, 2025

Copy link
Copy Markdown
Contributor Author

They most probably miss your eagle eyes that saw the regression on the seams on curved surfaces.

@RF47
I am eagerly waiting for you to test this too.

@RF47

RF47 commented Sep 15, 2025

Copy link
Copy Markdown
Collaborator

It seems to work well, correctly setting the acceleration for print and travel.
image
image

I am curious to see how it compares to Prusa Slicer:
image
image
I don't know if something is configured incorrectly, but it seems that short travel acceleration is not being used in prusa slicer (external perimeter acceleration is used, as in this implementation).

in this prusa comit:
prusa3d/PrusaSlicer@52f5219#diff-cb3d09d2073b6e9032c65d07aa8f10d166324a53136b2aa1288f7b76f7d94319

i found this comment:

    if (!GCodeWriter::supports_separate_travel_acceleration(config().gcode_flavor)) {
        // In case that this flavor does not support separate print and travel acceleration,
        // reset acceleration to default.
        // TODO: This doesn't seem to perform what the comment describes.
        gcode += this->m_writer.set_travel_acceleration(travel_acceleration);
    }

maybe that's my case.

@kisslorand kisslorand force-pushed the Accel-of-short-travel-to-external-loop branch from 52a1764 to a934796 Compare October 5, 2025 06:07
@PawiX25

PawiX25 commented Oct 16, 2025

Copy link
Copy Markdown

When this will be merged?

@boromyr

boromyr commented Oct 17, 2025

Copy link
Copy Markdown
Contributor

What happens if the travel acceleration is less than that of the outer wall?
Furthermore, could it be useful to further reduce the displacement acceleration when movements occur inside the model and are not required to cross an external perimeter? In a test I ran in a cube, drastically reducing the travel acceleration completely suppressed the vibrations at the start of the perimeter.

@igiannakas

Copy link
Copy Markdown
Collaborator

What is a displacement acceleration?

What happens if the displacement acceleration is less than that of the outer wall? Furthermore, could it be useful to further reduce the displacement acceleration when movements occur inside the model and are not required to cross an external perimeter? In a test I ran in a cube, drastically reducing the displacement acceleration completely suppressed the vibrations at the start of the perimeter.

@boromyr

boromyr commented Oct 17, 2025

Copy link
Copy Markdown
Contributor

Error in translation. I corrected the previous message

@kisslorand

kisslorand commented Oct 17, 2025

Copy link
Copy Markdown
Contributor Author

What happens if the travel acceleration is less than that of the outer wall?

Highly improbable, why would you have travel acceleration lower than any print acceleration?

Furthermore, could it be useful to further reduce the displacement acceleration when movements occur inside the model and are not required to cross an external perimeter? In a test I ran in a cube, drastically reducing the travel acceleration completely suppressed the vibrations at the start of the perimeter.

Reduced acceleration before the outer wall affects the seam quality as already proven (more evident for seams on a round wall).

The whole idea is that you already have an acceleration set that will be used for the outer wall. If that is good enough for the outer wall (that might have tiny segments also) it must be just as good for the tiny travel towards the outer wall.

@puffofsmoke

puffofsmoke commented Nov 7, 2025

Copy link
Copy Markdown
  • If the "Wipe Before External Loop" option is enabled, we have two sections of travel near the beginning of the external loop. Both paths affected by decreased acceleration. Fine!
{7D6856F3-2442-4D89-AAA8-6FE4CFFA152C}
  • In contrast, "Wall printing order" can be set to "outer/ inner" and we can have more than one object with the "Wipe Before External Loop" option enabled or disabled. This pach doing nothing in this case and question is what to do.

  • The same with "Wall printing order" set to "outer/ inner", "Print Infill First" enabled and "Wipe Before External Loop" enabled or disabled.

  • And the funniest thing is that without this path, the "Wipe before external loop" option will always add a short move before the external perimeter and reduce the acceleration to the external wall acceleration before this move occurs.

Technically, we already have a better setting that in any case will add a short movement in front of the outer perimeter and it will happen with the acceleration of the outer perimeter.

Comment thread src/libslic3r/GCode.cpp
Comment thread src/libslic3r/GCode.cpp
@kisslorand kisslorand force-pushed the Accel-of-short-travel-to-external-loop branch from bd30a1a to 36bd079 Compare November 18, 2025 17:07
@PawiX25

PawiX25 commented Nov 19, 2025

Copy link
Copy Markdown

Could we please get this merged? I am experiencing significant quality issues in OrcaSlicer compared to PrusaSlicer on models with small features/islands

The difference is drastic. In OrcaSlicer, I am getting severe artifacts (visible and inconsistent layer lines) and blobs on the external perimeters (specifically on the antlers in the example below), whereas PrusaSlicer handles them perfectly. It looks to me that the current acceleration handling for short travels is causing these defects.

PrusaSlicer:
Screenshot 2025-11-19 015828
OrcaSlicer:
Screenshot 2025-11-19 020107

The issues on the print (sliced by Orca, doesn't happen on PrusaSlicer)
image
image

@SoftFever

Copy link
Copy Markdown
Collaborator

Could we please get this merged? I am experiencing significant quality issues in OrcaSlicer compared to PrusaSlicer on models with small features/islands

The difference is drastic. In OrcaSlicer, I am getting severe artifacts (visible and inconsistent layer lines) and blobs on the external perimeters (specifically on the antlers in the example below), whereas PrusaSlicer handles them perfectly. It looks to me that the current acceleration handling for short travels is causing these defects.

PrusaSlicer: Screenshot 2025-11-19 015828 OrcaSlicer: Screenshot 2025-11-19 020107

The issues on the print (sliced by Orca, doesn't happen on PrusaSlicer) image image

Hi @PawiX25
Thank you for showing picture.
Is the improvement in your case due to the Travel short distance acceleration option in PS?
Did you enable that option in PS?

@SoftFever SoftFever left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This is an elegant solution. Thank you.

@SoftFever SoftFever merged commit 36fcf17 into OrcaSlicer:main Nov 20, 2025
@PawiX25

PawiX25 commented Nov 20, 2025

Copy link
Copy Markdown

Yes, I have Travel short distance acceleration enabled and set to 250 mm/s² in PrusaSlicer.

To rule out any hardware issues, I went through extensive troubleshooting with Prusa Support. I replaced belts, retightened everything, and completely reassembled the pulleys. Prusa Support then sent me a G-code file sliced in PrusaSlicer to test, and it printed absolutely flawlessly.

Currently, everything I slice in PrusaSlicer prints perfectly with no defects, whereas OrcaSlicer still produces these artifacts on the exact same hardware.

I’ve attached photos below showing the issues in Orca
PXL_20251110_191358167 (1)
PXL_20251110_191358167 (1)
PXL_20251019_202538011
PXL_20251017_050627739 MP
PXL_20251017_050615962 MP
PXL_20251016_174948047
PXL_20251016_002853493
PXL_20251016_002846504
PXL_20251016_002844176

@igiannakas

Copy link
Copy Markdown
Collaborator

Is this with this PR or without?

@PawiX25

PawiX25 commented Nov 20, 2025

Copy link
Copy Markdown

These photos show the issues I have in Orca without this PR

@valerii-bokhan

valerii-bokhan commented Nov 20, 2025

Copy link
Copy Markdown
Contributor

Can you please share photos with the PR to show the "before/after" difference?

@PawiX25

PawiX25 commented Nov 20, 2025

Copy link
Copy Markdown

Sure, I am compiling the build with this PR right now. I'll print the model i was trying to print before as soon as it finishes and post the before/after photos.

@igiannakas

Copy link
Copy Markdown
Collaborator

Also please ensure cooling and movement parameters are identical, including slicing resolution. Just a double check as some of the above artefacts are not appearing as ringing related but have similarities to slicing tolerance and cooling artefacts I’ve encountered before :)

dbaarda pushed a commit to dbaarda/OrcaSlicer that referenced this pull request Nov 27, 2025
* main: (272 commits)
  Delete validate-documentation.yml (OrcaSlicer#11477)
  Update printer profiles for Artillery (OrcaSlicer#11284)
  Fix emulated spiral Z-hop XY offset on multi-plate slicing (OrcaSlicer#11468)
  Move WIKI to new repo
  Validate invalid fields for hidden system profiles (OrcaSlicer#11455)
  ci: Increase timeout for dedupe-issues workflow from 10 to 30 minutes
  Fix CICD AI dedupe
  Change runner from self-hosted to ubuntu-latest
  Check duplicated issues. ported from Claude code repo (OrcaSlicer#11454)
  UI fixes / improvements (OrcaSlicer#11413)
  Fix Spiral Z-Hop arc handling (OrcaSlicer#11430)
  FIX: Open provided file at startup (OrcaSlicer#11419)
  Re-include BBS's Clipperutils2 (OrcaSlicer#11415)
  Fix filament profile import if inherit from vendor generic (OrcaSlicer#11398)
  Fix crash after syncing printer (OrcaSlicer#11428)
  Wiki 16 (MiniUpdate): Updated by Stable cmake 4.2 release + VS2026 First (OrcaSlicer#11423)
  Revert "fix GITHUB_TOKEN permissions in workflows (OrcaSlicer#11392)"
  correct oversight in OrcaSlicer#11392 (OrcaSlicer#11404)
  Profiles for Creality K2 Pro printer (OrcaSlicer#11315)
  Reduce artifacts from short travel moves before external perimeters (OrcaSlicer#10722)
  ...
dbaarda pushed a commit to dbaarda/OrcaSlicer that referenced this pull request Dec 1, 2025
* upd-eigen-5.0.0: (273 commits)
  Delete validate-documentation.yml (OrcaSlicer#11477)
  Update printer profiles for Artillery (OrcaSlicer#11284)
  Fix emulated spiral Z-hop XY offset on multi-plate slicing (OrcaSlicer#11468)
  Move WIKI to new repo
  Validate invalid fields for hidden system profiles (OrcaSlicer#11455)
  ci: Increase timeout for dedupe-issues workflow from 10 to 30 minutes
  Fix CICD AI dedupe
  Change runner from self-hosted to ubuntu-latest
  Check duplicated issues. ported from Claude code repo (OrcaSlicer#11454)
  UI fixes / improvements (OrcaSlicer#11413)
  Fix Spiral Z-Hop arc handling (OrcaSlicer#11430)
  FIX: Open provided file at startup (OrcaSlicer#11419)
  Re-include BBS's Clipperutils2 (OrcaSlicer#11415)
  Fix filament profile import if inherit from vendor generic (OrcaSlicer#11398)
  Fix crash after syncing printer (OrcaSlicer#11428)
  Wiki 16 (MiniUpdate): Updated by Stable cmake 4.2 release + VS2026 First (OrcaSlicer#11423)
  Revert "fix GITHUB_TOKEN permissions in workflows (OrcaSlicer#11392)"
  correct oversight in OrcaSlicer#11392 (OrcaSlicer#11404)
  Profiles for Creality K2 Pro printer (OrcaSlicer#11315)
  Reduce artifacts from short travel moves before external perimeters (OrcaSlicer#10722)
  ...
@kisslorand kisslorand deleted the Accel-of-short-travel-to-external-loop branch April 21, 2026 09:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The acceleration of short movements does not match the acceleration of the outer wall

8 participants