Commit Graph

51 Commits

Author SHA1 Message Date
tamasmeszaros
1ee724e7ed Corrected mesh split implementation 2021-06-08 10:28:23 +02:00
tamasmeszaros
c451fc94ba Refactored hollowing backend to use indexed_triangle_mesh 2021-06-08 10:28:23 +02:00
tamasmeszaros
997c446a05 SLA backend refactored, except Hollowing 2021-06-08 10:27:35 +02:00
Vojtech Bubnik
46b8497a08 VertexFaceIndex: vertex index to incident face indices built for
indexed_triangle_set.
2021-06-01 19:30:26 +02:00
Vojtech Bubnik
37179e04dc Merge remote-tracking branch 'remotes/origin/master' into vb_print_regions 2021-05-31 14:05:53 +02:00
Lukas Matena
afb0380285 Removed GLU calls from all the gizmos 2021-05-28 16:44:13 +02:00
Vojtech Bubnik
725e8f8c57 Merge remote-tracking branch 'remotes/origin/master' into vb_print_regions 2021-05-26 14:38:34 +02:00
Vojtech Bubnik
5ba44d3128 WIP: Refactoring of PrintRegions. It nearly compiles! 2021-05-21 17:57:37 +02:00
enricoturri1966
757b34f51f Fixed typo in its_collect_mesh_projection_points_above() and method TriangleMesh::slice() set as const 2021-05-20 09:09:19 +02:00
Vojtech Bubnik
ced430d5e5 Extracting its_collect_mesh_projection_points_above() out of
its_convex_hull_2d_above(), so that the projected points may get
collected over multiple volumes before applying Geometry::convex_hull()
2021-05-19 13:39:56 +02:00
Vojtech Bubnik
6a3ce5b0eb New functions: its_convex_hull_2d_above() 2021-05-19 11:35:42 +02:00
Vojtech Bubnik
25626f1c0a New utility function its_merge_vertices().
Implemented contour simplification inside slice_mesh_ex().
2021-05-18 17:57:55 +02:00
Vojtech Bubnik
39e17fd6b9 TriangleMeshSlicer: Got rid of admesh! 2021-05-18 15:05:30 +02:00
Vojtech Bubnik
499d8405e9 WIP: Reworked slicing
1) Slicing code moved to TriangleMeshSlicer.cpp,hpp from TriangleMesh.cpp,hpp
2) Refactored to use as little as possible of admesh.
2021-05-17 20:25:59 +02:00
tamasmeszaros
4baba84eb0 Exclude triangles of original interior mesh and drillholes from trimming 2021-03-08 17:38:10 +01:00
Lukas Matena
22ef17af54 Fixing Clang warnings 1 2021-02-08 17:52:29 +01:00
Vojtech Bubnik
edf4fe7e4f Fix of spiral vase mode with holes in the bottom: Holes in the bottom layers
(non-spiral vase layers) were being closed.
Fixes Bad slicing in vase mode (unexpected bridge and solid infill layers) #3326
Fixes Model with holes in the base does not slice properly in "Vase Mode" #5359
2020-12-09 14:54:26 +01:00
bubnikv
7769f9740b 64bit coord_t
Vec3i as a vertex index to TriangleMesh constructor
2020-03-25 14:35:41 +01:00
bubnikv
a394d821a6 Spiral vase improvements and bugfixes.
Fixes Connecting / expanding Bottom Layers to Vase Perimeter #253
Fixes Slicing error in vase mode #452
Fixes Slicing Issue (Vase Mode, 0.6mm dmr nozzle) #1887
Fixes Top fill pattern isn't used in spiral vase mode #2533
Fixes Cisar's vase doesn't slice correctly, creates artefacts #3595

When the model is sliced, all the contours are newly oriented
counter-clockwise (even holes), merged and then only the largest area
contour is retained. In perimeter generator, if the largest contour
splits into multiple perimeters, newly only the largest area perimeter
is retained in spiral vase mode. These two changes solve #3595 and similar.

