Fuzzy Correspondences - Sourcecode Documentation

← Home

Download FuzzyCorrs 1.0
Download Fuzzy Corrs Scripts
Download SurfCorrs 2.1 (intrinsic matching)
Download gaps (Spherical Harmonics Shape Descriptor)

Compiling the Code

Step 1: Verify that the following libraries are installed: OpenGL, GLUT, LAPACK and BLAS, FLANN, OpenCollada (optional)

Step 2.1: Download the FuzzyCorrs 1.0 sourcecode, and compile (just type 'make').
Step 2.2: Download the gaps (spherical harmonics) sourcecode, and compile (just type 'make').
Step 2.3: Download the SurfCode 2.1 (blended intrinsic maps) sourcecode, and compile (just type 'make').

Step 3.1: Download scripts and binaries. Unzip.
Step 3.2: copy ./FuzzyCorrs1.0/bin/`uname -m`/DatabaseVis to FuzzyCorrs1.0.bins/FuzzyAnalysis/`uname`_`uname -m`_DatabaseVis
Step 3.3: copy ./gaps_shd/bin/`uname -m`/msh2shd to FuzzyCorrs1.0.bins/FuzzyAnalysis/ShapeDescriptors/`uname`_`uname -m`_msh2shd
Step 3.4: copy ./SurfCorr2.1/bin/`uname -m`/SurfaceVis to FuzzyCorrs1.0.bins/BIM/`uname`_`uname -m`_SurfaceVis

The scripts in FuzzyCorrs1.0.bins/FuzzyAnalysis should be ready for use.

This sourcecode distribution was compiled on MacOS X 10.5.8, and is known to compile on Linux.

Open Collada (optional)

You can exclude / include certain libraries in makefiles/Makefile.std. For instance, if you need to parse Collada files make sure you install OpenCollada package and set the variable INCLUDE_OPEN_COLLADA="true"

Code structure

Note that this is a research code, thus it is NOT clean. There are classes that: have never been used, cannot be used due to recent changes, have weird inter-dependencies, etc...

Here is a brief description of several important classes (relative to Libs/DatabaseAnalysis):

        DatabaseVisWindow: visualization and user interface classes.

        AnalysisPipeline: arbitrary pipeline, defined by settings.txt file

        ../BasicRoutines/ParamParser: parameter file is loaded in the pipeline. It specifies almost all parameters (e.g. which samples to use to generate conformal maps, how to measure distortion, etc...) It also points to another param file which describes rendering.

       CollectionDiffuse: Fuzzy Correspondences interface there are several implementations, we use CollectionDiffuseDynamicGraph for the results in the paper. Note that DynamicGraphElements has various graph-related routines for 'iterative alignment graph optimization', and CollectionAggregatePairwise provides an interface for performing diffusion on some subset of models (although implementation supports it, currently, there is always a cluster of models). See ../BasicNumerical/DiffusionMap for implementation of diffusion maps (i.e. embedding + nearest neighbor search).

       AppPartSelection: A simple version of the exploration interace (THIS IS NOT THE VERSION PRESENTED IN THE PAPER). See exploration interface by Wilmot Li.

       AppBenchmark: Benchmark for extrinsically-aligned models (for intrinsically aligned datasets see Surface Correspondence Benchmark).