3D Surface Reconstruction

This project illustrates a reconstruction algorithm, that is a method to generate a piecewise linear surface from a 3d point set. It uses Javaview as a viewer and native C++ code based on the CGAL library (Computational Geometry Algorithms Library) for the reconstruction algorithm. Hence, the workshop also provides an example of C++ code usage with the JNI (Java Native Interface).

This project has been developed by Marc Pouget during its visit within the Mathematical Geometry Processing Group. This project was supported by the DFG Research Center MATHEON - "Mathematics for key technologies". The reconstruction algorithm is due to Raphaëlle Chaine and is implemented upon the 3d Delaunay triangulation of CGAL.

How to use this application

  • 1. You need to have Javaview installed.
  • 2. You have to download the archiv containing the jar and the C++ library for this project (shared object library on linux or the dll for windows).
  • 3. From the directory in which you have extracted the archiv, run the application with the command :

  • for linux :

    java -Djava.library.path=. -classpath "where_your_javaview_is"/jars/javaview.jar:"where_your_javaview_is"/jars/jvx.jar:reconstruction.jar dev.reconstruction.PaReconstruction

  • for windows :

    java -Djava.library.path=. -classpath "where_your_javaview_is"/jars/javaview.jar;"where_your_javaview_is"/jars/jvx.jar;reconstruction.jar dev.reconstruction.PaReconstruction

  • 4. You may want to have a look at the source code for linux or for windows of the project : the java code, the JNI code and the cgal c++ source code.

    How to generate the native library from the source code for linux users

  • 1. You need to install CGAL
  • 2. Use the command "make" from the directory you have extracted the source archiv (you may have to set the variable JAVA_INCLUDE_DIR in the makefile). It compiles the file "native_cgal_convection.c" and generates the shared object "libnative_cgal_convection.so"

    How to generate the native library from the source code for windows users

  • 1. You need to install CGAL
  • 2. Use the Visual C++ project provided to create "native_cgal_convection.dll"

    Snapshots

    Here is the original surface whose vertices are given as input to the reconstruction algorithm.

    Here is the reconstructed surface with a maximum granulatity allowed of 20 and the non-volumic method.

    Here is the reconstructed surface with a maximum granulatity allowed of 20 and the volumic method, faces glued together are removed which is desirable in this case.

    Algorithm Details

    The algorithm is a version of the "convection reconstruction" presented by Raphaëlle Chaine in "A Geometric Convection Approach of 3D Reconstruction" SGP'03, who kindly gave us her source code.

    Starting from the convex hull of the point set, the algorithm deforms a closed oriented pseudo-surface embedded in the 3D Delaunay triangulation of the sampled points. The reconstructed surface consists of a set of oriented triangular facets located in this 3D Delaunay triangulation.

    Two parameters are to be adjusted the maximum granularity allowed for the faces of the surface and the volumic/non-volumic tag. The granularity of a face of the surface is the ratio of the size of its smallest empty enclosing sphere and the size of the local sampling. The less the maximum granularity allowed, the more cavities are digged (and the more undesirable holes may appear). When the tag volumic is on, the faces of the pseudo-surface based on the same 3 points but with opposite orientations are removed; whereas both these faces are kept if the tag is turned to non-volumic.


    Last modified: Tue Sep 19 18:42:58 CEST 2006