A B C Figure 1: Compressed Cuberille isosurfaces as rendered by our simple Java decoder. A: spine set, 91×512×512 voxels, level 1500, 381,278 faces, 381,667 vertices, compressed to 0.6182 bits per face. B: UNC CThead data set, 113×256×256 voxels , level 600, 294,524 faces, 294,018 vertices, compressed to 0.7437 bits per face. C: UNC CThead data set, level 1160, 312,488 faces, 312,287 vertices, compressed to 0.8081 bits per face.
ABSTRACTIn this paper we introduce a new and simple algorithm to compress isosurface data. This is the data extracted by isosurface algorithms from scalar functions defined on volume grids, and used to generate polygon meshes or alternative representations. In this algorithm the mesh connectivity and a substantial proportion of the geometric information are encoded to a fraction of a bit per Marching Cubes vertex with a context based arithmetic coder closely related to the JBIG binary image compression standard. The remaining optional geometric information that specifies the location of each Marching Cubes vertex more precisely along its supporting intersecting grid edge, is efficiently encoded in scan-order with the same mechanism. Vertex normals can optionally be computed as normalized gradient vectors by the encoder and included in the bitstream after quantization and entropy encoding, or computed by the decoder in a postprocessing smoothing step. These choices are determined by trade-offs associated with an in-core vs. out-of-core decoder structure. The main features of our algorithm are its extreme simplicity and high compression rates