Wednesday 31 July 2013

Open3DGC (updated results)

In a previous post, I reported experimental results comparing the compression efficiency of Open3DGC to webgl-loader and OpenCTM. In this post, I am providing an updated version, which takes into account:
  • The "evaluation version" obj2utf8x of webgl-loader, which provides better compression performances than the obj2utf8 encoder, and
  • The latest Open3DGC version (slightly better compression).



  

Wednesday 24 July 2013

Open3DGC (Open 3D Graphics Compression)

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 

1.7-2.0 times more efficient than Webgl-loader and OpenCTM

  • 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:
    • Binary stream
test_o3dgc.exe -c -st binary -i bunny.obj
    • ASCII stream
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