Surface Correspondence - Documentation

← Home

Download binaries (3Mb).

Using Binaries

Blended Intrinsic Maps [1]
Usage: ./BlendedIntrinsicMaps mesh000.off mesh001.off
Output: ./mesh000/*.dense.preceise.map
Visualization: the mesh #2 is colored according to vertex positions (XYZ -> RGB). Each vertex in the mesh #1 is mapped by blended map and then assigned a color of the correspondence in the mesh #2.
Parameters: number of samples on surface (numSamples) - used to approximate functions on surfaces.
Möbius Voting [3]
Usage: ./MobiusVoting mesh000.off mesh001.off
Output: ./mesh000/MobVote_Map_mesh000_to_mesh001.final.coarse.map
Visualization: Coarse point set is rendered as spheres. Points that are in correspondence have same color and are connected by a line.
Parameters: Modify variables at the beginning of the script to change algorithm parameters. You can change: number of casted votes (numVotes), number of samples on surface (numSamples), and fraction of (best) correspondences to keep (keepBestFraction).
Intrinsic Symmetry: Best Conformal [2]
Usage: ./IntrinsicSymmetryBestConf mesh000.off
Output: ./mesh000/IS_BestConf_Map_mesh000_to_mesh000.final.coarse.map
Visualization: same as Mobius Voting above
Parameters: number of evenly distributed samples (numSamples).
Intrinsic Symmetry: Blended Map [1]
Usage: ./IntrinsicSymmetryBlended mesh000.off
Output: ./mesh000/IS_Blended_DenseMapPreceise_mesh000_to_mesh000.dense.preceise.map
Visualization: same as Blended Maps above
Parameters: same as Blended Maps above

File Formats

Surfaces: *.off
Dense preceise map: *.dense.preceise.map
Each line id corresponds to a vertex in the mesh #1, each line has a single surface sample on the mesh #2. For example, if *.dense.preceise.map contains the following two lines:
          12 .5 .5 0
          9 1. 0 0
It means that vertex 1 in the mesh #1 corresponds to a point on triangle 12 in the mesh #2 with barycentric coordinates [ .5 .5 0 ]. And vertex 2 in the mesh #1, corresponds to a point on triangle 9 in the mesh #2 with barycentric coordinates [ 1. 0. 0 ]

Dense vertex-to-vertex map: *.dense.gaps.map
Each line id corresponds to a vertex in the mesh #1, each line has a single integer - corresponding vertex id in the mesh #2. For example, if *.dense.map contains the following two lines:
          8
          5
It means that vertex 1 in the mesh #1 corresponds to vertex 8 in the mesh #2. And vertex 2 in the mesh #1, corresponds to vertex 5 in the mesh #2.

Note that this file is produced by snapping a true correspondence, which might be anywhere on the mesh #2, to the nearest vertex.

Coarse Map: *.coarse.map
Header (ignore):
          Format MapCoarse
          CoarseType Pairwise
          NumMeshes 2
          SampleTypes NearestVertexID_Error
          NVertices1 [int NUM_VERTICES_IN_MESH_1]
          NVertices2 [int NUM_VERTICES_IN_MESH_2]
          2 0 1 4

Body (pairs of vertex correspondences one vertex per line):
          each line has a vertex id, followed by an unused
          floating-point value.

User Interface

Note that there are several undocumented features of the visualization tool. One useful feature is if you press apostrophe character: " ' " once (until line "Rendering Map: BestExtrapolated" is printed to the standard output) you should be able to click on any point on a surface and it will show you a correspondences (for Mobius Voting it uses Generalized Multidimensional Scaling (GMDS)).