Port CrealityPrint Overhang Optimization #990

Open
opened 2026-04-05 16:40:04 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @Sabriel-Koh on 1/23/2026

Description

This PR adds the overhang optimization feature from CrealityPrint to OrcaSlicer. The purpose of this feature is to adjust the outer wall line width and layer height of overhangs to improve the quality of the print.

The feature works by adding new logic to slicing that creates width profiles that are saved into Layers, which then create Flow objects that apply the width to outer perimeters. Some of the code was cleaned up, though there are some hardcoded values that could probably be implemented as config options. I also noticed that while there is a OverhangOptimization class, some of the logic is done in Slicing.cpp.

I have split the feature control into 2 separate bools, for enabling variable width and height. To get the same results as CrealityPrint, enable both toggles, and use the same wall generator.

There is also currently a bug that causes it to apply to non-overhang layers, see screenshots.

Resolves #12029

Screenshots/Recordings/Graphs

image image image

Example of setting affecting non-overhang walls:
Pasted image 20260123161757

Tests

OverhangOptimizationTest.zip
I used this project file for testing, comparing the results between my branch and CrealityPrint 7.0.0. You will need to enable Overhang Optimization on CrealityPrint yourself if you wish to test it there as well.

*Originally created by @Sabriel-Koh on 1/23/2026* # Description This PR adds the overhang optimization feature from CrealityPrint to OrcaSlicer. The purpose of this feature is to adjust the outer wall line width and layer height of overhangs to improve the quality of the print. The feature works by adding new logic to slicing that creates width profiles that are saved into Layers, which then create Flow objects that apply the width to outer perimeters. Some of the code was cleaned up, though there are some hardcoded values that could probably be implemented as config options. I also noticed that while there is a OverhangOptimization class, some of the logic is done in Slicing.cpp. I have split the feature control into 2 separate bools, for enabling variable width and height. To get the same results as CrealityPrint, enable both toggles, and use the same wall generator. There is also currently a bug that causes it to apply to non-overhang layers, see screenshots. Resolves #12029 # Screenshots/Recordings/Graphs <img width="2560" height="1395" alt="image" src="https://github.com/user-attachments/assets/21913576-ce17-4664-8384-fb0c63e97ff1" /> <img width="2560" height="1393" alt="image" src="https://github.com/user-attachments/assets/ac0b219a-2159-4f71-9828-896c32d20e44" /> <img width="2559" height="1399" alt="image" src="https://github.com/user-attachments/assets/86c4a338-5202-4896-9740-29dde88de6fa" /> Example of setting affecting non-overhang walls: <img width="2560" height="1401" alt="Pasted image 20260123161757" src="https://github.com/user-attachments/assets/15eab7a6-7d8a-4d1f-95b5-3df7d0c5431f" /> ## Tests [OverhangOptimizationTest.zip](https://github.com/user-attachments/files/24816878/OverhangOptimizationTest.zip) I used this project file for testing, comparing the results between my branch and CrealityPrint 7.0.0. You will need to enable Overhang Optimization on CrealityPrint yourself if you wish to test it there as well.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#990