Skip to content

Add advanced fuzzy skin features ported from OrcaSlicer#15229

Open
holdenkilbride wants to merge 3 commits intoprusa3d:masterfrom
holdenkilbride:master
Open

Add advanced fuzzy skin features ported from OrcaSlicer#15229
holdenkilbride wants to merge 3 commits intoprusa3d:masterfrom
holdenkilbride:master

Conversation

@holdenkilbride
Copy link

Port OrcaSlicer's enhanced fuzzy skin implementation adding:

New noise types:

Perlin: smooth, natural-looking patterns
Billow: cloud-like billowy patterns
RidgedMulti: sharp ridge patterns
Voronoi: cell-like patterns
Classic: original random behavior (default)

New modes:

Displacement: offset points perpendicular to wall (original)
Extrusion: vary extrusion width (requires Arachne)
Combined: both displacement and width variation

New options:

AllWalls fuzzy skin type: fuzzify internal perimeters too
First-layer toggle: control bed adhesion vs aesthetics
Noise scale, octaves, persistence parameters

Implementation:

Vendor libnoise library via deps/ system (LGPL-2.1+)
Add slice_z to PerimeterGenerator for 3D noise sampling
GUI shows/hides options based on relevance
Arachne compatibility check for width-varying modes
Screenshot 2026-02-09 at 11 30 30 AM Screenshot 2026-02-09 at 11 32 42 AM

holdenkilbride and others added 3 commits February 5, 2026 20:24
Port OrcaSlicer's enhanced fuzzy skin implementation adding:

New noise types:
- Perlin: smooth, natural-looking patterns
- Billow: cloud-like billowy patterns
- RidgedMulti: sharp ridge patterns
- Voronoi: cell-like patterns
- Classic: original random behavior (default)

New modes:
- Displacement: offset points perpendicular to wall (original)
- Extrusion: vary extrusion width (requires Arachne)
- Combined: both displacement and width variation

New options:
- AllWalls fuzzy skin type: fuzzify internal perimeters too
- First-layer toggle: control bed adhesion vs aesthetics
- Noise scale, octaves, persistence parameters

Implementation:
- Vendor libnoise library via deps/ system (LGPL-2.1+)
- Add slice_z to PerimeterGenerator for 3D noise sampling
- GUI shows/hides options based on relevance
- Arachne compatibility check for width-varying modes
Test coverage includes:
- should_fuzzify() logic for all FuzzySkinType variants (None, External, All, AllWalls)
- First layer option behavior
- fuzzy_polygon() with all 5 noise types (Classic, Perlin, Billow, RidgedMulti, Voronoi)
- fuzzy_extrusion_line() with all 3 modes (Displacement, Extrusion, Combined)
- Coherent noise pattern consistency across Z heights
- apply_fuzzy_skin() with empty perimeter regions
- Integration tests slicing a cube with various fuzzy skin configurations

All 84 assertions pass across 6 test cases.
Port OrcaSlicer's enhanced fuzzy skin implementation adding:

New noise types:

    Perlin: smooth, natural-looking patterns
    Billow: cloud-like billowy patterns
    RidgedMulti: sharp ridge patterns
    Voronoi: cell-like patterns
    Classic: original random behavior (default)

New modes:

    Displacement: offset points perpendicular to wall (original)
    Extrusion: vary extrusion width (requires Arachne)
    Combined: both displacement and width variation

New options:

    AllWalls fuzzy skin type: fuzzify internal perimeters too
    First-layer toggle: control bed adhesion vs aesthetics
    Noise scale, octaves, persistence parameters

Implementation:

    Vendor libnoise library via deps/ system (LGPL-2.1+)
    Add slice_z to PerimeterGenerator for 3D noise sampling
    GUI shows/hides options based on relevance
    Arachne compatibility check for width-varying modes
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.

1 participant