Skip to content

Conversation

SoftFever
Copy link
Owner

@SoftFever SoftFever commented Jul 28, 2025

Description

I encountered this awkward situation a few times, as shown in the screenshot below. I only realized that the seam is placed at the front after I finished printing something quickly.
Aligned seam position is usually my preferred choice in most cases, but not in this case.
Models like the one below or sculptures typically have a directional preference; you usually view them from the front angle.
This is the motivation behind implementing this new option. Seams are now prioritized to be placed away from the front, while still aiming to find optimal hidden locations for other orientations (unlike the Back option, which is always placed at the backmost position regardless; see the screenshot for comparison).

image Screenshot 2025-07-28 at 11 14 20 PM

Screenshots/Recordings/Graphs

Compare Aligned with Aligned(avoid front)
Aligned:
image

Aligned(Aviod Front):
image

Compare Back with Aligned(avoid front)

Back:
Screenshot 2025-07-28 at 10 58 33 PM

Aligned(avoid front):
Screenshot 2025-07-28 at 11 00 05 PM

Tests

@pi-squared-studio
Copy link
Contributor

A good addition, I've long dreamed that all seams would shift to invisible sides. To do this, you need to take into account not only the front side, but, as it seems, also the top.
It would be ideal, of course, to create a so-called shadow map, where light sources are placed above a 3-dimensional object, and this will symbolize the preferred viewing angle. And where the position of the shadows will indicate the preferred position to place the seam. Thus, we will shift the seams not only to the back of the object, but preferably to the inner cavities, under overhangs, or hide with adjacent structural details.

@SoftFever
Copy link
Owner Author

A good addition, I've long dreamed that all seams would shift to invisible sides. To do this, you need to take into account not only the front side, but, as it seems, also the top. It would be ideal, of course, to create a so-called shadow map, where light sources are placed above a 3-dimensional object, and this will symbolize the preferred viewing angle. And where the position of the shadows will indicate the preferred position to place the seam. Thus, we will shift the seams not only to the back of the object, but preferably to the inner cavities, under overhangs, or hide with adjacent structural details.

Hehe, this is actually already implemented in that way when you use the Aligned option.
It will calculate the visibility from the hemisphere (very similar to the shadow map you referred to).
Overhangs, etc., are also already taken into consideration. You will notice that overhang locations are avoided if you pay close attention.

@SoftFever
Copy link
Owner Author

For example, this is a visibility (penalty) map computed for each model, it is used in the seam placing algorithm.

Screenshot 2025-07-29 at 12 03 31 AM

@KriswiffaK
Copy link

That penalty map is REAL cool- are they generated when we slice? it'd be neat to see these

@pi-squared-studio
Copy link
Contributor

Hehe, this is actually already implemented in that way when you use the Aligned option.

Perhaps yes, but when I was making a complex articulated model, I had to manually draw the position of the seams in places invisible to the eye. Any algorithm gave such a dispersion that at least a minimum of seams always visible at smooth surfaces.
I think that the customizable shadow map gives a more predictable result. After all, it must also take into account the shading of the articulated parts.
image

@SoftFever SoftFever changed the title Introduce a new seam alignment option: spAlignedAvoidFront. Introduce a new seam alignment option: Aligned back Jul 29, 2025
@SoftFever
Copy link
Owner Author

That penalty map is REAL cool- are they generated when we slice? it'd be neat to see these

They are generated when we slice.
It's not particularly useful for normal users to see this map. The visibility map is just one factor that affects the placement of seams; it will be combined with other factors such as overhang angle and corner angle along the perimeter loop etc.

@SoftFever
Copy link
Owner Author

Hehe, this is actually already implemented in that way when you use the Aligned option.

Perhaps yes, but when I was making a complex articulated model, I had to manually draw the position of the seams in places invisible to the eye. Any algorithm gave such a dispersion that at least a minimum of seams always visible at smooth surfaces. I think that the customizable shadow map gives a more predictable result. After all, it must also take into account the shading of the articulated parts. image

