Edgebreaker Software

The Edgebreaker software is divided into two modules: EBCompression and EBDecompression. The software is based on the Edgebreaker compression technique developed by Prof. Rossignac and his colleagues.  Please see the 2.5 page pseudo-code (PDF) for details.

To help us track of usage of Edgebreaker and keep you inform of the latest development, please email to a brief description of your application, the name of your organization, and your name and position to jarek@cc.gatech.edu. Thank you.

Two mesh types are currently supported: MANIFOLD and TPATCH.

-           A MANIFOLD is a manifold mesh with no boundary. All edges have exactly two incident triangles. All vertices have exactly one cycle of incident triangles. All triangles in the mesh are consistently oriented. To reduce transmission cost, a corner incident to a vertex that has the largest number of incident triangles should be passed as argument.

-           A TPATCH is a manifold mesh with a single manifold bounding curve. To simplify compression, we ask that the application adds a dummy vertex to the mesh and creates a fan of dummy triangles that connect the dummy vertex with the edges of the hole. On of the corners incident upon that dummy vertex should be passed as argument to the compression routine. After decompression, the client application is responsible for discarding the dummy vertex and its incident triangles. The dummy vertex will be vertex 0 in the decompressed mesh. Note that Edgebreaker does not encode the dummy vertex nor the dummy triangles. A flag in the header of the file and the count of the edges in the hole suffice to reconstruct them.

We hope to provide in the future separate pre-processing and post-processing modules for efficiently dealing with holes and non-manifold situations. For now, triangle meshes with non-manifold singularities and with more than one hole must be preprocessed before compression is invoked. Non-manifold situations may be converted to manifold ones by replicating edges and vertices (see for example our work on pseudo-manifold representations of non-manifold solids: PDF). Each additional hole may be plugged by a fan of dummy triangles incident upon a dummy vertex. The Ids of the dummy vertices should be encoded. The dummy vertices and their incident triangles should be removed after decompression.

We have opted for a parallelogram prediction scheme to compress geometry. However, it could be easily replaced by other prediction schemes

 

Compression compression source code

Input arguments

1.        OVTable: The Corner Table containing the connectivity and geometry of the mesh in OVTable format 

2.        MeshType:  MANIFOLD or TPATCH                                                  

-           MANIFOLD - a consistently oriented, manifold Triangle mesh, without boundary.                               

-           TPATCH - a manifold mesh with a single hole that has been closed with dummy vertices and triangles

3.        StartCorner: Is the corner where to start EBCompression.

-           If  MeshType is TPATCH it should be a corner corresponding to the dummy vertex.

-           If  MeshType is MANIFOLD, it can be any corner, but since the triangles incident on  StartCorner are not stored it is advantageous to pass a corner with the maximum number of incident triangles.

4.        FileFormat: BINARY or ASCII 

Output

  1. clers.txt : Contains one symbol per triangle (except for the triangles incident upon vertex 0).
  2. vertices.txt  Contains the deltas corrective vectors between the predicted and the actual vertex locations.
  3. handles.txt : Contains pairs of corners that identify pairs of edges that decompression should glue in order to restore all the handles from the CLERS string

 

Decompression decompression source code

Input arguments

1.        InputFileDir:  Directory with clers.txt handles.txt vertices.txt

2.        OutFileName: Name of output file

3.        Input file format (BINARY or ASCII)

Output

  1. OVTable