I am glad to introduce the Open3DGC (Open 3D Graphics Compression) library!
Open3DGC aims at providing a cross platform C++ implementation (under MIT License) of patent free MPEG tools for 3D graphics compression.
The current Open3DGC version provides an implementation of
the MPEG-SC3DMC codec (Scalable Complexity 3D Mesh Compression). SC3DMC offers an efficient low complexity solution to compress arbitrary
triangular 3D meshes with attributes (e.g., normals, texture coordinate, skinning
animation weights, bone IDs..).
A detailed description of the compression algorithm is available here
Open3DGC supports two output stream types:
- Binary streams: compressed using arithmetic encoding
- ASCII (7-bits) streams: adapted for server-side gzip compression and java-script client side decoding
Compression Efficiency
Open3DGC is 7.8 times more efficient than Gzip and
- Test dataset: 160 models with various shapes and topologies (i.e., open/closed, manifold/non-manifold, arbitrary genus)
- Codecs:
- WebGL-Loader and Open3DGC with 14 bits quantization for positions and 10 bits quantization for normals/texture coord
- OpenCTM: default parameters (not fair)
Using the Open3DGC Compression Tool
- The "test_o3dgc" tool supports only OBJ files with a single triangular model
- Pre-built binaries for Win32, Win64 and ubuntu are available here
- Example of test models are located here
- To compress the "bunny" model file use the following command line:
test_o3dgc.exe -c -st binary -i bunny.obj
test_o3dgc.exe -c -st ascii -i bunny.obj
- ASCII streams should be further compressed by using GZip
- To decompress the stream:
test_o3dgc.exe -d -i bunny.s3d