Commit Graph

61 Commits

Author SHA1 Message Date
Vojtech Bubnik
8a2a9dba2f Eradicated admesh from TriangleMesh:
TriangleMesh newly only holds indexed_triangle_set and
TriangleMeshStats. TriangleMeshStats contains an excerpt of stl_stats.
TriangleMeshStats are updated when initializing with indexed_triangle_set.

Admesh triangle mesh fixing is newly only used when loading an STL.
AMF / 3MF / OBJ file formats are already indexed triangle sets, thus
they are no more converted to admesh stl_file format, nor fixed
through admesh repair machinery. When importing AMF / 3MF / OBJ files,
volume is calculated and if negative, all faces are flipped. Also
a bounding box and number of open edges is calculated.

Implemented its_number_of_patches(), its_num_open_edges()
Optimized its_split(), its_is_splittable() using a visitor pattern.

Reworked QHull integration into TriangleMesh:
    1) Face normals were not right.
    2) Indexed triangle set is newly emitted instead of duplicating
       vertices for each face.

Fixed cut_mesh(): Orient the triangulated faces correctly.
2021-09-20 17:12:22 +02:00
Vojtech Bubnik
9d29eddf16 WIP: admesh eradication
follow-up to 58d8ab3dea
2021-09-14 14:51:40 +02:00
tamasmeszaros
883f46662d Fix warnings when newer CMake is used.
project() call should always come AFTER cmake_minimum_required(). This caused various hard-to-debug issues when searching for packages. 

Newer CMake versions complain that compatibility is broken with v2.6
2021-08-20 13:42:10 +02:00
tamasmeszaros
1009f78862 SLA backend refactored, except Hollowing 2021-06-08 10:27:35 +02:00
Lukas Matena
c05b8210f2 Fixed several locales issues on file import/export 2021-05-24 12:22:00 +02:00
Vojtech Bubnik
308d6b7809 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
Vojtech Bubnik
db2d78ff21 Reduction on compiler warnings, mainly on MSVC.
Fix of the new gap_fill_enable flag: Take it into account when comparing
regions.
2021-02-10 17:29:07 +01:00
Vojtech Bubnik
298097c814 Improved robustness of stl_fix_normal_directions(stl_file *stl)
by further C++isation of the legacy C code.
2021-02-05 14:54:05 +01:00
Megidd
3a194f9187 Replace deprecated Boost header in "admesh" 2020-10-12 11:34:31 +02:00
Vojtech Bubnik
37c5fe9923 Refactoring of adaptive cubic / support cubic:
1) Octree is built directly from the triangle mesh by checking
   overlap of a triangle with an octree cell. This shall produce
   a tighter octree with less dense cells.
2) The same method is used for both the adaptive / support cubic infill,
   where for the support cubic infill the non-overhang triangles are
   ignored.
The AABB tree is no more used.
3) Optimized extraction of continuous infill lines in O(1) instead of O(n^2)
2020-09-17 18:39:28 +02:00
Enrico Turri
e7e4cc5600 Fixed crash while repairing imported model 2019-12-09 13:27:21 +01:00
Enrico Turri
25ab9e8d5d Fixed normals transformation in functions stl_transform() 2019-11-19 11:43:20 +01:00
Lukas Matena
661c91a821 Fixing Linux build
GCC 4.8 does not fully support C++11 and in-class char array initialization
2019-09-27 11:31:16 +02:00
Lukas Matena
b67d8c1614 Fixed memsetting non-trivially-copyable types
Types stl_stats, stl_normal and SurfaceFillParams should not be zeroed by memset
This is not correct and also triggered warnings on gcc
2019-09-24 17:09:07 +02:00
Jason Tibbitts
197a1f95ff Relocate declaration of stl_internal_reverse_quads
On little-endian hosts, stl_internal_reverse_quads will be called before
it is declared.  Move the declaration up to the beginning of the file to
fix build breakage seen on an s390x host.
2019-09-24 08:54:35 +02:00
bubnikv
94212fa2a9 Another fix of admesh on big endian architectures, fixes #2879 2019-09-19 08:56:47 +02:00
bubnikv
b4f2df6a98 Merge remote-tracking branch 'remotes/origin/master' into dev 2019-09-12 10:19:09 +02:00
bubnikv
6f4fff1b29 Fix of 2.1.0-rc2 Fails to open "certain' STL files #2906 2019-09-12 10:16:52 +02:00
bubnikv
6ba43ebacb Merge remote-tracking branch 'remotes/origin/master' into dev 2019-09-09 17:49:07 +02:00
bubnikv
42e41dae04 Fix of a regression big endian issue in admesh
fixes 2.1.0-rc build error in admesh (unusual architecture only) (#2879)
2019-09-09 09:18:53 +02:00
Enrico Turri
19616c4f93 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into dev 2019-09-06 17:53:17 +02:00
bubnikv
07798510fc Fighting the ASCII STL import.
Fix of 2.1.0-rc: Loading MMU STL's results in object placement off the plater (#2868)
It has been broken with 9abef2241d
when trying to fix "Error on importing stl" #2813
2019-09-05 14:29:34 +02:00
Lukas Matena
942f959e87 Fixed couple of warnings
Turned several includes into forward declarations
Removed several sprintf calls in favor of std::to_string
2019-09-02 16:27:48 +02:00
bubnikv
9abef2241d The ASCII STL import was made more tolerant to non-standard input format,
namely:
1) Whitespaces are allowed at the end of lines
2) A freeform is allowed after "endloop", "endfacet" and "endsolid", if separated
from the keyword by a whitespace. Some ASCII STL exporters likely add their
annotations in there.

Fixes "Error on importing stl" #2813
2019-08-26 09:50:28 +02:00
bubnikv
cd95b52dcd 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
3a74e7ab69 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
270fec84d3 Fix of the Undo / Redo for Cut.
Added some more operations (for example Rotation) to the Undo / Redo.
2019-07-05 19:46:48 +02:00
bubnikv
c95a324c3f Merge branch 'vb_admesh_fix' 2019-06-18 08:54:50 +02:00
bubnikv
f8c5570155 Removed unnecessary copy / move constructors / assignment operators. 2019-06-14 15:47:40 +02:00
bubnikv
77954a13b9 Fix of admesh import due to boost::pool::destroy taking O(n).
Why on earth?!
2019-06-14 11:07:07 +02:00
bubnikv
9379fedd43 Further C++isation of the admesh library & TriangleMesh
(copy & move constructors / operators)
2019-06-13 16:33:50 +02:00
tamasmeszaros
821ca0e36a Build fix when boost is not in prefix/boost 2019-06-13 14:19:24 +02:00
bubnikv
3872b939e4 Fix of previous commit 2019-06-11 17:15:07 +02:00
bubnikv
0bb8ee149e Sharing TriangleMesh objects between the front end (UI) and back end
(background processing)
2019-06-11 17:08:47 +02:00
bubnikv
5fc465b7e8 admesh refactoring: Using boost::object_pool for linked list memory
allocation.
2019-06-11 09:29:32 +02:00
bubnikv
590c290ede Fix of a typo. 2019-06-10 22:43:42 +02:00
bubnikv
af5017c46c admesh refactoring: Use Eigen vec3i for indexed triangles. 2019-06-10 21:14:58 +02:00
bubnikv
313ec7424a admesh refactoring: replaced various diagnostics outputs with boost::log 2019-06-10 19:45:38 +02:00
bubnikv
6defabea53 admesh refactoring: separation of the shared vertices / indices
into an indexed_triangle_set structure
2019-06-10 18:30:54 +02:00
bubnikv
65238a89b1 admesh refactoring: Removed the shared_vertices counter as it is now
contained inside v_shared std::vector
2019-06-10 17:36:15 +02:00
bubnikv
a1c38794fb Refactored admesh to get rid of the error and fp members of stl_file. 2019-06-10 17:17:36 +02:00
bubnikv
40b27e8332 admesh refactoring: Move the hashing structure out of stl_file 2019-06-10 16:53:08 +02:00
bubnikv
025f86ca3f Fix of the previous refactoring. 2019-06-10 11:04:09 +02:00
bubnikv
8da54139c4 WIP: Admesh - replacement of C memory allocation with std vectors 2019-06-04 22:06:42 +02:00
bubnikv
3ab886b747 Fix of mesh decimation (the admesh library).
Fixes "Unable to save project (#2445)"
2019-06-04 18:25:53 +02:00
tamasmeszaros
96380180f4 Build system tweaks to get rid of cmake and boost warnings. 2019-05-30 17:48:32 +02:00
bubnikv
3f08d9f30d Changed references to renamed github project
https://github.com/prusa3d/PrusaSlicer
2019-05-14 19:46:01 +02:00
bubnikv
054a3258d3 Merge branch 'master' of https://github.com/prusa3d/Slic3r 2019-05-07 15:45:17 +02:00
Enrico Turri
61a0ab4280 Workaround to fix crash reported in #2209 2019-05-07 15:09:15 +02:00
bubnikv
bfb9288df6 Yet another template gymnastics 2019-04-29 16:59:31 +02:00