This page collects some of the code I wrote long time ago and the contents will not be updated. For the recent development and the maintained code, please refer to my GitHub page.
Easy3D is an open-source library for 3D modeling, geometry processing, and rendering. It is implemented in C++ and designed with an emphasis on simplicity and efficiency. Key features include:
- Efficient data structures for representing and managing 3D models such as point clouds, polygonal surfaces (e.g., triangle meshes), polyhedral volumes (e.g., tetrahedral meshes), and graphs. Easy to add/access arbitrary types of per-element properties. Non-manifoldness is automatically resolved when loading models from files ...
- A set of widely used algorithms, e.g., point cloud normal estimation/re-orientation, Poisson surface reconstruction, RANSAC, mesh simplification, subdivision, smoothing, parameterization, remeshing, and more.
- A bunch of rendering techniques, e.g., point/line imposters, ambient occlusion (SSAO), hard shadow (shadow maps), soft shadow (PCSS), eye-dome lighting (for rendering point clouds without normal information), transparency (average color blending, dual depth peeling), and more.
- High-level encapsulation of OpenGL and GLSL for convenient and efficient rendering (based on modern and faster programmable-shader-style rendering, i.e., no fixed function calls). Client code does not need to touch the low-level APIs of OpenGL.
- Step-by-step tutorials demonstrating various uses of the API, to get acquainted with the data structures, rendering techniques, and algorithms for 3D modeling and geometry processing.
- Very easy to use as a callable library (usually only a few lines of code).
- A viewer that can be used directly to visualize 3D scenes in various formats, which can also be easily extended.
- A handy tool Mapple created out of the Easy3D library for rendering and processing 3D data.
Source code, executable files, and documentation can be found from the GitHub page.
MVStudio is intended to be a lightweight, easy to use, and integrated SfM (Structure from Motion) and MVS (Multi-View Stereo) solution. You can obtain MVStudio by building it from the source code or downloading the prebuilt binary files.
Source code, executable files, and more information can be found on the GitHub page.
PolyFit implements the hypothesis and selection based surface reconstruction method described in the following paper:
Liangliang Nan, Peter Wonka. "PolyFit: Polygonal Surface Reconstruction from Point Clouds". ICCV 2017.
which is dedicated for reconstructing 3D models of piecewise planar objects from point clouds.
Source code, executable files, and test data can be downloaded from PolyFit project page.
News: Since Aug.5, 2019, PolyFit is also officially part of CGAL. Find more here.
Mapple is free software for processing and visualizing point clouds and polygonal models. Key features include:
An outdated Windows executable can be downloaded here.
A completely new design of Mapple is available as part of Easy3D. Prebuilt binaries for MacOS and Linux are provided here and Windows users can build it from the source code (I don't have Windows).
As requested by many students, I made public a simple prototype software PcdViewer for rendering point clouds. It also provides some interactive operations for processing point clouds, e.g, selection of points by sketching a rectangle, or by using a lasso tool. Of course, you can incorporate your own functionalities into it. The source code (with a prebuilt binary) can be downloaded here.You can find more details about supported file formats in 'file_io.cpp'.
TaucsSolver is a wrapper class for TAUCS, a powerfull linear system solver. You can download the source code (with examples) here. It contains the following three functions:
How to use it? Quite easy! See the examples in "example/test.cpp" :-)
Segmentation is a program originally designed for segmenting STL models with sharp features (test data can be found here) . But finally we added 2D straight skeleton and offset (test polygon data can be found here) using CGAL to generate tool path for Rapid Prototyping when I was in SIA. The source code can be downloaded here.
NCSimu is a simulation program for Numerical Control manufacturing mystem. You can download the source code here and a test data here.
OpenGLView for MFC
This is a piece of very old code! Using OpenGL in MFC is quite troublesome (at least it bothered me a lot when I started using OpenGL with MFC). So I wrote an OpenGLView class for MFC. You can download the source code here.
How to use it:
Copyright @Liangliang Nan