-
-
Notifications
You must be signed in to change notification settings - Fork 32
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
Travel lines are clipped #278
Comments
It's an interesting challenge to solve. The clipping mask is needed to hide travel lines of layers above the upper limit, but we want lines that start on a visible layer to show in full. A solution could be to detect such travel paths that should be visible and have some parts hidden and render them independently without the clipping mask. I don't remember if travel lines are rendered in batches like the extrusion paths. If that's the case, we'd have to exclude them from the batch. I think fixing this would be most helpful when z-hop is enabled on the slicer. Travels would systematically be "lost" on the last layer. Maybe clipping was a good idea for performance and ease of implementation, maybe we need to reconsider the approach? I'm also thinking about an hybrid approach: clipping could be used for the first x frames that would offer a fast initial draw, followed by an actual render of the only subset of visible layers, without clipping. Some sort of delay would allow for changing the height and the result would remain smooth. We'd get the best of both worlds. Kind of when video games have a low-rez render first and we see accuracy and details on the next frames. Of course, on the first frames, this problem would still show. But that would only be for the first couple of frames and it would be then visible when the rendering strategy changes for the more accurate one. |
I hadn't even thought about z-hops. Good one. Use casesI suggest we first define the edge cases and what the user would like to see:
It's all about layersSo this whole thing again challenges our thinking about the most fundamental thing in 3d printing: layers! ;-) I we solve this well, we should have a very solid foundation! 🙌🏻 I'm thinking now that every extrusion and every travel move needs to have an associated layerIndex. The slicer actually injects layer change markers and I expect it will do that too for non-planar. (we need confirmation about this) (The layer problem is actually not one that has a single solution that works for everyone. We might want to consider making this logic customizable. As in: we can have basically 2 algorithms available to define the layers one based on metadata and one based on the old logic. This will have a cost in terms of complexity tho) Next steps
|
Yes, 100%. We can start with a basic implementation first. We talked about this many times in the past, gcode metatada in the form of comments is a bit different from slicer to slicer and we could have dictionaries and stuff. We don't absolutely need all of this and to over-engineer it as long as we can iterate on it.
Oh, I did not realize the clipping mask was there the whole time! Yes, 100%! This case is the most important and the easiest to fix. |
Agreed with that case. We can already detect that and we have a tolerance algorithm. Section Analysis can be useful. It's clipping, but on the plane you want! Technically, our layers implementation is a section analysis on a plane parallel to the bed 🤷🏻 😆 Another tool could be to select a subset of gcode line numbers instead of layers. |
Often there are travel moves above the topmost extrusion layer. Due to the clipping planes, of which the max is initialized at the topmost extrusion layer, those travel lines are clipped.
The text was updated successfully, but these errors were encountered: