Skip to content

Improve tree support interfaces in build-plate-only mode - #11635

Open
BenJule wants to merge 1 commit into
bambulab:masterfrom
BenJule:fix/issue-11630-tree-support-interface
Open

Improve tree support interfaces in build-plate-only mode#11635
BenJule wants to merge 1 commit into
bambulab:masterfrom
BenJule:fix/issue-11630-tree-support-interface

Conversation

@BenJule

@BenJule BenJule commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • improve tree support interface coverage when On build plate only is enabled
  • replace the previous branch-distance dilation approach with a cumulative support-backed footprint
  • allow recovered interface only where it is reachable from geometry that is actually printable on the support layer below
  • keep the normal non-build-plate-only path unchanged

Problem

Tree support normally uses the overhang area when generating the support interface. In On build plate only mode, branches that cannot reach the build plate are pruned first.

Reusing the complete overhang afterward is unsafe because it can recreate interface paths above branches that no longer exist. Restricting the interface to the individual surviving tree-node footprints, however, leaves considerably less interface coverage than necessary.

Approach

For build-plate-only tree support, this change builds a cumulative supported footprint across the support layers.

For each layer:

  1. Start with the geometry actually printed by the surviving tree branches on the current layer.
  2. Take the geometry that was printable on the preceding support layer and allow it to grow by at most half of one support extrusion width.
  3. Intersect that reachable area with the interface requested for the current layer.
  4. Add only that recovered interface to the current printable footprint.
  5. Apply the existing object-collision and machine-border clipping.
  6. Only the resulting printable footprint is allowed to propagate to the next layer.

This allows neighbouring surviving tree branches to gradually form a more continuous interface while preventing interface regions above pruned support from being restored.

The previous tree_support_branch_distance dilation is no longer used by this fix.

When On build plate only is disabled, the existing full-overhang interface path remains unchanged.

Validation

Tested commit:

cd09fd64a4ac2619696759660caac2ea06d28f5b

Source validation:

  • git diff --check passes
  • targeted TreeSupport.cpp -fsyntax-only compile check passes
  • PR contains one signed commit and only changes src/libslic3r/Support/TreeSupport.cpp

CI:

Runtime validation with the supplied 3MF using Bambu Lab X1 Carbon, Tree Strong and the same slicing settings:

On build plate only = ON

  • Support: 5.78 m / 17.80 g
  • Support interface: 0.20 m / 0.57 g
  • Support transition: 0.12 m / 0.37 g

For comparison, earlier conservative candidates produced only 0.10 m and 0.17 m of support interface.

Representative single-layer inspection around layers 325, 326 and 327 was also performed. In the inspected regions, the recovered interface remained aligned with generated support on the layer below and no large unsupported interface islands like those produced by the original dilation approach were observed.

On build plate only = OFF

Control slice:

  • Support: 4.24 m / 13.06 g
  • Support interface: 0.37 m / 1.06 g
  • Support transition: 0.37 m / 1.13 g

These values match the previous non-build-plate-only reference, confirming that the normal path remains unchanged.

Addresses #11630

@BambulabRobot
BambulabRobot requested a review from NothFie July 21, 2026 14:29
@NothFie

NothFie commented Jul 22, 2026

Copy link
Copy Markdown

@BenJule Thank you for your support. However, as shown in the picture, simply expanding the area to get the interface will create a lot of overhanging interface lines. These lines may warp or peel off, which could cause the print to fail.
image

@BenJule

BenJule commented Jul 22, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for pointing this out. You're right: expanding the surviving branch area can create interface paths that extend beyond the actually supported footprint, so those lines may warp or detach.

I'll drop the dilation-based approach rather than just tuning the expansion distance. A proper fix needs to guarantee that every added interface region is backed by generated support on the layers below. I'll rework the approach and validate the resulting toolpaths with the supplied 3MF before updating the PR.

@BenJule
BenJule force-pushed the fix/issue-11630-tree-support-interface branch 4 times, most recently from c258765 to b885a62 Compare August 9, 2026 03:26
Build-plate-only tree support prunes branches that cannot reach the build
plate. Restoring the normal full-overhang interface afterward is unsafe
because it may recreate interface paths above support that was removed.

Build a cumulative supported footprint from the surviving tree geometry.
For each support layer, additional requested interface may grow by at most
half an extrusion width from geometry that was actually printable on the
preceding layer.

Only recovered interface that is itself printable on the current layer is
allowed to propagate to the next layer. This lets neighbouring surviving
branches gradually form a continuous interface while preventing unsupported
interface regions from appearing above pruned branches.

The normal non-build-plate-only path remains unchanged and this fix does not
use tree-support branch-distance dilation.

Addresses bambulab#11630
@BenJule
BenJule force-pushed the fix/issue-11630-tree-support-interface branch from b885a62 to cd09fd6 Compare August 9, 2026 07:56
@BenJule

BenJule commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

@NothFie Thanks again for pointing out the problem with the original approach.

I have now replaced the dilation-based implementation completely. The updated version no longer expands the interface using tree_support_branch_distance.

In On build plate only mode, it now builds a cumulative layer-wide footprint from geometry that is actually printable. Additional requested interface on a layer is accepted only where it can be reached from the printable geometry on the preceding support layer, with growth limited to half of one support extrusion width. Only the resulting printable geometry can propagate further to the next layer.

I validated the updated implementation with the supplied 3MF:

  • On build plate only = ON: support interface 0.20 m / 0.57 g, transition 0.12 m / 0.37 g
  • On build plate only = OFF: support interface 0.37 m / 1.06 g, transition 0.37 m / 1.13 g
  • representative single-layer checks around layers 325-327 showed the recovered interface remaining backed by generated support in the inspected regions
  • the OFF control matches the previous normal-path result
  • Jenkins Linux PR build 27 completed successfully for cd09fd64a4ac2619696759660caac2ea06d28f5b

So the goal is no longer to restore the complete overhang in build-plate-only mode. The recovered interface is deliberately limited by the support that can actually be carried through the surviving tree.

Could you please take another look at the updated approach?

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.

2 participants