It's not very intuitive, though; please refer to my previous comment. The effort the user spends on customizing the visibility map would be better spent on painting the seams directly on the model, as that approach is more deterministic.

@SoftFever SoftFever requested a review from Copilot July 29, 2025 12:48
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a new seam alignment option called "Aligned back" that prioritizes placing seams away from the front of the model while still finding optimal hidden locations for other orientations. This addresses cases where the standard "Aligned" option places seams at the front of directional models like sculptures or figurines.

  • Adds a new spAlignedBack enum value and corresponding configuration options
  • Modifies the raycast visibility function to apply a front-facing adjustment for the new seam position type
  • Updates seam placement logic to include the new alignment option in relevant comparisons and initialization

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/libslic3r/PrintConfig.hpp Adds the spAlignedBack enum value to SeamPosition
src/libslic3r/PrintConfig.cpp Registers the new seam position option with configuration keys and UI labels
src/libslic3r/GCode/SeamPlacer.cpp Implements the core logic for aligned back seam placement and updates relevant conditions

@SoftFever SoftFever merged commit 8f3ed9b into main Jul 29, 2025
11 checks passed
@SoftFever SoftFever deleted the feature/seam_improved_aligned_mode branch July 29, 2025 13:13
@ianalexis ianalexis mentioned this pull request Jul 29, 2025
13 tasks
@pi-squared-studio
Copy link
Contributor

pi-squared-studio commented Jul 29, 2025

@SoftFever
image
This idea is not as complicated as it seems. Look, you have a window where you can draw seams. It can be added with the "Shadow map sems" parameters. You have one light source that can project shadows onto the model.
The user can select the azimuth and declination of this light source. You can also blur this light source in the fog, or make several spots.
As a result, your model will cast shadows on itself. If we imagine that instead of a light source, it is the eye of an observer, then the most illuminated places will be like those that people look at more often. The shaded areas are the ones where we will place the seams, which will remain the least visible. All internal cavities, where there is less light, will be the most preferred place to seams. If the part is in the shadow of an overhanging element, then the seam will also be located there, even if it is located in the front part.
All that remains is to come up with an algorithm so that it makes a disperse seams on the shadow spot.

I haven't done any 3D modeling at the moment, and studying this topic will take a lot of time to implement. But if such an algorithm is implemented, it will become the best of all seams distribution algorithms.

GiacomoGuaresi added a commit to gingeradditive/OrcaSlicer that referenced this pull request Aug 7, 2025
* Add new machines

* profils fixes

* Update VS30ULTRA (0.4 nozzle).json

* accelerations removing

* Fixes

* Acceleration fixes

* Update .gitignore

* EXO/SH profils updates

* Update .gitignore

* Updates VOLUMIC profils

* VOLUMIC profils updates

* VOLUMIC profils update (v0.36)

* Delete Desactive.json

* Create desactive.json

