Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Feature: Seam at preferred location #728

Closed

Conversation

dartrax
Copy link

@dartrax dartrax commented Feb 18, 2018

This was requested and proposed here: #342

image

A new modifier "lambda-seam" can be specified and the seam will be aligned nearest to this modifier, when in "rear" new "Custom"-alignment mode.
The rule is as follows:
If there is no modifier, "rearAligned" will be used (no change to usual rear alignment behavior). If there is a lambda-seam-modifier, it will control the preferred seam location for this and every layer above up to the next lambda-seam-modifier.

This is my first contribution to Slic3r, my first work in c++ and perl, and also my first contribution in any open source project ever - I'm still learning how this things work, but that feature was very important for my daily work.

PS: This are actually just 3 commits, I made some mistakes with uploading files in first step. My git environment is under maintenance... :-P

Added a new modifier "lambda-seam" to define a preferred location for the seam in "rear"-mode. The preferred location can be changed in respect to z-height by placing multiple modifiers in different heights.
Added a new modifier "lambda-seam" to define a preferred location for the seam in "rear"-mode. The preferred location can be changed in respect to z-height by placing multiple modifiers in different heights.
Added a new modifier "lambda-seam" to define a preferred location for the seam in "rear"-mode. The preferred location can be changed in respect to z-height by placing multiple modifiers in different heights.
@austinvojta
Copy link

Logged in just to say thanks for giving this a go!! Big ups to you for contributing and giving the coding a shot, hopefully it works well and can be implemented (and perhaps a bit polished by the pros by adding a separate option for "Custom" as a seam position). But great idea for a feature, IMO something Slic3r has been missing for quite some time.

@dartrax
Copy link
Author

dartrax commented Feb 20, 2018

Thank you, @austinvojta, for that kind words!
If we have a separate "custom" option, we still need a strategy for placing seam when the user did not provide the lambda-seam-modifier at all or for the section between Z=0 and the first lambda-seam-modifier.
While currently only supporting "back"-strategy in this case, one may want to be able to combine the custom-seam-location with any other strategy in future. To be ready for this it may be enough to rename "Rear" to "Rear or custom" and provide an explanation below (like it has been done with the Cooling settings), that explains the possibility to add one or more lambda-seam-pointers to the object's settings.
Of course we'd also need to update the docs.

@daragill
Copy link

I would LOVE to see this be implemented! This is a fantastic feature that looks like its almost there! Really great job dartrax!

@lordofhyphens
Copy link
Contributor

Interesting use of lambda modifiers by the way.

@dartrax
Copy link
Author

dartrax commented Apr 3, 2018

Thank you, @lordofhyphens! Thank you too, @daragill =)
This way, we have visual feedback of the preferred position of the seam in respect to the actual CAD model. This is far better than Simplify3D with their unintuitive X-Y-Coordinate-Setting.

I have to admid that I have one or two bugs in this commit (at least ;-) ):

  1. If the model is rotated around the Z axis, the resulting seam position is misplaced (as if the model was not rotated)
  2. Sometimes the seam gets placed at a concave edge that is too far away from the preferred position in my opinion. I should finetune that.
    Additionally, I would like to implement an option to neglect the overhang of a vertice.

I hope to find time to improve this commit soon. Of course, anybody else is welcomed to join.

@lordofhyphens
Copy link
Contributor

lordofhyphens commented Apr 3, 2018 via email

dartrax added 4 commits April 24, 2018 20:23
- Added Weight-Parameter to the Seam Lambda Modifier to be able to define
  how steep an overhang may be to be ignored or avoided in seam
  positioning
- Fixed a bug where custom seam was not positioned correctly on rotated or scaled objects
@dartrax
Copy link
Author

dartrax commented Apr 28, 2018

Hello,
I want to give you some information about the current state of this feature.
@lordofhyphens: Thanks for your comment, I would be honored if you steal that ;)

