Tuesday, 8 October 2013

Selecting O3DGC Encoding Parameters


Attribute type
Quantization
Prediction mode
POSITION

Excellent quality: 13
Good quality: 12
Aggressive compression: 10
O3DGC_SC3DMC_PARALLELOGRAM_PREDICTION

TEXCOORD

10 (for 1024x1024) texture images
9 (for 512x512) texture images
8 (for 256x256) texture images
N (for 2^Nx2^N) texture images
O3DGC_SC3DMC_PARALLELOGRAM_PREDICTION

NORMAL

Excellent quality: 10
Good quality: 8
Aggressive compression: 6
O3DGC_SC3DMC_SURF_NORMALS_PREDICTION if the normals magnitudes are not relevant
O3DGC_SC3DMC_PARALLELOGRAM_PREDICTION to preserve the normals magnitudes

COLOR

Excellent quality: 10
Good quality: 8
Aggressive compression: 6
O3DGC_SC3DMC_DIFFERENTIAL_PREDICTION

WEIGHT

No idea yet. I need to test with real data.
I would say between 8-12

O3DGC_SC3DMC_PARALLELOGRAM_PREDICTION

JOINT_ID

No quantization
O3DGC_SC3DMC_DIFFERENTIAL_PREDICTION



Computational complexity of prediction modes:
·         O3DGC_SC3DMC_PARALLELOGRAM_PREDICTION (+++)
·         O3DGC_SC3DMC_SURF_NORMALS_PREDICTION (+++)
·         O3DGC_SC3DMC_DIFFERENTIAL_PREDICTION (++)
·         O3DGC_SC3DMC_NO_PREDICTION (+)

Thursday, 1 August 2013

[Open3DGC] Examples of encoded streams

Encoded Models
Original, encoded and decoded streams are available here 




Compression Results
  • 14 bits quantization for positions
  • 10 bits quantization for normals and texture coordinates


Open3DGC (more results!)


Encoders
  • Open3DGC-Bin: binary version of Open3DGC (14 bits quantization)
  • Open3DGC-ASCII: ascii version of Open3DGC (14 bits quantization)
  • webgl-loader: the optimized version obj2utf8x (14 bits quantization)
  • GZip (default): level=6
  • GZip (best): level=9
  • 7zip (best): level=9
Test dataset
Results

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