Lukáš Hejl
2ab0ea4c47
Merge branch 'lh_mm_segmentation'
2021-08-10 22:30:45 +02:00
Lukáš Hejl
18cff61bd2
Reworked visualization of selected triangles by seed fill and bucket fill inside the multi-material painting gizmo. Now is drawn boundary around a selected area, and also all triangles inside the selected area are drawn with a darker color.
2021-08-10 21:38:48 +02:00
Lukáš Hejl
e5ce748b10
Added missing includes (GCC 11.1)
2021-08-10 21:37:10 +02:00
Lukáš Hejl
b174dacc85
Added a missing include (GCC 11.1)
2021-08-07 08:29:32 +02:00
Lukáš Hejl
dc4afb5bfc
Merge branch 'lh_mm_segmentation'
2021-08-06 16:47:13 +02:00
Lukáš Hejl
dd55b55853
Swapped the position of seed fill and bucket fill inside the multi-material gizmo. Changed the default value for the seed fill angle.
2021-08-06 16:46:48 +02:00
Lukáš Hejl
56d4ba7a29
Fixed the issue when the object was selected by seed fill or bucket fill could stay selected when the painting tool was switched to brush.
2021-08-06 16:46:48 +02:00
Lukáš Hejl
666cdeecd9
Forced recomputation of seed fill selected areas when the seed fill angle is changed by ALT+mouse wheel.
2021-08-06 16:46:48 +02:00
Lukáš Hejl
cf2a7f4dfa
Fixed the possibility of changing brush size in the multi-material gizmo by ALT+mouse wheel when brush for painting single triangles is selected.
2021-08-06 16:46:48 +02:00
Lukáš Hejl
9b19060334
Merge branch 'lh_mm_segmentation'
2021-08-03 13:07:00 +02:00
Lukáš Hejl
9e5fc2e713
XY size compensation is ignored when the object is also painted using the multi-material painting gizmo. A user is also notified about it.
2021-08-03 13:03:06 +02:00
Lukáš Hejl
742a373c1f
Added invalidation of the sliced object when gap-fill enabled/disabled if the object is painted using the multi-material painting gizmo.
...
Filtering of unprintable regions in multi-material segmentation depends on if gap-fill is enabled or not. So sliced object is invalidated when gap-fill was enabled/disabled by option "gap_fill_enabled" or by changing "gap_fill_speed" to force recomputation of the multi-material segmentation.
2021-08-03 13:03:06 +02:00
Lukáš Hejl
b16aada962
Added clipping of finite Voronoi edges that have coordinates that don't fit inside type coord_t.
2021-08-03 13:03:06 +02:00
Lukáš Hejl
93b86da770
Fixed the wrong threshold in the multi-material segmentation.
2021-08-03 13:03:06 +02:00
Lukáš Hejl
d13c08837c
Fixed an issue that some triangles weren't selected when bucket fill was used in the multi-material painting gizmo.
2021-08-03 13:03:06 +02:00
Lukáš Hejl
5bd14cf83a
Fixed the compiler warning.
2021-08-03 10:16:52 +02:00
Lukáš Hejl
bad51cdb52
OSX specific: Fixed darker colors of objects inside multi-material gizmo on macOS running on Arm64 CPU.
...
For Apple's on Arm CPU computed triangle normals inside fragment shader using dFdx and dFdy has the opposite direction. Because of this, objects had darker colors inside the multi-material gizmo.
Based on https://stackoverflow.com/a/66206648 , the similar behavior was also spotted on some other devices with Arm CPU.
2021-08-02 14:59:03 +02:00
Lukáš Hejl
5229acc693
Fixed compilation on Linux and macOS.
2021-07-31 12:10:38 +02:00
Lukáš Hejl
9f0c6576f6
Added missing includes (GCC 11.1)
2021-07-29 13:38:10 +02:00
Lukáš Hejl
bfad83e796
Merge branch 'lh_mm_segmentation'
2021-07-29 11:46:41 +02:00
Lukáš Hejl
da3a0c6332
Fixed a crash in the multi-material segmentation when projected lines are outside of the BoundingBox used for EdgeGrid.
2021-07-29 11:45:02 +02:00
Lukáš Hejl
f577350f1f
Reworked bucket fill so that all neighboring triangles are computed based on information about triangle neighbors.
2021-07-29 11:45:02 +02:00
Lukáš Hejl
6d0e5d3b9c
Enabled to set "Maximum width of a segmented region" per object.
2021-07-29 11:45:02 +02:00
Lukáš Hejl
37f5f12f52
Replaced unnecessary double storing of edges in a graph for the multi-material segmentation by storing indices into a shared array of arcs.
2021-07-29 11:45:02 +02:00
Lukáš Hejl
216589fdb1
Get rid of unnecessary double storage of processed input polygons in the multi-material segmentation as ExPolygons and also as Polygons. All processed input polygons are now stored as ExPolygons.
2021-07-29 11:45:02 +02:00
Lukáš Hejl
38866b65b0
Get rid of unnecessary double calling of TriangleSelector::reset() in some cases when TriangleSelector::deserialize() is called.
2021-07-29 11:45:01 +02:00
Lukáš Hejl
2569da95d5
Parallelized the projection of painted regions in multi-material segmentation.
2021-07-29 11:45:01 +02:00
Lukáš Hejl
7a60f1793c
Fixed a possible overflowing of a painted area to an unpainted area in multi-material segmentation.
...
It was reworked graph generation for multi-material segmentation. Now only oriented arcs in one direction are added to the graph for input polygons. This direction matches the direction of the lines in the input polygons.
2021-07-29 11:45:01 +02:00
Lukáš Hejl
4d2bee36e5
Fixed some compiler warnings.
2021-07-21 12:54:28 +02:00
Lukáš Hejl
5405ab1986
Optimized seed fill and bucket fill selection to recompute selection only in case the cursor is pointing on a non-selected triangle.
2021-07-19 11:30:40 +02:00
Lukáš Hejl
5b67fafb75
Fixed a crash in the multi-material gizmo when bucket fill is selected.
2021-07-19 11:30:35 +02:00
Lukáš Hejl
b6b52fee73
Fixed an issue when the object in the multi-material gizmo had the wrong default color when the multi-material gizmo was first time opened after loading a painted 3MF file with different extruders colors than in the printer profile in Slicer.
2021-07-16 11:39:50 +02:00
Lukáš Hejl
ab7c758881
Merge branch 'lh_mm_gizmo_bucket_fill'
2021-07-16 09:27:18 +02:00
Lukáš Hejl
51b94f4747
Added the bucket fill tool into the multi-material gizmo. Also, the multi-material gizmo was reworked to show only options applicable for a chosen painting tool.
2021-07-16 09:19:40 +02:00
Lukáš Hejl
389ccf6d92
Fixed compilation in debug mode by removing the forgotten assert.
2021-07-13 12:56:01 +02:00
Lukáš Hejl
ce59e68be1
Merge branch 'lh_mm_gizmo_rendering'
2021-07-13 11:36:42 +02:00
Lukáš Hejl
6194e67e68
Triangle normals and lighting are computed inside the fragment shader for the multi-material painting gizmo.
...
It results in a six-fold reduction of the amount of data transferred into GPU because there is no need to duplicate vertices for every triangle. Also, normals aren't needed to be transferred to GPU.
2021-07-13 11:23:36 +02:00
Lukáš Hejl
a467d0e30e
Default object color is shown in the multi-material painting gizmo when the user switches to a printer with fewer extruders than the number of extruders used to paint the object.
2021-07-13 11:23:36 +02:00
Lukáš Hejl
c0092a7b0a
Speed up the rendering of triangles in painting gizmos by only copying triangle data to the GPU when triangles were changed by painting.
2021-07-13 11:23:36 +02:00
Lukáš Hejl
569b7d7dab
Removed unnecessary backward compatibility with old multi-material painted 3MF from the early stage of development.
2021-07-12 13:37:33 +02:00
Lukáš Hejl
f78efa99fe
Fixed an issue where seed fill selection stuck displayed when the mouse was moving inside multi-material gizmo when the gizmo was overlapping the model.
2021-07-12 13:21:10 +02:00
Lukáš Hejl
8da083b702
Fixed compilation on Linux
2021-06-30 08:56:35 +02:00
Lukáš Hejl
f10ec4d21c
Merge branch 'lh_multi_material_segmentation_fix'
2021-06-28 08:11:17 +02:00
Lukáš Hejl
cb93c8ce99
Used function smooth_outward in multi-material segmentation to get rid of artifacts arisen after merging multi-volume objects.
2021-06-28 08:09:06 +02:00
Lukáš Hejl
a426093f12
Replaced boost::rtree in multi-material segmentation with much faster ClosestPointInRadiusLookup.
2021-06-28 08:09:06 +02:00
Lukáš Hejl
ce738102c6
Optimized the projection of painted triangles in multi-material segmentation. Added heuristics to skip most of the expensive calculations in cases where it is certain that performing these calculations would be useless.
2021-06-28 08:09:06 +02:00
Lukáš Hejl
48789e5ae1
Added a limitation on the number of usable extruders in the multi-material gizmo. If a printer has more extruders than this limit, a notification about it is shown.
2021-06-28 08:09:06 +02:00
Lukáš Hejl
23b26cb3f3
Fixed the issue where the object wasn't displayed after pressing the ESC key in the multi-material painting gizmo.
...
key in the multi-material painting gizmo.
Fixed also a similar issue in support and seam gizmos where an object was displayed with the wrong color after pressing the ESC key.
2021-06-28 08:09:06 +02:00
Lukáš Hejl
684b66125e
Fixed an issue where multi-material segmentation ignored the last extruder.
2021-06-17 19:26:40 +02:00
Lukáš Hejl
2e54648b97
Fixed a multi-material painting gizmo crash when extruders colors aren't initialized, which happens when switching between SLA and FDM printer.
2021-06-16 17:05:24 +02:00
Lukáš Hejl
b32202e597
Fixed incorrectly displayed custom supports and seams in the support and seam gizmos after 7377fc34ac.
2021-06-16 13:41:35 +02:00
Lukáš Hejl
ccb53f71b6
Merge branch 'lh_multi_material_segmentation_fix'
2021-06-16 06:06:07 +02:00
Lukáš Hejl
6ddd88e596
Fixed an issue where the color of the first extruder always replaced the default color after painting in a multi-material gizmo.
...
multi_material_segmentation_by_painting is now returning only the painted region. Regions with default colors that aren't painted by multi-material gizmo aren't returned.
2021-06-16 06:06:37 +02:00
Lukáš Hejl
ae1a799cf4
Fixed an issue for multi-volume objects where the seed fill visualization in the multi-material gizmo didn't disappear after the mouse was moved to another volume.
2021-06-16 06:06:34 +02:00
Lukáš Hejl
c59cf5de40
Fixed layers with the wrong color after multi-material segmentation on objects with multiple objects.
2021-06-16 06:06:34 +02:00
Lukáš Hejl
21b38db488
Added using the move operator in some parts of multi-material segmentation.
2021-06-16 06:06:34 +02:00
Lukáš Hejl
a06e42d01f
Moved debug prints out of parallel cycles, and more debug prints were added for multi-material segmentation.
2021-06-16 06:06:34 +02:00
Lukáš Hejl
15a1b51339
Refactoring and cleanup of painting gizmos.
2021-06-16 06:06:34 +02:00
Lukáš Hejl
8a77fa38f0
Modified MMU painting gizmo behavior so that all triangles aren't painted by default by the first extruder, which was causing several problems.
...
This commit also fixed the following issues:
1) After loading a 3MF with painted triangles using the MMU painting gizmo, the painted triangles might not be displayed correctly in the MMU painting gizmo.
2) The MMU segmentation was unnecessarily executed for all layers and not just for the painted layers.
3) Object's base color wasn't changed when the assigned extruder for that object was changed while the MMU paint gizmo was opened.
4) Changing the base color of an object was only possible by removing all painted triangles.
2021-06-16 06:06:34 +02:00
Lukáš Hejl
b2677f513c
Fixed a possible crash when closing the MMU painting gizmo cause by a non-virtual destructor.
2021-06-16 06:06:33 +02:00
Lukáš Hejl
7377fc34ac
Fixed cracks in MMU painting gizmo. All triangles, even not painted triangles, are now rendered inside MMU painting gizmo.
...
The cracks were caused by using glPolygonOffset to resolve Z-fighting. All triangles of the object were firstly rendered entirely with a base color. And then paint triangles were drawn over these already rendered triangles.
2021-06-16 06:06:33 +02:00
Lukáš Hejl
de9ed9ee3e
Follow-up of 39fd8065a1: Apply changes also for MMU painting gizmo, so shader->start_using() is called only once.
2021-06-16 06:06:33 +02:00
Lukáš Hejl
c751f2d638
Show info about multi-material segmentation in ObjectList.
2021-06-16 06:06:33 +02:00
Lukáš Hejl
bfd83f925d
Fixed build on MacOS.
...
Based on information in https://stackoverflow.com/a/46115028 , structured bindings in C++17 don't name variables, and because of that, it is impossible to capture these variables in lambda functions.
2021-06-13 16:22:44 +02:00
Lukáš Hejl
cc913d52ef
Added name for items in undo/redo stack inside multi-material gizmo.
2021-06-03 18:11:48 +02:00
Lukáš Hejl
94877a0ec0
Fixed the wrong transformation matrix for "Clipping of view" when is used a printer with multiple extruders.
2021-06-03 08:00:46 +02:00
Lukáš Hejl
edf8d22aba
Fixed an issue when the option "Inner brim only" doesn't generate brim inside the object in some cases, and issue that top-level brim was ignoring an offset around the object without a brim.
...
Also, some possible warnings were fixed.
2021-06-02 10:33:16 +02:00
Lukáš Hejl
660acede9e
Sphere brush color in MMU painting gizmo is now the same as color used for painting.
2021-05-31 14:23:12 +02:00
Lukáš Hejl
2438e3a891
Fixed issue that the lower half of the object was shown darker than the upper half of the object after slicing with MMU segmentation.
2021-05-31 07:26:38 +02:00
Lukáš Hejl
02a0955a5f
Fixed possible wrongly filled ZIP headers in case that pState->m_zip64 is sets to true.
2021-05-29 19:56:20 +02:00
Lukáš Hejl
7f29647d67
Added missing includes (GCC 11.1)
2021-05-29 19:55:20 +02:00
Lukáš Hejl
2cbf7728bb
Fixed that seed fill left all triangles split instead of merging them.
2021-05-28 17:42:28 +02:00
Lukáš Hejl
726a48383f
Cleaned up of 0a6490bab9
2021-05-28 17:36:56 +02:00
Lukáš Hejl
0a6490bab9
Added cancellation to MMU segmentation.
2021-05-28 05:57:32 +02:00
Lukáš Hejl
281ac1f2f1
Added missing includes (GCC 9.3)
2021-05-27 16:47:31 +02:00
Lukáš Hejl
671c2ace17
Fixed a modification time for files appended using the streaming interface in the miniz library.
2021-05-25 10:38:29 +02:00
Lukáš Hejl
ed9c93f85a
Added missing includes (GCC 9.3)
2021-05-21 07:42:37 +02:00
Lukáš Hejl
f50046b31b
Modified streaming interface in miniz library to use ZIP64 extension only for files exciding the limits.
...
The modification is based on a preallocation space in the Extra field using a phony custom block in the Local file header. This space is eventually overwritten by the ZIP64 extension if the file exceeds 4GiB.
Also were fixed differences from PKZip specification in the streaming interface.
2021-05-20 19:44:12 +02:00
Lukáš Hejl
4d2c2070f8
Added missing includes (GCC 9.3)
2021-05-07 12:51:10 +02:00
Lukáš Hejl
46a14abbaa
Added default object color in MMU segmentation according to the default extruder color for printing the object.
2021-05-04 08:13:04 +02:00
Lukáš Hejl
781e6607c8
Fixed updating of extruders list in MMU segmentation gizmo after adding extruders and reloading 3MF with different extruder count and colors.
2021-05-04 07:59:16 +02:00
Lukáš Hejl
71c60a5187
Follow-up of 168b4afbc2: Replaced forgotten lslices in the top and bottom layer propagation in MMU segmentation.
2021-05-03 22:11:04 +02:00
Lukáš Hejl
cd5fea8b42
Fixed compiler warnings
2021-05-03 21:50:40 +02:00
Lukáš Hejl
2d3eef4e84
Fixed possible warnings
2021-05-03 21:13:13 +02:00
Lukáš Hejl
fa8c319721
Fixed MMU segmentation for cases when a contour was whole colored by one color and a hole was whole colored by a different color.
2021-05-03 21:06:46 +02:00
Lukáš Hejl
5bfdaa7ac8
Parallelization of regions merging for MMU segmentation.
2021-05-03 21:01:52 +02:00
Lukáš Hejl
2e9f0d6eaf
Fixed a few cases of missing colored segments in MMU segmentation.
...
Occasionally, some input polygons contained self-intersections that caused problems with Voronoi diagrams and consequently with the extraction of colored segments by function extract_colored_segments.
Also, occasionally input polygons contained several points very close together (distance between points is 1 or so). Such close points sometimes caused that the Voronoi diagram has self-intersecting edges around these vertices. This consequently leads to issues with the extraction of colored segments by function extract_colored_segments.
2021-05-03 20:56:39 +02:00
Lukáš Hejl
168b4afbc2
Fixed MMU segmentation for multi-volume objects.
...
MMU segmentation no longer works directly on lslices, instead of it works on custom merged regions. So lslices in PrintObject are no longer overwritten because of MMU segmentation.
All regions are scaled by SCALED_EPSILON before merging and shrunk back by SCALED_EPSILON after merging. That fixed issues with multi-volume objects when very close regions weren't merged.
Also, small expolygons and holes are filtered out that fixed missing segmentation at the boundary of two volumes in the case of multi-volume objects.
2021-05-03 20:37:14 +02:00
Lukáš Hejl
62592cab48
Added missing include (GCC 11.1)
2021-05-01 22:33:59 +02:00
Lukáš Hejl
0a8a3f6d8c
Fixed build on Windows.
2021-04-30 15:40:27 +02:00
Lukáš Hejl
d11d15aa1e
Rework of MMU segmentation gizmo to support more than three colors.
2021-04-30 15:58:25 +02:00
Lukáš Hejl
576c5b78e9
Added seed fill for MMU segmentation
2021-04-27 06:48:09 +02:00
Lukáš Hejl
be1b4ce18c
Fixed compiler warnings
2021-04-27 00:41:20 +02:00
Lukáš Hejl
8a19cf9d64
Extended support of MMU segmentation backed for more than three colors.
...
Serialization and deserialization in TriangleSelector were extended to support up to 16 materials (3 unused states left for possible later extension). These changes also affect the encoding of data from custom supports and seams, but it is backward compatible with the previous encoding. And for custom supports and seams, it is produced exactly the same data encoding as before.
2021-04-27 00:37:49 +02:00
Lukáš Hejl
db55bd706e
Fixed case in MMU segmentation when the infinity-edge in the Voronoi diagram has vertex0(), and vertex1() equals nullptr.
2021-04-27 00:36:22 +02:00
Lukáš Hejl
1b144e80bd
Added hiding of MMU segmentation gizmo when it is selected printer with only one extruder.
2021-04-27 00:35:43 +02:00
Lukáš Hejl
49928e131c
Added missing include (GCC 9.3)
2021-04-21 06:08:46 +02:00
Lukáš Hejl
40d9e51b5e
WIP: Added support for top and bottom layers for MMU segmentation.
2021-04-19 19:21:06 +02:00
Lukáš Hejl
368b48b0a0
WIP: Allows regions of MMU segmentation to be trimmed by chosen width.
2021-04-19 07:12:42 +02:00
Lukáš Hejl
f49ceb1e0f
WIP: MMU segmentation without top and bottom layers
2021-04-19 07:04:50 +02:00