Commit Graph
100 Commits
Author SHA1 Message Date
Lukáš Hejl 40e4116d9a Added a missing include (GCC 11.1). 2021-09-21 10:45:57 +02:00
Lukáš Hejl 1c6ecd9c1a Replaced atof and atoi inside 3MF attribute parsing with fast_float::from_chars and boost::spirit that are faster. 2021-09-14 11:09:43 +02:00
Lukáš Hejl 4f5dddbf11 Merge branch 'lh_gcode_export' 2021-09-11 00:56:34 +02:00
Lukáš Hejl e520454c3e Fixed unit tests after the previous commit. 2021-09-11 00:54:30 +02:00
Lukáš Hejl d2a185ddb6 Optimized export of floating-point value inside emit_axis.
Change the behavior of generated G-code commands. Now all redundancy padding zeros are removed, which makes G-code a little bit smaller.
2021-09-11 00:54:30 +02:00
Lukáš Hejl ad65366ac7 Added fast_float library as a replacement for std::from_chars and strtod. 2021-09-11 00:54:30 +02:00
Lukáš Hejl e3ac2a9e45 Fixed Perl unit tests after 34c4b74af4. 2021-09-11 00:53:45 +02:00
Lukáš Hejl 0bc77cef3e Fixed build on Linux and macOS that was failing because of using std::to_chars and std::from_chars with floating-point values.
The old version of GCC and Clang support only integers to be passed to std::to_chars and std::from_chars. macOS older version of Clang doesn't support std::from_chars at all. So for Linux and macOS, it was replaced std::from_chars with strtod and temporarily was replace std::to_chars with snprintf.
2021-09-07 07:43:17 +02:00
Lukáš Hejl 3b4d10656c Renamed 'Seed fill' to 'Smart fill'. 2021-09-01 14:32:34 +02:00
Lukáš Hejl 8ad109235b Added a missing include (GCC 11.1). 2021-09-01 14:28:42 +02:00
Lukáš Hejl ccf671dcc9 Added versioning of the structure of stored data for all three painting gizmos (fdm supports, seam and multi-material). 2021-08-31 15:05:11 +02:00
Lukáš Hejl 1835dae296 Fixed a bug that the skirt was generated too far from the brim for some objects. 2021-08-31 14:54:37 +02:00
Lukáš Hejl 57f7b49223 Corrected undo/redo snapshot name when entering or leaving multi-material painting gizmo. 2021-08-30 10:41:41 +02:00
Lukáš Hejl 95e4ab9460 Fixed the issue that an object disappeared in a multi-material painting gizmo when the object was almost completely sunk under the bed.
Object disappearance was caused by calling glPolygonOffset for rendered triangles in the multi-material painting gizmo to resolve z-fighting between painted triangles and contours around selected areas using seed/bucket fill.
2021-08-26 12:08:21 +02:00
Lukáš Hejl 1c25078bc3 Added a missing include (GCC 11.1). 2021-08-26 08:43:47 +02:00
Lukáš Hejl 731ac9287e Added a missing include (GCC 11.1) 2021-08-13 12:00:55 +02:00
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 58f83b5e6a The offset is applied after the elephant food compensation. The value of the brim offset is now also measured from the object after the elephant foot compensation. Thus, the brim offset set to zero means that the brim will touch the object even if elephant foot compensation is enabled. 2021-08-10 09:44:39 +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