59 Commits

Author SHA1 Message Date
Vojtech Bubnik
db77331004 Slight refactor of Organic supports after merge
3d8f84ed76620790eac798cfa2caf17bf0b08f17
2023-02-10 14:09:47 +01:00
Vojtech Bubnik
3d8f84ed76 Merge remote-tracking branch 'remotes/origin/master' into tr_SuggestedTreeSupportFixes 2023-02-10 12:35:46 +01:00
Thomas Rahm
c9605580ee Fix issue causing some tips to not generate, as remaining_overhang was nearly always empty
Fixes https://github.com/prusa3d/PrusaSlicer/issues/9459
2023-02-09 22:27:30 +01:00
Vojtech Bubnik
f1977b07be Organic supports: Adding bridge detection using the same algorithms
as the regular supports.
Partial fix to #9493
2023-02-09 16:47:57 +01:00
Vojtech Bubnik
a1b0188e3a Organic supports: Don't auto generate supports if supports disabled,
but "enforce number of first layers" is enabled.
Fixes #9477
2023-02-08 15:06:39 +01:00
Vojtech Bubnik
9ab88d75e0 Fixing overlaps of organic supports: Base vs. interface layers. 2023-02-08 14:40:50 +01:00
Vojtech Bubnik
aaffcbc282 Fixed crash in Organic supports with a single support layer only.
Fixes #9557
2023-02-06 16:52:09 +01:00
Vojtech Bubnik
7a873201d8 Organic supports: Fixed division by zero for soluble supports
(with zero separation gap between object and supports)
Fixes #9555
2023-02-06 14:58:53 +01:00
Vojtech Bubnik
3e1348c062 Organic supports: Reduce memory footprint. 2023-01-31 17:41:36 +01:00
Vojtech Bubnik
49caab98cb Organic supports: Improving smoothing / collision avoidance convergence 2023-01-31 15:55:42 +01:00
Vojtech Bubnik
2a1e12131b Cancellation of tree supports 2023-01-31 09:13:05 +01:00
Vojtech Bubnik
cd0ed00ef5 TREE_SUPPORT_ORGANIC_NUDGE_NEW enabled 2023-01-27 13:50:46 +01:00
Vojtech Bubnik
3e6302d4f3 Organic supports: Patching the missing trees for support enforcers 2023-01-27 13:09:20 +01:00
Vojtech Bubnik
6a9bcf8405 Tree supports: Switched to new Organic smoothing & collision avoidance.
Follow-up to 3d9f39e2584c5015b9e15f757c65a752f06b7a65
which had the new smoothing & collision avoidance disabled by mistake.
2023-01-26 13:59:32 +01:00
Vojtech Bubnik
3d9f39e258 Speed up of organic support smoothing & collision detection. 2023-01-24 14:31:33 +01:00
Vojtech Bubnik
77c521eabb Tree supports: Disabled some more error reporting. 2023-01-19 17:20:42 +01:00
tamasmeszaros
76d0e11699 Merge branch 'master' into et_tm_sla_volumes_6-SPE-1285 2023-01-18 16:40:12 +01:00
Vojtech Bubnik
8ab0c2cb3d Suppressed tree_supports_show_error() in production code.
Changed error strings to string_view literals.
2023-01-18 10:08:52 +01:00
Thomas Rahm
062a619381 Ensure that no points are placed the implicit line from last to first vertex, as the input is a line and not a polygon. 2023-01-13 02:58:43 +01:00
Thomas Rahm
6db30602a0 Make supported overhangs not differ between a tip radius of half of a line width to a tip radius of one line width 2022-12-21 01:08:46 +01:00
tamasmeszaros
2144f81bf1 Useful backend improvements from sla volumes branch 2022-11-29 11:10:52 +01:00
Vojtech Bubnik
19e7c55a2a TreeSupports: Debugging the collision caches 2022-11-18 12:27:23 +01:00
Vojtech Bubnik
babc8a88a1 clip_clipper_polygon_with_subject_bbox() and diff_clipped() extracted
from TreeSupports to ClipperUtils to be generally available.
diff_clipped() is an optimized version clipping the "clipping" polygon
using clip_clipper_polygon_with_subject_bbox().
To be used with complex clipping polygons, where majority
of the clipping polygons are outside of the source polygon.
2022-11-15 16:54:26 +01:00
Vojtech Bubnik
acbc60f3e3 Better const correctness 2022-10-19 16:27:15 +02:00
Vojtech Bubnik
842283cd3b WIP TreeSupports - organic supports: Partial fix for bottoms
of supports over object locked against laplacian smoothing
2022-10-13 14:42:25 +02:00
Vojtech Bubnik
2365b3a8dd WIP TreeSupports: Now it is possible to switch between the normal
and the "organic" supports.
2022-10-12 14:33:36 +02:00
Vojtech Bubnik
418734f41b WIP Tree supports with circular crossections: Clipping the remaining
collisions with the object.
2022-10-10 16:58:43 +02:00
Vojtech Bubnik
5cb4b63325 WIP TreeSupports: Experimental code draw_branches() to produce
trees with circular cross section
2022-10-10 14:19:06 +02:00
Vojtech Bubnik
3350292ff2 WIP TreeSupports
1) Nodes allocated using std::deque, not as std::set of pointers for
   less memory allocator pressure.