* Add ironing fan speed control (SoftFever#9944)

* Internal bridge fan speed should be applied only if overhang bridge fan control is enabled

* Reduce duplicate code

* Add ironing fan speed control

* Add fuzzy skin painting (SoftFever#9979)

* SPE-2486: Refactor function apply_mm_segmentation() to prepare support for fuzzy skin painting.

(cherry picked from commit 2c06c81)

* SPE-2585: Fix empty layers when multi-material painting and modifiers are used.

(cherry picked from commit 4b3da02ec26d43bfad91897cb34779fb21419e3e)

* Update project structure to match Prusa

* SPE-2486: Add a new gizmo for fuzzy skin painting.

(cherry picked from commit 886faac)

* Fix render

* Remove duplicated painting gizmo `render_triangles` code

* SPE-2486: Extend multi-material segmentation to allow segmentation of any painted faces.

(cherry picked from commit 519f5ee)

---------

Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>

* SPE-2486: Implement segmentation of layers based on fuzzy skin painting.

(cherry picked from commit 800b742)

* SPE-2486: Separate fuzzy skin implementation into the separate file.

(cherry picked from commit efd95c1)

* Move more fuzzy code to separate file

* Don't hide fuzzy skin option, so it can be applied to paint on fuzzy

* Fix build

* Add option group for fuzzy skin

* Update icon color

* Fix reset painting

* Update UI style

* Store fuzzy painting in bbs_3mf

* Add missing fuzzy paint code

* SPE-2486: Limit the depth of the painted fuzzy skin regions to make regions cover just external perimeters.

This reduces the possibility of artifacts that could happen during regions merging.

(cherry picked from commit fa2663f)

* Update icons

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>

* Make the region compatible check a separate function

* Only warn about multi-material if it's truly multi-perimeters

* Improve gizmo UI & tooltips

---------

Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>

* Update 3mf key for fuzzy skin painting to match BBS (SoftFever#10169)

* Update OrcaSlicer_pl.po (SoftFever#10186)

* New Fill & Patterns Order (SoftFever#10055)

* New Fill Order

Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>

* Reorder Wiki

* Support infills grouped

* Update old rectilinear profiles into new ZigZag algorithm.

Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>

* Renaming compatibility fix + Rename Wiki

Co-Authored-By: SoftFever <softfeverever@gmail.com>

---------

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>

* Fix ubuntu build - Continous appimagetool (SoftFever#10190)

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>

* Fix build issue caused by renamed fill pattern (SoftFever#10197)

Fix issue caused by renamed fill pattern

* InnovatiQ Vendor Addition (SoftFever#10163)

* Added InnovatiQ Vendor Files

* Cover image corrected

* Corrected Texture Image

* Support Interface Pattern modified

* Fix file name casing

---------

Co-authored-by: MohanS <sibi.mohan@innovatiq.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>

* Replace DEPS_BITS with DEPS_ARCH (SoftFever#10183)

* Replace DEPS_BITS with DEPS_ARCH

* Restore missing DEP_MSVC_GEN

* STREQUAL

* STREQUAL

* Other cmakelists

* webview2 rename

* Disable resonance avoidance in calibration routines + Calibration Reorder (SoftFever#10174)

* Disable resonance avoidance in calibration routines

* Reorder Calibrations

* Moved Tolerance to Handy Models

* Feature: Fuzzy Skin Extrusion Mode (SoftFever#9878)

* Feature: Fuzzy Skin Extrusion Mode

This extension allows you to add new features to the fuzzy skin generator.

* Add auto switch to Arachne mode

* Move dialog to `update_print_fff_config` and update how `is_msg_dlg_already_exist` is used

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>

* Add template metalanguage support for infill rotation template (SoftFever#9996)

* Add some new non-overlapping functions for rotation surfaces/infills

I can't post the entire package of changes yet, but this is just the beginning. These features do not affect the latest changes to the pattern rotation system. They are merely adding new functionality.

* Added relative rotation of the infill according to the template.

* Update PrintConfig.cpp

* Update PrintConfig.cpp

* Update PrintConfig.cpp

* Add height limitation

* Both sparse and solid. +one-time instructions

* implementation v3

need for clean code in future

* + Multiply Instructions

* Add solid layers into sparse infill

* Update Layer.hpp

* Update PrintObject.cpp

* Update Tab.cpp

* Remove some bugs and increase quality

* rename apply_model_direction to align_infill_direction_to_model

* Change the data type of top_surface_direction and bottom_surface_direction to float so that they are consistent with other infill direction parameters.

* remove top_surface_direction and bottom surface_direction options

* clean code

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>

* Feature/add_snapmaker_u1_profiles (SoftFever#10225)

* add snapmaker u1 profiles

* tweak some parameters for U1

* Do not connect to default BBL device during app startup (SoftFever#10214)

* Do not connect to default device during app startup

* Connect to last selected machine automatically even if it's lan machine
Simplify default machine connection logic

* Select last machine automatically when available

* Check for LAN connection state after updating combobox selection.
This matches the logic of `SendPrint.cpp`.

* Avoid showing same error message multiple times until next connection attempt.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>

* update readme

* Adjust the CAUTION format to make it more visible, as there are more fake websites claim to be official (SoftFever#10230)

Update README.md

* add CLAUDE.md

* udpate locale

* include OrcaSlicer_profile_validator in nightly build (SoftFever#10233)

* include OrcaSlicer_profile_validator in nightly build

* build OrcaSlicer_profile_validator on Win

* create dmg

* fix / add  de locale (SoftFever#10236)

* fix many stings

* fix

* correct winget command --e (SoftFever#10198)

winget seems to accept -e or --exact.  Modified README.md to use --exact.

* Bug fix: avoid crossing perimeters (SoftFever#10185)

* avoid crossing perimeters

avoid crossing perimeters

Timelapse issue

Update GCode.cpp

Update GCode.cpp

Update GCode.cpp

Update GCode.cpp

* Update GCode.cpp

* Update GCode.cpp

Update GCode.cpp

* Update GCode.cpp

Update GCode.cpp

* Replace tab with space

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>

* Prevent collision: end load line at X(old+5) to avoid nozzle scratching (SoftFever#10193)

End load line at X(old+5) top prevent drip collision

* fix an issue that OrcaSlicer_profile_validator for Mac was not published to nightly build

* Introduce a new seam alignment option: Aligned back (SoftFever#10255)

* Introduce a new seam alignment option: spAlignedBack.

* feat: add ABS, PLA, PETg filaments by NIT (SoftFever#10205)

* feat: add ABS, PLA, PETg filaments by NIT

* feat: Set value of default_filament_colour to empty string

* Wiki Update 8 - Lorita (SoftFever#10094)

* Wiki Home

Fix process-others
VFA test

* Add wall GIFs and update documentation

* Quality Overhangs Wiki Basic

Update README.md
Update Home.md

* Better only one wall

* Add infill ghosting image and update wall order

* Updates process options

* Fix calibration step numbering in documentation

Corrected the step numbers in the calibration order list to maintain sequential order.

* Update Calibration.md

* Update wall and surface quality docs with images and details

* Revise Linux build instructions and restructure sections

Co-Authored-By: cefiar <cefiar@gmail.com>

* APA Clarify compatibility notes

Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>

* Removed Tolerance test from calibration guide. Keeped as note

Co-Authored-By: Noisyfox <timemanager.rick@gmail.com>

* Copilot Review

---------

Co-authored-by: cefiar <cefiar@gmail.com>
Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>

* Fix a bug where the maximum line width limit is inconsistent across different checks.
Fixes SoftFever#10188

* Avoid cross perimeter improvements ported from BBS (SoftFever#10220)

* FIX: fix avoid crossing perimeters not work[github issue SoftFever#6597]

jira: STUDIO-11682

github: SoftFever#6597

Change-Id: Ib86fac93280504e0040f1cce44dad4d02f709c01
(cherry picked from commit 35afceb9a7f4e5a3baba97f054d0e6768e4f59cf)

* FIX: optimize avoid crossing wall

jira: STUDIO-11682

Change-Id: I49b6756a5d3aeb482c019813074d8f6f9cc3c6ef
(cherry picked from commit e9b7006db994d78b9153dedfd0f89447c941cb76)

* Sync with latest BBS code

---------

Co-authored-by: huicong.li <huicong.li@bambulab.com>

* Revert "Refactor stagger concentric seams (SoftFever#6432)"

This reverts commit bd8c2ff.

* Revert "Stagger concentric infill seams. (SoftFever#6184)"

This reverts commit 0286c36.

* Add 0.6/0.8 nozzle for tiertime printer. (SoftFever#10264)

* Fix Ironing/Support patterns (SoftFever#10278)

NoisyGoat

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>

* Fix broken freetype-2.12.1.tar.gz link

* Remap filament for pre-colored models (SoftFever#10303)

* Add a new feature to allow users to remap filament for a pre-painted model.

* Fix the color issues to support the theme

* clean up code

* Fix broken freetype-2.12.1.tar.gz link

* feat: support for multi heating zones

* feat: Remove softfever reference from pipeline

* feat: support for multi heating zones

* feat: update repository references from SoftFever to gingeradditive in workflows and source files

* Update translation catalog

* fix: restore pot file

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* feat: migrate to GingerSlicer

feat: Rename project to OrcaSlicer4pellet and update related configurations

feat: Update SVG files to reflect Inkscape version 1.4 and enhance graphical elements

feat: Comment out app signing and notary steps in macOS build workflow; update artifact names to reflect project rename

feat: Update splash logo SVG and replace logo images

fix: Correct app copy path in build_slicer function to match new project structure

feat: Update project references to OrcaSlicer4pellet, including bundle identifier, executable names, and documentation links

chore: Update various project files for consistency and maintainability

feat: change color to #d72828

feat: change "Orca Slicer" to "Ginger Slicer"

feat: change logo

feat: change logo

fix: update artifact paths to use GingerSlicer instead of OrcaSlicer

fix: update build script to copy GingerSlicer.app instead of OrcaSlicer.app

feat: Update SVG files for OrcaSlicer

feat: add desktop entry for GingerSlicer

wip: change brand colors

wip: change brand colors

feat: remove other profiles

fix: update profile validator command in build workflow

feat: update deployment configuration to use repository and tag for nightly builds

feat: add GingerSlicer Flatpak manifest and metadata

fix: update macOS bundle name from OrcaSlicer to GingerSlicer

wip: change brand colors

wip: delete wiki

wip: change reference to GingerSlicer

wip: change reference to GingerSlicer

fix: pipeline release id

wip: remove custom profile

wip: remove BBL setup page

feat: remove calibration and project tab

feat: change preset for camera and gcode window

fix: minor fix

feat: update readme

wip: change cmake project name

fix: name into macosxbundleinfo

fix: mac pipeline

wip: fix missing cache reference

feat: disable flatpack

fix: dep with deps

fix: try fix pipeline

fix orcaslicer.rc

fix: windows pipeline

fix: mac pipeline

fix: condition of Create DMG without notary pipeline

try: fix orcaslicer Run

fix: OrcaSlicer_dep

fix: OrcaSlicer_deps

feat: implement Orca Profile Validator with custom preset generation

fix: typo Gingerslicer to GingerSlicer

fix: Create DMG without notary mac

* fix: image color

* add script for conveting color

* feat: update SoftFever version to 2.3.1.1

* Gingerslicer dev/change slicer field visibility

* feat: change visibility of the fields

* fix: some tab still visible witout parameter in

* fix: minor image color fix

* fix: change override visibility

* Gingerslicer dev/update profiles 19 07 25

* feat: update profiles for Ginger Additive

* feat: merge previous update

* fix: errors using achab

* fix: remove unused file and folder

* fix: errors in profile

* fix: comment out custom presets validation step

* feat: add workflow to promote nightly builds to release

* fix: update nightly artifacts download command in workflow

* fix: correct JSON formatting in fdm_machine_common.json

* fix: notification color

* fix: thumbnail and metadata

* fix: update version to 1.9.1.1 in fdm_machine_common.json

* fix: update version to 2.3.1.1

* fix: temperature in the GcodePreview by parsing the PRINT_START values

* fix: remove unused profiles

* fix: remove unused doc

* fix: SVG colors and merge errors

* fix: CreatePresetsDialog.cpp

---------

Co-authored-by: VOLUMIC <31067164+VOLUMIC@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
Co-authored-by: KrisMorr <154343071+KrisMorr@users.noreply.github.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-authored-by: InnovatiQ <info@innovatiq.com>
Co-authored-by: MohanS <sibi.mohan@innovatiq.com>
Co-authored-by: Jack Boswell <boswelja@outlook.com>
Co-authored-by: π² <pi.squared.studio@gmail.com>
Co-authored-by: Heiko Liebscher <hliebscher@idn.de>
Co-authored-by: Robert M Lugg <robert.lugg@gmail.com>
Co-authored-by: Simon <ziehmon@smtpd.de>
Co-authored-by: Kirill Ziuzin <kirill.zak@gmail.com>
Co-authored-by: cefiar <cefiar@gmail.com>
Co-authored-by: huicong.li <huicong.li@bambulab.com>
Co-authored-by: GuoGeTiertime <97820723+GuoGeTiertime@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

3 participants