mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-04-06 00:32:05 +02:00
Fill Adaptive disconnecting from walls at low density #1281
Closed
opened 2026-04-05 17:11:02 +02:00 by MrUnknownDE
·
0 comments
No Branch/Tag Specified
main
release/v2.3
dependabot/github_actions/geekyeggo/delete-artifact-6
dependabot/github_actions/microsoft/setup-msbuild-3
feature/fix-build-error-for-OrcaSlicer_profile_validator
feature/fix-regression-bug-of-extruder-clearance
feature/auto-update
release/v2.3.1
release/v1.9
release/v1.8
nightly-builds
v2.3.2
v2.3.2-rc2
v2.3.2-rc
v2.3.2-beta2
v2.3.2-beta
v2.3.1
v2.3.1-beta
v2.3.1-alpha
v2.3.0
v2.3.0-rc
v2.3.0-beta2
v2.3.0-beta
v2.2.0
v2.2.0-rc
v2.2.0-beta2
v2.2.0-beta
v2.1.1
v2.1.0
v2.1.0-rc
v2.1.0-beta
v2.0.0
v2.0.0-rc
v2.0.0-beta
v1.9.1
v1.9.0
v1.9.0-beta
v1.9.0-alpha
v1.8.1
v1.8.0
v1.8.0-rc2
v1.8.0-rc
v1.8.0-beta2
v1.8.0-beta
v1.7.0
v1.7.0-beta
v1.6.6
v1.6.5
v1.6.4
v1.6.4-beta3
v1.6.4-beta2
v1.6.4-beta
v1.6.3
v1.6.3-beta
v1.6.2
v1.6.2-beta
v1.6.1
v1.6.0
v1.5.0
v1.4.5
v1.4.4
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0_beta3
v1.4.0_beta2
v1.4.0_beta1
v1.3.4
v1.3.3
v1.3.3-sf-beta3
v1.3.3-sf-beta
v1.3.2-sf
v1.3.1-sf
v1.3.0-sf
v1.2.5.3-sf
v1.2.5-sf
v1.2.4-sf
v1.2-sf
v1.1
v1.1.1.1-sf
v1.1.0.14-sf
v1.0.10-sf2.1
v1.0.10-sf2
V1.0.10-sf
v1.0.10
v1.0.10.05
Labels
Clear labels
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-beta2
2.3.2-hotfix
2.3.2-hotfix
2.3.2-hotfix
2.3.2-hotfix
2.3.2-hotfix
2.4.0
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Community testers wanted
Crazy Orca Community
Crazy Orca Community
Crazy Orca Community
Linux
Linux
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Localization
Need more information
Need more information
Need more information
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
QoL
UI/UX
UI/UX
UI/UX
UI/UX
UI/UX
UI/UX
UI/UX
UI/UX
UI/UX
UI/UX
UI/UX
Wait for CI/CD test result
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
bug-fix
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
documentation
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
duplicate
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
github_actions
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
profile
regression
regression
wait for response
wait for response
wait for response
wait for response
wait for response
wait for response
wait for response
wait for response
wait for response
wait for response
wait for response
wait for response
wait for response
wontfix
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
📍 Assigned
🔔 reminder-sent
🔔 reminder-sent
🔔 reminder-sent
🔔 reminder-sent
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
MrUnknownDE
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github/OrcaSlicer#1281
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @igiannakas on 12/24/2025
A different approach to fixing the same issue as described in PR #11725
I believe that adaptive infill (eg adaptive cubic) can degrade at very low sparse densities when the computed line spacing becomes comparable to (or larger than) the model’s bounding box. In this scenario the octree can be built with a single level, which prevents triangle insertion and effectively disables the “adaptive” portion of the algorithm. This PR ensures the octree always has at least one refinement step so triangle insertion can proceed and infill generation remains geometry-aware without changing the finest cell resolution (and therefore avoiding non-monotonic “weight” vs density effects).
Root Cause Hypothesis:
Adaptive Cubic constructs octree levels in make_cubes_properties() starting from edge_length = 2 * line_spacing, doubling until edge_length > max_cube_edge_length.
At low densities, line_spacing can become very large. When 2 * line_spacing > max_cube_edge_length, the loop terminates after the first iteration and cubes_properties.size() becomes 1.
However, the downstream build_octree() only inserts triangles when there is more than one level:
When cubes_properties.size() == 1, no triangles are inserted, no children cubes are created, and infill line generation effectively runs against a single root cube.
This produces coarse line placement and clipping artefacts, illustrated here as sparse infill segments ending short of perimeters, especially visible in preview at low infill widths.
Proposed fix
Amend the code to guarantee at least two cube-property levels by adding a coarser parent/root level when only one is generated. After building cubes_properties we insert the below code segment:
This creates:
How it works:
The code first checks whether the octree configuration ended up with only one cube size (cubes_properties.size() == 1).
To prevent that, this block creates a second, larger (coarser) cube level:
Because cube geometry values depend on edge length, it recomputes:
Finally, it appends this new coarser level to the end of the list.
That means the octree now has at least two levels: a finer one and the original coarse one. The end result is even at very low densities, there’s always at least one refinement step available, so build_octree() can subdivide and insert triangles into child cells instead of falling back to a single giant cube level that produces poorly-behaved infill near perimeters.
Importantly, this also avoids introducing a finer-than-original leaf level, which can otherwise increase effective material at very low densities (e.g. making 3% heavier than 5%).
As a result:
Alternative:
The alternative approach in the PR: https://github.com/OrcaSlicer/OrcaSlicer/pull/11725 changes the break condition to the below:
if (edge_length > 1.5 * max_cube_edge_length) break;This can produce a second level for some models; however:
I think this proposed PR may be more "robust", as the additional parent-level insertion directly guarantees triangle insertion while keeping the original finest cell size intact, which also helps preserve expected density/material trends.
Note:
This PR includes the changes from @RF47 PR on disabling rotation of sparse infill for adaptive fills.
Screenshots:
Small cube:

Before:
This PR:

Larger cube


Before:
This PR:
Multiline test with low infill density:
