Commit Graph

1232 Commits

Author SHA1 Message Date
bubnikv
36416d77b8 Fixes of VBO rendering on Linux with wxWidgets & GTK 2017-03-30 10:25:52 +02:00
bubnikv
b60ae4745f Fixed missing #include<assert.h> 2017-03-29 19:57:11 +02:00
bubnikv
3e347c33dc Bundled Eigen library. 2017-03-29 18:19:57 +02:00
bubnikv
5dc899d64e Reset wipe moves on tool change and on travel. 2017-03-29 17:45:38 +02:00
bubnikv
4bbb1f4b63 Rewrote next_highest_power_of_2 as a template as OSX had issues with
the previous implementation.
2017-03-28 18:02:26 +02:00
bubnikv
3ebf0ce7fd Improved memory allocation efficiency of the 3D path preview generator. 2017-03-28 17:09:57 +02:00
bubnikv
1fb302d480 Reverted due to a failing test t\multi.t 2017-03-28 14:29:27 +02:00
bubnikv
40b75f6cee Snapped the bottom interface layer print heights to the top interface
layer print heights to avoid too thin layer surfaces. The minimum layer
height at the nozzle page is maintained for the support layers.

Base layers are trimmed by the briding bottom surfaces.
2017-03-28 13:46:31 +02:00
bubnikv
9f7a5c7a6f Some beautification and C++11 adaptation. 2017-03-28 13:25:10 +02:00
bubnikv
640698d28b Fixing Zero extrusion print moves and overlapping regions in first layer
https://github.com/prusa3d/Slic3r/issues/184

No E distances generated when support is selected. bug?
https://github.com/prusa3d/Slic3r/issues/175
2017-03-27 14:34:07 +02:00
bubnikv
67126d6f48 Moved the NVIDIA and AMD hints to the slic3r.exe wrapper. 2017-03-27 09:06:24 +02:00
bubnikv
0dae43e4bc Bugfix: when the Voronoi diagram contained very large coordinates we need to check whether they are greater than our allowed range and consider the Voronoi edges infinite in those cases, in order to prevent overflows.
https://github.com/alexrj/Slic3r/issues/3776
9ad1360e44
2017-03-24 09:32:30 +01:00
bubnikv
53832aff24 Documented the boost libraries required by Slic3r Prusa Edition
https://github.com/prusa3d/Slic3r/issues/88
2017-03-23 16:28:23 +01:00
bubnikv
b7d3ed26c6 Link boost & intel Thread Building Blocks statically by default
on Windows and OSX, dynamically on Linux.
This could be overidden by an environment variable
SLIC3R_DYNAMIC=1
2017-03-23 15:06:22 +01:00
bubnikv
9e0a690d2e Simplified the skirt paths. 2017-03-23 12:35:00 +01:00
bubnikv
073d6d2d43 Fixed colors of the path preview. 2017-03-23 12:34:35 +01:00
bubnikv
1b3c651643 Fixed iusses in rendering print paths through VBOs for multiple objects. 2017-03-23 11:10:53 +01:00
bubnikv
3b5d1d0e25 Try to enforce the use of a high performance NVIDIA / ATI GPU
on dual graphic card laptops.
2017-03-23 10:28:08 +01:00
bubnikv
1fb3d00932 Fix of parsing ASCII STLs on Visual Studio 2013 with global optimization. 2017-03-22 17:57:27 +01:00
bubnikv
ed495663e8 Support generator parallelized. 2017-03-22 15:35:50 +01:00
bubnikv
04cd474708 Fixed some instance of simplify_polygons() invocation.
Geometry::deg2rad() made a template.
Some methods of Layer made inline.
Added a helper template remove_nulls().
2017-03-22 15:35:09 +01:00
bubnikv
039cd0ac5b new GLShader.cpp,h 2017-03-20 14:48:17 +01:00
bubnikv
045de596e2 Use OpenGL 2.0 shaders for the layer height rendering.
Use OpenGL 2.0 shaders for the print path rendering for performance reasons.
2017-03-20 12:05:20 +01:00
bubnikv
56f845f3c1 Fixed the reports given by the build process if BOOST or TBB libraries
were not found.
https://github.com/prusa3d/Slic3r/issues/177
2017-03-17 22:49:43 +01:00
bubnikv
8e28bd36a2 Link XS with -framework OpenGL on OSX. 2017-03-16 14:26:16 +01:00
bubnikv
73de247a15 Enabled SLIC3R_GUI by default. This is required to enable the OpenGL 2.0
API through C++ GLEW.
2017-03-16 14:09:42 +01:00
bubnikv
7f7d2da5fe Use Vertex Buffer Objects for rendering of 3D volumes if possible. 2017-03-16 14:02:28 +01:00
bubnikv
c32c7fa1dc Fixed a typo. 2017-03-15 21:26:46 +01:00
bubnikv
93cab990c7 Fixed some memory allocation issues of the new C++ 3d path preview
(reserved memory has to be shrank around the collected data).

