Build Better Software. Faster.
Visit our company site at: www.techsoft3d.com
 

White Papers Index

.hsf Compression Testing
Gavin

Global Compression

The streaming toolkit performs LZ compression of the entire file using a public domain component called 'zlib'; this is a lossless compression technique that permits pieces of the compressed file to be streamed and decompressed, and is computationally efficient on both the compression and decompression sides.

Geometry Compression

Geometry compression is currently focused on the 'shell' primitive. This is the primary primitive used to represent tessellated information. Datasets typically consist primarily of shells if the data sets originated in MCAD/CAM/CAE applications.

 

Vertex Compression - This involves encoding the locations of shell vertices, providing reduction in file size in exchange for loss of coordinate precision and slightly lower visual quality. The degradation in visual quality is highly dependent on the topology of the shell, as well as how the normals information is being exported.

Normals Compression - Normals compression involves encoding vertex normals, providing reduction in file size in exchange for lower visual quality. Again, the degradation in visual quality is highly dependent on the topology of the shell, as well as how the normals information is being exported. HOOPS/Stream transmits compressed normals for vertices that have been compressed, or if a normal has been explicitly set on a vertex. Surfaces that had gradual curvature over a highly tessellated region can look faceted due to the aliasing of the compressed normals. 10 bit normals are compressed using a look-up table of 1024 pre-defined values.

Connectivity Compression - This compresses 'shell' connectivity information. This compression technique can provide compelling reductions in files sizes for datasets that contain many 'shell' primitives. It takes approximately twice as long to read, and ten times as long to write, but the savings can be significant. It is not recommended for topologically complex data sets (such as FEA models with interior faces or watertight closed surfaces with topological genus greater than 5). In addition to reducing the cost of connectivity to near zero, vertices and normals are more cheaply encoded as well, by making them relative to predicitions based on connectivity and previously seen values.

Instancing - HSF supports making copies of previously-seen geometry, with an optional 4x3 transformation matrix (i.e. a 4x4 matrix without the perspective component) applied. The HOOPS/stream searches for repeated instances using a fast hash table to find candidates, then a full comparison of all aspects of the geometry's vertices and attributes.

 

The following chart displays the size of various files saved using .hsf compression settings. ("view_model" links to an ATL control only supported on Internet Explorer)

 
Formula1 Dataset
Train Chassis Dataset
Piping Dataset (instancing)
w/ LZ
Compression

w/o LZ
Compression

TK_Disable
Global
Compression

w/ LZ
Compression

w/o LZ
Compression

TK_Disable
Global
Compression

w/ LZ
Compression

w/o LZ
Compression

TK_Disable
Global
Compression

Full Resolution
.hmf

4,571 KB

23,497 KB
view model

6,405 KB

28,354 KB
view model

344 KB

2,608 KB
view model

24 bits/Vertex
Full Res. Normals
No Advanced
Compression

2,858 KB
view model

4,969 KB
view model

3,711 KB
view model
5,286 KB
view model
24 bits/Vertex
24 bits/Normals
No Advanced
Compression

2,161 KB
view model

3,094 KB
view model

2,403KB
view model
3,233 KB
view model
120 KB
view model
24 bits/Vertex
10 bits/Normals
No Advanced
Compression

2,004 KB
view model

2,730 KB
view model

2,087 KB
view model
2,834 KB
view model
24 bits/Vertex
24 bits/Normals
Advanced
Connectivity
Compression
1,876 KB
view model
2,751 KB
view model
2,155 KB
view model
1,868 KB
view model
1,073 KB
view model
 

Analysis

The data sets "formula1" and "train_chassis" each have significant amounts of non-surface data that is unaffected by any sort of advanced compression scheme (308k for formula1 and 237k for train_chassis). So considering only surfaces, and at identical 24-bit resolutions, advanced compression algorithm compresses formula1 from 1304 down to 1130 and train_chassis from 1868 to 1175 (i.e. an additional 15% and 58%, respectively). The reason for the difference is that formula1 is broken into many small pieces that do not perform especially well under our algorithm. These two data sets pretty much capture the range of real-world results that we have seen from data on which connectivity compression can be used. These two data sets came to us courtesy of Parasolid.

On the piping data set, we see instancing doing most of the heavy compression, simply because of the nature of the data. Almost the entire thing is made up of copies of only a very small number of "symbols". For reference, without instancing, the full-resolution piping data set would have been 239kb with LZ and 848kb without. This data set came to us courtesy of Coade.

 
 

 

 

 

 

©2004-06 Tech Soft 3D All Rights Reserved. Privacy | Legal