2) Parents changed to parent indices, so that one may allocate side
   by side data for nodes addressed by these indices. Thus now elemens
   are being marked as deleted and the whole node database is being
   compacted in one shot instead of deleting an element from std::set.
3) Removed SUPPORT_TREE_ONLY_GRACIOUS_TO_MODEL for simplicity, it was
   never used.
4) Fixed crash when slicing multiple objects with three supports.
2022-09-29 17:10:53 +02:00
Vojtech Bubnik
2b3d4b2868 WIP TreeSupports:
1) Reworked the merging code to use an AABB tree for better locality.
   The old code sorted lexicographically, the new code splits bounding
   boxes by the longest axis.
2) Refactored to a functional style with better const correctness.
3) Reduced memory allocation pressure by replacing std::set with
   vectors, in place merging etc.
2022-09-26 11:20:20 +02:00
Vojtech Bubnik
87dcba3e30 WIP TreeSupports: turned SupportElement::area from pointer to value. 2022-09-26 11:20:20 +02:00
Vojtech Bubnik
f790468cca WIP TreeSupports: Extracting make_circle() into Polygon.cpp,hpp 2022-09-01 15:47:13 +02:00
Vojtech Bubnik
19f0d94be3 WIP TreeSupports: Removed support_xy_distance_overhang,
replaced with condition that support_xy_distance >= support_xy_distance_overhang
2022-09-01 14:30:20 +02:00
Vojtech Bubnik
078d496eef WIP TreeSupports: Removed some features not pertinent to PrusaSlicer:
Commented out support angles.
2022-09-01 13:37:08 +02:00
Vojtech Bubnik
97af6f6f39 WIP TreeSupports: Fixed support blockers. 2022-09-01 11:53:14 +02:00
Vojtech Bubnik
0f71a41f53 WIP TreeSupports: Fixed self intersections on overhang regions
with support interfaces enabled.
2022-09-01 11:19:36 +02:00
Vojtech Bubnik
eacacc7317 WIP Tree Supports: Added anchors at the starts of tree support loops,
extruding the support loops in consistent (CCW) orientation,
always starting with the anchor.
2022-08-30 17:23:30 +02:00
Vojtech Bubnik
c36af0e739 WIP TreeSupports: Expand enforced areas so that the supports will be
generated even on steep overhangs.
2022-08-26 09:31:12 +02:00
Vojtech Bubnik
51cfec55cf WIP TreeSupports: Fixed yet some more compiler warnings 2022-08-24 15:32:23 +02:00
Vojtech Bubnik
f54ba6aeaf WIP TreeSupports: Fixed some more compiler warnings 2022-08-24 14:39:13 +02:00
Vojtech Bubnik
9045ff8f0e WIP TreeSupports: Fixed some compiler warnings 2022-08-24 14:03:21 +02:00
Vojtech Bubnik
5b62a4954e WIP TreeSupports: Taking into account the support angle threshold
and number of enforced layers.
2022-08-24 13:45:56 +02:00
Vojtech Bubnik
abc2bff3d8 One more OSX specific fix 2022-08-24 09:06:37 +02:00
Vojtech Bubnik
bfbfdaedb9 WIP TreeSupports: Fixed some compiler warnings and errors. 2022-08-23 12:04:18 +02:00
Vojtech Bubnik
b9e7cd2d7b WIP TreeSupports: Improved speed of TreeModelVolumes by better
parallelization, cleaned up the code by better structuring
the collision caches with their mutexes.
2022-08-23 11:37:06 +02:00
Vojtech Bubnik
42b546ae9c WIP TreeSupports: Refactored TreeModelVolumes for clarity 2022-08-16 11:54:30 +02:00
Vojtech Bubnik
85e9ae75bb WIP Tree Supports: Enabled support enforcers / blockers 2022-08-15 10:16:16 +02:00
Vojtech Bubnik
af7108f792 WIP Tree Supports: Bunch of fixes and optimizations 2022-08-15 08:41:24 +02:00
Vojtech Bubnik
b0af552455 WIP TreeSupports: Little optimization - don't use std::function,
don't make unnecessary copies of Polygons
2022-08-03 09:40:30 +02:00
Vojtech Bubnik
fd0c84319e WIP Tree Supports: Fixed one integer overflow. 2022-08-02 14:09:44 +02:00