First, the changes:

  • Working correctly with rotated or scaled objects now
  • New Weight-Parameter for the Lambda Seam modifier:
    • slight overhangs or even steep overhangs can be ignored so that the seam will sit in the overhanging area by choosing a height value
    • the custom seam positioning of preceding layers can be canceled for the upper layers by choosing Zero
  • I decided to go for @austinvojta's idea of a "custom" seam position option for following reasons. When there is no lambda modifier, it will use the "Aligned" approach.
    • Being able to ignore the lambdas without deleting them (so the custom seam config won't be lost)
    • Having some kind of hint that this feature exists at all at a place where the user expects it
    • It was easier to implement :P

What's next?
I will continue using and testing the feature when I'm back at work in the following weeks. Feel free to do the same, report (of fix) any bugs and join the discussion :)

How to test?
I've uploaded a compiled version for Win 64bit on my release page:
https://github.com/dartrax/Slic3r/releases/tag/version_1.40.0-alpha

Some examples
Showing the test model and two example modifieres:
image

Front view:
image

Slicing result:
image

Another example:
image

Slicing result:
image

@ememolero
Copy link

Hello!,
Yesterday I discovered this incredible modification and I am impressed with the results:

perfect seams 1
perfect seams 2

Can you see the Seams?? ;P

Other programs use different methods for this but none has ever convinced me (CraftWare only, but it seems quite unfinished in many things). In all versions of Slic3r the seams end up being either a mess or a problem. Slic3r has not had much success in general to generate custom seams and the options that there are, in my opinion, are very loose. For me the control of the seam points is essential, with a good alignment of seams and strategy (as Zortrax Z-Suite does) you can control the flow of filament to that point and that is always the same in the retraction to obtain results like those ("Rear" does not work well there and the back part of the pulley was a chaotic seam as with "Aligned").

Why was this project stopped? I find an incredible breakthrough and the brilliant idea of ​​using lambda modifiers. If I could I would like to contribute some ideas to this project to get pieces with an incredible finish. I tried to update Slic3r myself to the latest version of Slic3rPE recompiled it with this "mod" but it escapes my little programming knowledge.

@dartrax
Copy link
Author

dartrax commented Sep 28, 2018

Hi ememolero!
First let me thank you for that positive feedback and promotion of my work. I'm happy that you can make use of it.

I'd have assumed that "aligned" should have worked, too, because "aligned" tries to place the seam in a concave edge and should have found that in the ground of the gear teeth. One reason I can think of is that the concave edges might be too much rounded to be found by the "aligned" algorythmus.

This is not a real project, it is more like a quick fix for me to get this functionality for my own needs, and I like to share it because - of course - I would like to see this as an offical feature in Slicer, which would mean that I don't need to recompile if I want to use the newest slicer updates ;-)

That didn't happen yet and we can only speculate about the reasons. Fact is that this is not yet fully thought from the user interface point of view and other opinions how to design the user interactions exist: #946
Or there may be other plans how to implement that feature. As you can read in the 1.41.1 beta description, there has been some ongoing work at the lambda dialog (that has probably lead to the conflicts with this branch) and there are plans to update the user interface with 3D gizmos for easy manipulation of lambdas.

So to continue using this "mod" with the newest slicer update, the conflicts must be resolved. This shouldn't be too hard because the ObjectPartsPanel.pm only affects the UI, not the underlying algorythm. However, I can't promise anything with this because I'm new to git and every commit and co still takes some time for me to understand and work through the errors, and I'm a little bit short with time right now...

@ddavidebor
Copy link

Please work on this! This is absolutely amazing for production-ready parts

@guestisp
Copy link

+1000 for this

@ManuGithubSteam
Copy link

This could be really good!

@pepelevamp
Copy link

hahaaAAaa this is fantastic. i have been wanting this feature for ages. well done. youve made me not so chicken about contributing to open source stuff / this project. especially cos i am both new to C++ and new to contributing to open source too. nice work.

@smurfix
Copy link
Contributor

smurfix commented Dec 4, 2019

@dartrax Are you still working on this? I'd like to test this with the current slicer.

@dartrax
Copy link
Author

dartrax commented Dec 4, 2019

Hi,
currently not, because I'm not having any projects where I use this slicer or need this feature right now. While this may change (somewhere in the future), I'd like to encourage everybody to take this idea/first step and bring it to the current prusa version. It is not as hard as you think ;)

@mversteegh
Copy link

Any way how such feature can be pulled in to prusa slicer? I have not found a slicer having a proper control for the seam. I'm printing organinc shapes, so I would love to have a better control (no places to realy hide a seam).

@CroXY3D
Copy link

CroXY3D commented Jan 17, 2020

Check how kisslicer does this. You specify a vector and a an angle spread for seam positions. Makes it possible to still randomize it, but just on one sector of the part. Fairly intuitive interface as well

@dartrax
Copy link
Author

dartrax commented Feb 7, 2020

Hi @wesc23,
thanks for your suggestion. I've tested how kisslicer does it and I seem to be unable to place the seam at the inside of a C-Shaped object. Reason: The starting point of the vector is outside of this shape. So, there is not enough freedom to place the seam here, too.

image

@derekonilsen
Copy link

I can't seem to get the preview of the sliced objects to display "travel" "retractions" and "unretractions", "shells" is also greyed out. Is there something simple I need to do to fix this?

@dartrax
Copy link
Author

dartrax commented Jul 26, 2020

@derekonilsen, do you refer to the 1.4 alpha from this #728 (comment) post? This is a very old release where the feature you mentioned was still in development and not ready to use.

@derekonilsen
Copy link

@derekonilsen, do you refer to the 1.4 alpha from this #728 (comment) post? This is a very old release where the feature you mentioned was still in development and not ready to use.

Yes, that is what I am referring to. Is there an updated version?

@dartrax
Copy link
Author

dartrax commented Jul 26, 2020

No, but I've seen a very interesting comment by @lukasmatena here: #2527 (comment)

You could also try a new fork by @supermerill: https://github.com/supermerill/SuperSlicer/wiki
It features

new option for seam ( 'nearest', moved the old 'nearest' to 'hidden')
with 'external perimeter first', new option 'vase mode' to hide the seam

And it will have something very similar soon: supermerill#152 (comment)

  • you can add sphere via the contextual menu
  • for each layer, it will get the nearest sphere in the Z axis
  • it will put the seam at the nearest point from the center of the sphere (in the xy plane)

@lukasmatena
Copy link
Collaborator

lukasmatena commented Oct 11, 2020

We have implemented a paint-on custom seam for 2.3 release. Currently in master, alpha should be out in less than two weeks. There is no extra 'custom seam' option like in this PR, custom seam areas just limit where the "normal" options should be used. It took a long time but we got there. Please, report any issues.

This PR came in times when slicer was already being rewritten from Perl to C++ and the modifiers were extensively worked on, so integrating it was hardly possible. We also hoped to make a better UI than to use the modifier mesh hack, which we hopefully did. There's no point in keeping this open now. Sorry, @dartrax .

@dartrax
Copy link
Author

dartrax commented Oct 11, 2020

No need to be sorry @lukasmatena, I appreciate that there will be a much better solution! I'm looking forward testing it in the next alpha.
As an alternative, we can also use @supermerill superslicer, which has an integrated seam modifier.

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.