I may not be able to update this pape frequently. For the maintained code, please refer to my GitHub page.
Term of Use
All the source code and software in this page are provided AS IS, without express and warranty. I'd be happy to know if you find them useful :-)
Should you have any comments or you find bugs, please drop me an e-mail.
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 HowTo can be found from the GitHub page.
PolyFit implements the hypothesis and selection based surface reconstruction method described in the following paper:
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 officially part of CGAL. Find more here.
Mapple is free software for processing and visualizing point clouds and polygonal models. Key features include:
- A collection of well-known algorithms for processing point clouds (e.g., normal estimation, downsampling, Delaunay triangulation, Poisson surface reconstruction) and polygonal meshes (e.g., simplification, subdivision, smoothing, segmentation, remeshing, tetrahedralization).
- A powerful 3D model visualizer. It exploits the modern GPU features (e.g., shader storage buffer) for rendering and interacting with huge point clouds and polygonal meshes, e.g., soft shadow, transparency (tunable per object), ambient occlusion, eye dome lighting (visualizing point clouds without normal information), clipping plane/cross section, point/line imposers(i.e., points as spheres, lines as cylinders/cones). I use Mapple for producing all the visualization of 3D models in my publications.
- A collection of interactive editing tools, such as selection, insertion/deletion, object/component manipulation.
- A versatile 3D model explorer and file format converter. It supports commonly used and customized file formats (e.g., ply, obj, off, stl, las, laz, xyz, pn, pc, pnc, vg, plg, bin) and supports arbitrary types of element properties (in ply format). It has a nice and friendly user interface for managing and visualize multiple objects in a single window.
The executable program can be downloaded here.
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'.
News: Three APIs added for solving a bunch of rhs for the same coefficient matrix.
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 3 static member functions:
- bool solve_symmetry(...)
- bool solve_unsymmetry(...)
- bool solve_linear_least_square(...)
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:
(1) Inherite your own view class from it;
(2) Erase the OnDraw(CDC* pDC) function in the sub class and repalce all "CView" with "COpenGLView";
(3) Fill your own draw code by overriding the function RenderSceneScalable(), e.g., glutSolidSphere(0.7f, 20, 20);
(4) Now compile and run, a flat shaded solid sphere will appear in your screen.