Initial implementation of the vertex buffer objects for the 3d path preview.
2017-03-15 20:45:03 +01:00
bubnikv
d18e10c7c9 Rewrote the OpenGL object rendering to indexed triangle / quad sets
for lower memory consumption.
Rewrote the print path 3D preview to generate these indexed triangle / quad
sets, possibly with at least as possible duplication of vertices,
with a crease angle of 45 degrees, leading to maximum 8% overshoots
at the corners.
2017-03-15 16:33:25 +01:00
bubnikv
e7a920fe16 Fixed some picking issues after porting GLVolumes to C++.
Initial interface for print paths visualization by VBOs.
2017-03-14 10:11:08 +01:00
bubnikv
79e6f23fdc code beautification, C++11 loops 2017-03-13 16:03:44 +01:00
bubnikv
c96d794604 BoundingBox, Print - methods inlined, added const accessors. 2017-03-13 16:03:11 +01:00
bubnikv
e6fddd364d Volume rewritten from Perl to C++,
generation of vertex arrays from paths rewritten from Perl to C++,
parallelized.
2017-03-13 16:02:17 +01:00
bubnikv
50976e1b5a Parallelized slices_to_fill_surfaces_clipped() 2017-03-08 23:02:27 +01:00
bubnikv
720459183e Parallelized detection of extra perimeters. 2017-03-08 22:38:08 +01:00
bubnikv
a956186c76 Parallelized TriangleMeshSlicer::make_expolygons 2017-03-08 21:55:38 +01:00
bubnikv
336f86c101 Fixed a newly introduced memory leak into the Clipper library,
made all Clipper interfaces non-virtual.
2017-03-08 20:27:03 +01:00
bubnikv
4426e47e2a Fixed a race condition in the parallelization
of the "ensure vertical wall thickness" feature.
2017-03-08 18:10:39 +01:00
bubnikv
20796b89c1 Improved debugging of slicing. 2017-03-08 15:58:40 +01:00
bubnikv
798bca561b Parallelized the slow discover_vertical_shells() 2017-03-08 14:54:04 +01:00
bubnikv
f200781436 C++ compiler suppressed default constructor and assignment operator
for Surface after the move operators were implemented. Added
those operators manually.
2017-03-08 14:22:49 +01:00
bubnikv
52b76930aa Simplify_slices rewritten to C++, parallelized.
Added some move methods to Surface class.
2017-03-08 13:43:49 +01:00
bubnikv
4331f38912 Fixing of slicing errors ported to C++, parallelized. 2017-03-08 11:56:42 +01:00
bubnikv
73439b7acb Parallelized PrintObject::_slice(), make_slices() code. 2017-03-08 10:37:47 +01:00
bubnikv
1e6cf0cd98 TriangleMeshSlicer
replaced the vectors of vectors by vectors of indices to a continuous memory,
using binary search to get to an index.
2017-03-08 09:47:32 +01:00
bubnikv
edd7cabf68 Trace TriangleMeshSlicer at loglevel debug (nr. 4) 2017-03-07 22:50:32 +01:00
bubnikv
dfba2cb6b2 Parallelized PrintObject::detect_surfaces_type() 2017-03-07 21:46:45 +01:00
bubnikv
65c024f7cf Parallelize PrintObject::process_external_surfaces() 2017-03-07 17:43:43 +01:00
bubnikv
109013bed7 Yet another fix of the static linking on Windows. 2017-03-07 16:33:36 +01:00
bubnikv
32b0428303 Yet another fix of a static TBB linkage. 2017-03-07 14:50:32 +01:00
bubnikv
a4dea4b7fc Fix of intel TBB linking. 2017-03-07 14:31:08 +01:00
bubnikv
32ebb1e2c7 Fix of a static library extension of the INtel Thread Building Blocks on OSX/Linux. 2017-03-07 14:13:30 +01:00
bubnikv
cb1a6eae1e Added dependencies on the Intel Thread Building Blocks.
Changed the C++ parallelization code to Intel Thread Building Blocks.
2017-03-07 13:03:14 +01:00
bubnikv
8a42c0ad9f Implementation of scaling factor of objects into an AMF file.
https://github.com/prusa3d/Slic3r/issues/7
2017-03-06 17:35:38 +01:00
bubnikv
c23c0ee7d2 Fix of https://github.com/prusa3d/Slic3r/issues/172 ? 2017-03-06 15:03:31 +01:00
bubnikv
d20a9d73d4 Fix for OSX: clang requires the member operator< and == to be const. 2017-03-05 16:34:16 +01:00
bubnikv
a9a20003c0 Clipper memory optimization: Own memory manager for OutPt objects.
Allocate OutPt by chunks of 32, reuse the released OutPt objects.
2017-03-03 23:06:51 +01:00
bubnikv
f24427cd76 Another Clipper optimization. When adding a set of paths
to Clipper, allocate the edges in a single continuous vector.
2017-03-03 21:40:40 +01:00
bubnikv
fa4df36963 Fix: Orientation() has been declared inline, therefore not exported. 2017-03-03 20:39:04 +01:00
bubnikv
5580fd64b3 Clipper library:
Added some comments,
some methods were made inline, tiny methods moved to the header as inline,
dynamic allocation replaced with std:: containers,
changed some loops to the condensed C++11 syntax.
2017-03-03 20:38:53 +01:00
bubnikv
fddd7c620f Some optimization of memory allocation, some reduction / inlining of short functions. 2017-03-03 20:38:40 +01:00
bubnikv
1909c75c21 TriangleMeshSlic3r used unordered_map, which was terribly horribly shamelessly
slow on mingw. Rewrote using std::vector<>, which is blazing fast.
2017-03-03 17:36:07 +01:00
bubnikv
a219ae3d27 Set boost tracing level on DLL initialization to errors only. 2017-03-03 14:38:25 +01:00
bubnikv
4de33effdc Tracing of TriangleMesh repair. 2017-03-03 13:31:51 +01:00
bubnikv
930e6752d9 Reverted unification of positive and negative zeros when loaded
from an STL file.
2017-03-03 12:54:00 +01:00
bubnikv
4d00aa1800 More tracing of the slicing process. 2017-03-03 12:53:05 +01:00
bubnikv
062a6628e5 Revert "Some optimization of memory allocation, some reduction / inlining of short functions."
This reverts commit bc19e97d45.
2017-03-02 20:44:53 +01:00
bubnikv
473624fcd7 Revert "Clipper library:"
This reverts commit 90a415ae10.
2017-03-02 20:44:43 +01:00
bubnikv
cd7134e6f6 Revert "Fix: Orientation() has been declared inline, therefore not exported."
This reverts commit c2ee73d211.
2017-03-02 20:44:28 +01:00
bubnikv
c2ee73d211 Fix: Orientation() has been declared inline, therefore not exported. 2017-03-02 17:34:53 +01:00
bubnikv
90a415ae10 Clipper library:
Added some comments,
some methods were made inline, tiny methods moved to the header as inline,
dynamic allocation replaced with std:: containers,
changed some loops to the condensed C++11 syntax.
2017-03-02 17:11:46 +01:00
bubnikv
4287362aa6 Extended tracing of the slicing process. 2017-03-02 16:52:24 +01:00
bubnikv
d430767fa7 Define a surface type count constant to be able to address a vector
with a surface type.
2017-03-02 16:42:26 +01:00
bubnikv
83a80a9b7d Optimization of LayerRegion::slices_to_fill_surfaces_clipped()
Added some run time tracing through boost::log.
2017-03-02 16:41:16 +01:00
bubnikv
73f603d90e Fix of #117: A large fractal pyramid takes ages to slice
The Clipper library has difficulties processing overlapping polygons.
Namely, the function Clipper::JoinCommonEdges() has potentially a terrible time complexity if the output
of the operation is of the PolyTree type.
This function implmenets a following workaround:
1) Peform the Clipper operation with the output to Paths. This method handles overlaps in a reasonable time.
2) Run Clipper Union once again to extract the PolyTree from the result of 1).
2017-03-02 16:39:43 +01:00
bubnikv
258252cbf3 Shiny Profiler: Disable exponential dumping of the timing data. 2017-03-02 16:35:15 +01:00
bubnikv
349cf841d6 Need to include '-lboost_filesystem' in build #166 2017-03-02 16:33:50 +01:00
bubnikv
07fa15806f Utility function SVG::export_expolygons() to paint a set of possibly
overlapping ExPolygons with attributes.
2017-03-02 16:32:43 +01:00
bubnikv
dff5bda202 The Shiny profiler is not thread safe. Disable parallelization if
SLIC3R_PROFILE is enabled.
2017-03-02 16:31:29 +01:00
bubnikv
bc19e97d45 Some optimization of memory allocation, some reduction / inlining of short functions. 2017-03-01 14:27:08 +01:00
Alessandro Ranellucci
6a90fceaaf Ported expanded_output_filepath() to C++/XS 2017-02-28 10:38:32 +01:00
Alessandro Ranellucci
6f11969257 Restore [input_filename] in custom G-code as well 2017-02-28 10:28:29 +01:00
AndylgTom
4528f35bc0 Update Config.xsp (#50)
For fix to display Unicode in category
2017-02-28 10:06:03 +01:00
bubnikv
4010dd71f6 Support Prusa Control project files (.PRUS) by the GUI. 2017-02-27 16:09:22 +01:00
bubnikv
c9465cf7fa Fixed typos in AMF export. 2017-02-27 01:39:20 +01:00
bubnikv
ee619701d8 Got rid of the Perl Format::STL, Format::AMF, Format::OBJ for good. 2017-02-27 01:03:00 +01:00
bubnikv
9ea570ea4e Fix of a warning in expat parser, which turns to an error
on some Perl/XS installations (strawberry Perl 64bit)
2017-02-26 23:35:44 +01:00
bubnikv
2f67a16c6f Fixing compilation issues. 2017-02-26 23:13:31 +01:00
bubnikv
2c932b1bf4 Fixed a bug in AMF serialization. 2017-02-26 22:59:25 +01:00
Joseph Lenox
1f1b6c8036 Fixed a missing include. 2017-02-26 22:40:10 +01:00
bubnikv
1b89c08bfc TriangleMesh.cpp/h:
New methods: has_multiple_patches(), number_of_patches()
Improved constness of file access methods.
Reduced some memory allocations costs.
Fixed some crashes of the cut() method on invalid meshes, Slic3r crashes on the unstable triangulation now.
Documented.
2017-02-26 22:17:39 +01:00
bubnikv
5b98f1a068 Some utility methods to help loading models from the disk.
Not quite sucessfull try to fix the crahes on mesh cut.
2017-02-26 22:03:03 +01:00
bubnikv
efb02f71f0 AdMesh:
unify positive and negative zeros in stl_check_facets_exact() and stl_check_facets_nearby()
New function stl_transform() by a 3x4 matrix.
Some constness improvements.
2017-02-26 21:59:09 +01:00
bubnikv
25dfe7278c Initial rewrite of the file accessors from Perl to C++.
This is especially important for the extremely slow AMF parser.
Also there is a new file handler for the Prusa Control 'PRUS' format.
2017-02-26 21:46:33 +01:00
bubnikv
91af2ddd1e Include expat parser into the Slic3r source code tree.
Having the expat parser inside the Slic3r source base makes life easier
on non-Linux systems and it also allows us to configure the Expat
parser for maximum performance by disabling all unneeded features.
2017-02-26 21:42:52 +01:00
bubnikv
82aed45816 Hopefully fixes the aligned seam:
https://github.com/prusa3d/Slic3r/issues/74

The way it works now is following:
Slic3r will add some negative penalty to all perimeter points near the last seam.
Once the perimeter point with minimum penalty is found, its penalty is compared
to a point closest to the last seam. If the penalty of the point
closest to the last seam is nearly as good as the minimum penalty,
the point closest to the last seam is picked instead. This heuristics
will hide the seams into corners if possible, but if not possible, it will
strive to align the seams precisely.
2017-02-22 16:35:07 +01:00
bubnikv
523b7f3ebc Fix of a typo specific to a debugging build. 2017-02-22 16:13:10 +01:00
bubnikv
f7acb20e23 Changed defaults for the perimeter/infill overlap (15-55%)
and for the infill pattern (honeycomb->stars)
2017-02-22 16:06:35 +01:00
bubnikv
a4dd6c7ce5 Added missing get_volume() method to the PrintObject Perl interface. 2017-02-22 16:05:14 +01:00