Fix fully covered region detection for inverted pyramid shapes#166
Merged
jgphilpott merged 5 commits intomainfrom Feb 28, 2026
Merged
Fix fully covered region detection for inverted pyramid shapes#166jgphilpott merged 5 commits intomainfrom
jgphilpott merged 5 commits intomainfrom
Conversation
Co-authored-by: jgphilpott <4128208+jgphilpott@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix skin patch generation for inverted pyramid examples
Fix fully covered region detection for inverted pyramid shapes
Feb 28, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates cavity “fully covered region” detection so transition layers also handle inverted step geometries (smaller region below the transition), producing the intended O-shaped skin + center infill behavior for inverted pyramids and similar shapes.
Changes:
- Add a symmetric second pass in
identifyFullyCoveredRegionsto detect fully covered regions when the smaller covering region is below the current layer. - Add a regression test that slices an inverted two-slab mesh and asserts center-region behavior on the transition layer.
- Regenerate a large set of example/benchmark G-code outputs and bump
threepatch version.
Reviewed changes
Copilot reviewed 86 out of 87 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/slicer/skin/exposure/cavity.coffee | Adds a second-pass fully-covered-region detection for inverted geometries. |
| src/slicer/skin/exposure/cavity.test.coffee | Adds a regression test for inverted-pyramid transition-layer behavior. |
| resources/gcode/support/tree/dome/upright.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/support/normal/dome/upright.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/skin/pyramid/cylindrical-inverted.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/skin/pyramid/block-inverted.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/skin/dome/upright.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/0%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/10%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/20%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/30%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/40%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/50%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/60%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/70%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/80%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/90%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/triangles/sphere/100%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/0%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/10%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/20%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/30%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/40%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/50%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/60%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/70%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/80%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/90%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/spiral/sphere/100%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/0%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/10%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/20%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/30%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/40%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/50%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/60%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/70%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/80%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/90%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/lightning/sphere/100%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/0%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/10%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/20%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/30%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/40%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/50%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/60%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/70%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/80%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/90%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/hexagons/sphere/100%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/0%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/10%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/20%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/30%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/40%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/50%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/60%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/70%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/80%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/90%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/gyroid/sphere/100%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/0%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/10%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/20%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/30%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/40%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/50%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/60%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/70%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/80%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/90%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/grid/sphere/100%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/0%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/10%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/20%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/30%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/40%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/50%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/60%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/70%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/80%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/90%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/infill/concentric/sphere/100%.gcode | Regenerated G-code (LFS pointer updated). |
| resources/gcode/benchmarks/benchy.low-poly.gcode | Regenerated benchmark G-code (LFS pointer updated). |
| package.json | Bumps three dependency patch version. |
| package-lock.json | Updates lockfile for three@0.183.2. |
Owner
|
@copilot apply changes based on the comments in this thread |
…d layer52Started Co-authored-by: jgphilpott <4128208+jgphilpott@users.noreply.github.com>
jgphilpott
approved these changes
Feb 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
identifyFullyCoveredRegionsin cavity.coffee only handles smaller-region-from-above caseidentifyFullyCoveredRegionsto also handle smaller-region-from-below casefindCoveredRegionshelper (review comment 2867625981)layer52Startedvariable from test (review comment 2867625986)touchesBoundaryguard centralized in helper, consistently applied to candidate in both passes (review comment 2867625988)✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.