Easy3D 2.5.3
|
Compared to existing geometry processing libraries (such as PMP and libigl) that focus on the algorithm aspect, Easy3D also provides a wider range of functionalities for user interactions and rendering.
Scalar field | Polyhedral mesh | Keyframe animation |
---|---|---|
|
|
|
Any type of 3D drawables (e.g., points, lines, triangles, and thus point clouds, mesh surfaces, scalar fields, and vector fields) can be rendered by writing a few lines of code with Easy3D. For example, the following code renders a point cloud as a set of spheres
or as a set of surfels (i.e., 3D discs)
By abstracting geometric elements as one of the above drawables, more general visualization (e.g., vector fields, scalar fields) can be done very conveniently.
The repository contains a CMakeLists.txt
file (in the root directory of the repository) that serves as an anchor for configuring and building programs, as well as a set of subfolders:
3rd_party
- source code of third-party librariesapplications
- applications built on top of Easy3Dcmake
- CMake-related configuration filesdocs
- documentation configuration file (Doxygen)easy3d
- source code of Easy3D, implementing the Easy3D modules:util
- utilities, e.g., logging, file system, progress, timer.core
- basic types and data structures, e.g., point cloud, surface mesh, graph, and polyhedron mesh.fileio
- functionalities for reading/writing data from/into files.kdtree
- a collection of kd-trees.algo
- algorithms for geometry processing.algo_ext
- several extended surface mesh processing algorithms (based on CGAL).video
- a class that can encode an image sequence into a video.renderer
- functionalities and algorithms for rendering and visualization.gui
- tools for user interactions, e.g., picking points, faces, or models.viewer
- a simple viewer and a composite viewer.resources
- test data, images, shaders, textures, etc.tests
- a collection of test casestutorials
- a collection of examples (with detailed explanations in code)Like most software, Easy3D depends on some third-party libraries. Easy3D has made this easier for users by including the source code of most third-party libraries (for the core functionalities and the basic viewer), and it leaves very few optional (for a few additional features that are typically not needed by most users).
The optional third-party libraries are:
Easy3D_ENABLE_CGAL
and make sure CGAL (v5.1 or later) is installed and visible to CMake. In case you have multiple versions of CGAL on your platform, simply provide the path of a suitable one to the CMake variable CGAL_DIR
.Easy3D_ENABLE_QT
to include the examples and applications that depend on Qt (e.g., Tutorial_204_Viewer_Qt
and Mapple
).To build Easy3D, you need CMake (>= 3.12
) and, of course, a compiler that supports >= C++11
.
Easy3D has been tested on macOS (Xcode >= 8), Windows (MSVC >=2015 x64
), and Linux (GCC >= 4.8, Clang >= 3.3). Machines nowadays typically provide higher support, so you should be able to build Easy3D on almost all platforms.
There are many options to build Easy3D. Choose one of the following (not an exhaustive list):
make
(on Linux/macOS) or nmake
(on Windows with Microsoft Visual Studio).x64 Native Tools Command Prompt for VS XXXX
(don't use the x86 one), then CMakeLists.txt
in the root directory of Easy3D. Then you should have obtained a usable project and just build it. I recommend using CLion or QtCreator. For Windows users: your IDE must be set for x64
.x64
.Don't have any experience with C/C++ programming? Have a look at How to build Easy3D step by step.
A test suite is provided in the tests
subfolder, which contains a collection of automated test cases (for data structures, IO, algorithms, visualization, etc.) and some semi-automated test cases (for GUI-related functionalities that require interactive user input). All cases are integrated into the single target tests
.
To build and run the test suite, download the entire source, use the CMakeLists.txt
in the root directory of the repository, switch on the CMake option Easy3D_BUILD_TESTS
(which is disabled by default), and run CMake. After CMake, you can build ALL or only the tests
target. Finally, run the tests
executable (i.e., YOUR_BUILD_DIRECTORY/bin/tests
) for the test.
This is quite easy, like many other open-source libraries :-) After you have built Easy3D, you only need to point Easy3D_DIR
to your build
(or the installation) directory of Easy3D when doing cmake. Then the requested Easy3D libraries, including directories and relevant compile definitions of Easy3D, are visible and accessible to your project. Below is an example of using the default Easy3D viewer. The CMakeLists.txt
looks like:
and the main.cpp
with minimum code:
The documentation for Easy3D is available here.
The Easy3D Documentation is an ongoing effort with more and more details being added. You can build the latest Easy3D documentation from the source code. Easy3D uses Doxygen (>= 1.8.3
) to generate documentation from source code. To build it from the source code, install Doxygen first. Then, switch on the CMake option `in the main
CMakeList.txt. Finally, build the
doc` target to generate the documentation.
See the Contribution Guide for more information.
Easy3D is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License or (at your option) any later version. The full text of the license can be found in the accompanying 'License' file.
The implementation of Easy3D greatly benefited from and was inspired by existing great open-source libraries, such as PMP, libQGLViewer, Surface mesh, and Graphite. In particular, the implementation of several surface mesh algorithms was taken (with modifications) from PMP, i.e., simplification, subdivision, smoothing, parameterization, remeshing, hole filling, geodesic distances, fairing, curvatures, and triangulation. We would like to thank the original authors of these projects for their permissive license terms. We also thank the users and contributors for reporting/fixing bugs, testing, and providing valuable feedback and suggestions.
If you use Easy3D in scientific work, I kindly ask you to cite it:
Should you have any questions, comments, or suggestions, please contact me at liang.nosp@m.lian.nosp@m.g.nan.nosp@m.@gma.nosp@m.il.co.nosp@m.m
Dec. 8, 2018