The infill is newly calculated only for the bottom solid layers
if the spiral vase mode is active (removes various unwanted infill
along the vase walls), and the last bottom solid layer is switched
to a top solid pattern (solves #2533).

The thin walls are newly enforced to be disabled in spiral vase mode,
and the "ensure vertical shell wall" is enforced in spiral vase mode
to extend the bottom of the vase to the vase hull (fixes #253).
2020-02-08 21:36:43 +01:00
tamasmeszaros
7b9a62321d add mesh simplification.
SPE-1072 
Working but flipped normals with the interior.
Testing on treefrog passed
Oversampling for hollowed mesh should not be less than 3x
Flip back normals after simplify and remove redundant test code.
2020-01-23 10:58:18 +01:00
tamasmeszaros
d8e97f9c9a Add free functions to slice a TriangleMesh 2019-12-05 13:38:04 +01:00
bubnikv
5fd50a5b80 Ported test_trianglemesh from upstream slic3r, thanks @lordofhyphens 2019-10-15 13:49:28 +02:00
tamasmeszaros
234ccd8551 Add test obj and address for support under ground level if no elevation 2019-10-03 14:23:22 +02:00
bubnikv
dcb1875e40 Undo / Redo memory conservation strategy: Release recoverable data
starting from the objects of lowest ObjectID.
(convex hulls are recoverable as well as the indexed triangle sets
inside the TriangleMeshes or the triangle connectivity information).

Now the top most snapshot (the temp one taken before Undo jump) will
never be released.
2019-07-18 11:51:06 +02:00
bubnikv
d30229cc5f WIP: Undo / Redo memory limiting by releasing the least recently
used snapshots. Memory limit set to 10% of physical system memory.
2019-07-17 15:48:53 +02:00
bubnikv
7dfc50e795 Trying to fix some Linux & OSX compilation issues. 2019-07-04 23:34:18 +02:00
bubnikv
1ba1fd2b97 WIP UndoRedo: Added Undo/Redo stack, added Platter::take_snapshot(),
experimental snapshots on loading STLs and increasing / decreasing
model instances.
2019-07-02 16:42:23 +02:00
bubnikv
c75d35190f Removed unnecessary copy / move constructors / assignment operators. 2019-06-14 15:47:40 +02:00
bubnikv
f1965f46dd Further C++isation of the admesh library & TriangleMesh
(copy & move constructors / operators)
2019-06-13 16:33:50 +02:00
bubnikv
c1fed74010 Sharing TriangleMesh objects between the front end (UI) and back end
(background processing)
2019-06-11 17:08:47 +02:00
bubnikv
c073749ee1 admesh refactoring: separation of the shared vertices / indices
into an indexed_triangle_set structure
2019-06-10 18:30:54 +02:00
bubnikv
362c229a5c Refactored admesh to get rid of the error and fp members of stl_file. 2019-06-10 17:17:36 +02:00
bubnikv
0e26eb0aeb WIP: Admesh - replacement of C memory allocation with std vectors 2019-06-04 22:06:42 +02:00
bubnikv
b0830d062b WIP: Transformation of instances in world coordinate space:
Ulocking the "anisotropic" scaling checkbox will bake the transformation
into meshes to allow for scaling in world axes.

Optimized and templated the stl_transform functions, now also available for 3x3 matrices.
The Canvas3D::reload_scene() now maintains selection even if all volumes of an instance changed their IDs.
2019-04-26 17:28:31 +02:00
Lukas Matena
13ee8c3bd5 TriangleMeshSlicer is now initialized by const-pointer to the mesh, responsibility for calling require_shared_vertices is left to the caller 2019-04-16 09:04:04 +02:00
bubnikv
8ad52f0461 Vojtech's improvements in the SLA preview cutting dialog. 2019-04-11 15:44:32 +02:00
Lukas Matena
579b44c479 The gizmo is now able to triangulate and show the cut, the triangulated cut is cached 2019-04-08 10:31:19 +02:00
Enrico Turri
85a6ac60de Follow-up of 763a91e2ca -> take in account of ModelObject::origin_translation when saving parts and modifiers to stl 2019-04-05 10:08:34 +02:00
bubnikv
380f5fbfa5 Fixed FFF slicing of meshes with left hand oriented transformations applied.
Slight optimization of FFF slicing - optimized copy of an object with just
a single volume.
2019-04-03 11:12:03 +02:00
bubnikv
93798b9a5e Some optimizations of "Fix crash on splitting some models #2042"
replaced std::vector<bool> with std::vector<unsigned char>
as std::vector<bool> is a specialized version optimized for memory,
not speed (8 bools are packed into a single boolean).
The triangle neighbor traversal was optimized to not push visited
or non-neighbors into the queue.
2019-04-01 14:50:40 +02:00
bubnikv
358ea1b1db Revert "Use number_of_parts for is_splittable"
It is too dangerous to rely on the admesh flag without inspecting the
admesh code line by line and a through test.

This reverts commit cd3cec3e45.
2019-04-01 12:27:45 +02:00
Sijmen Schoon
ab03a61901 Use number_of_parts for is_splittable
It's there, why not use it
2019-04-01 12:09:44 +02:00
Sijmen Schoon
99c72bd4af Clean up and fix TriangleMesh::split and relatives 2019-04-01 12:09:44 +02:00
bubnikv
322d2a1fab Reworked the command line interface based on the current state
of the upstream.
Thanks @alexrj, @lordofhyphens for the original code of slic3r.cpp
2019-03-13 15:44:50 +01:00
bubnikv
c4aa0f7f36 Introduced the "slice_closing_radius" to define, how large gaps
will be closed after triangle mesh slicing.
The value is set to 0.049 by default, which corresponds to the hard
coded default in Slic3r-1.41.3.

See issues #520 #820 #1029 #1364 for the reference of why we need
the parameter for being able to print some specific models.
2019-03-01 17:53:02 +01:00
bubnikv
e5c201f2a3 Performance improvements:
Lazy "Place on face" gizmo update.
Caching of MeshObject::raw_mesh_bounding_box() for the object size display.
ModelObject::bounding_box(), raw_mesh_bounding_box(), full_raw_mesh_bounding_box() will not copy the mesh.
TriangleMesh::transformed_bounding_box(const Transform3d &trafo) will not copy the mesh data.
get_options_for_bundle() will not return reference to temp value
is_splittable() calls cheap mesh.has_multiple_patches()
2019-01-26 18:51:34 +01:00
bubnikv
0f942b5dc0 Merged some of the late changes on slicing robustness
from the 1.41.2 (stable) to the current 1.42.0-alpha3
This should fix a number of errors reported (#1562, #1592, #1614, #1633)
2019-01-14 11:06:52 +01:00
Lukas Matena
5d754d7344 First version of SLA support points generation 2018-12-07 14:11:21 +01:00
bubnikv
1d82cca0d2 WIP: Support of SLA suport & pad GLVolumes, couple of fixes. 2018-11-17 17:23:56 +01:00
Enrico Turri
0e241917ec Use Transform3d in place of Transform3f as parameter of mesh transform functions 2018-11-02 13:47:47 +01:00