Title: Streaming Compression of Triangle Meshes
1Streaming Compressionof Triangle Meshes
Martin Isenburg University of Californiaat
Berkeley
Jack Snoeyink University of North Carolina at
Chapel Hill
Peter Lindstrom Lawrence LivermoreNational Labs
2Compression
3Compression
- physical
- sleeping bags
- compressed air
4Mesh Compression
Geometry Compression Deering, 95
- Efficient Rendering
- Progressive Transmission
- Maximum Compression
5Current Schemes
Triangle Mesh Compression Touma Gotsman 98
Cut-Border Machine Gumhold Strasser 98
Edgebreaker Rossignac 99
Face Fixer Isenburg Snoeyink 00
Angle Analyzer Lee, Alliez Desbrun 02
Degree Duality Coder Isenburg 02
Out-of-Core Compression Isenburg Gumhold 03
FreeLence Kälberer et al. 05
6Current Approach
7Current Approach
8Underlying Assumption
- original ordering of vertices and triangles is
not important - no need to preserve it
- compressor is allowed to re-order
- impose canonical ordering
- only encode connectivity graph
- re-order mesh based on some deterministic
traversal
9Original Orderings
rendering the first 20to 40 percent of
thetriangle array
10Connectivity Traversal
Entire Mesh As Input
vertices
triangles
11Large Meshes
3D scans
isosurfaces
12Large Meshes
3D scans
isosurfaces
13Limited Main Memory
- impossible to construct / store data structures
for mesh traversal
14Out-of-Core Compression
- OoC-Mesh
- on-disk clustering
- construct in advance
- cache LRU clusters
- OoC-Compressor
- make few queries
15Out-of-Core Compression
- OoC-Mesh
- on-disk clustering
- construct in advance
- cache LRU clusters
- OoC-Compressor
- make few queries
- Decompression
- streaming
16Streaming
17Streaming
- physical
- water in a pipe
- drip coffee
18Two Types of Streaming
?
?
?
19Non-Progressive Streaming
- consume immediately
- potentially without end
- keep small buffer
- delete data if no longer needed
20Streaming Mesh Formats
-
- interleave introduce finalize
Streaming Meshes Isenburg and Lindstrom 05
v 1.32 0.12 0.23v 1.43 0.23 0.92v
0.91 0.15 0.62f 1 2 3done 2 v
0.72 0.34 0.35f 4 1 3done 1 v
0.72 1.03 0.35 ? ? ? ?
21Outputting Streaming Meshes
- isosurface
- 235 million vertices
- 469 million triangles
over8 Gigabyte
- marching cubes
- extract layer by layer
- output elements as extracted
- finalize vertices of previous layer
Richtmeyer-Meshkov instability simulation at LLNL
22Streaming Simplification
Stream Algorithm for Wu Kobbelt 03
Large Mesh Simplification Isenburg et al.
03
23Streaming Compression
24Streaming Compression (1)
bool open(FILE file, int bits) bool
write_vertex(float position)bool
write_triangle(int index, bool finalize) bool
close()
25Streaming Compression (2)
- when writing a vertex
- insert in hash
- when writing a triangle
- look-up active vertices
- determine configuration
- compress triangle
- positions of new vertices
- remove finalized data structures
26Possible Configurations
written triangle
start
add
fill
start1
end
join
active elements
27Compressing a Triangle
- specify active vertex
- log2(width) bits
- better use cache
add
- specify other active vertices
- use local edge lists
- position of new vertices
- parallelogram prediction
28Demo
- compress triangles immediately
29Greedy Local Reordering
Improving connectivity compression by reordering
triangles in a delay buffer
18
lucy
16
14
(original)
12
(spectral)
10
bpv
(geometric)
8
(breadth)
6
4
(depth)
2
st. matthew
0
(original)
25
50
1K
5K
100
250
500
10K
50K
(spectral)
none
(geometric)
delay buffer size
30out-of-core
344 MB
compressed
(coordinates uniformly quantized to 18 bits)
31Example Processing Pipeline
32Pipelined Stream-Processing
- super-linear speedup
- minimal end-to-end I/O delay
- optimal disk caching
33Demo Pipeline
regular volume grid
v 1.32 0.12 0.23v 1.43 0.23 0.92v
0.91 0.15 0.62f 1 2 3done 2 v
0.72 0.34 0.35f 4 1 3done 1 ?
? ? ?
256
256
256
smextract smclean smsimp smcompress
P2
P3
P1
P4
grid.raw
mesh.smc
34Conclusion
35Current Schemes do not Scale
9 GB
1 MB
36Problems of Current Schemes
entire mesh as input
IO-inefficient for large data
186 million vertices(2 GB)
dedicated out-of-core data structure(11
GB) global reordering ofmesh
duringcompression
372 milliontriangles(4 GB)
37Streaming Approach
bool open(FILE file, int bits) bool
write_vertex(float position)bool
write_triangle(int index, bool finalize) bool
close()
38out-of-core
344 MB
compressed
(coordinates uniformly quantized to 18 bits)
39Alternate Approaches
-
- different re-ordering strategy
- higher correlation
- deterministic growing strategy
- let compressor choose correct
- degree-based coding
- need to relax max delay constraint
- geometry
- local coordinate system, angles,
40Compressing Volume Meshes
standard
streaming
2.14 bpt
3.88 bpt
rate
torso
7 min
8 sec
time
115 MB
3 MB
memory
1.81 bpt
3.56 bpt
rate
fighter
11 min
12 sec
time
140 MB
6 MB
memory
41Current/Future Work
- implement more stream modules
- streaming surface reconstruction
- streaming stripification
- streaming re-meshing
- streaming smoothing
- streaming segmentation
- streaming feature extraction
- streaming
42Acknowledgements
- meshes
- Stanford University, Cyberware
- support
- NSF grant 0429901
- "Collaborative Research Fundamentalsand
Algorithms for Streaming Meshes." - U.S. DOE / LLNL W-7405-Eng-48
- Max Planck Institute für Informatik
43Thank You
streaming compression API http//www.cs.unc.edu/
isenburg/smc
44(No Transcript)
45Stream-Processing Modules
- tasks that process mesh elements one at a time
- e.g. for each triangle t
- tasks that only require access to local neighbors
- e.g. for each triangle t of vertex v
- tasks that are order independent
- e.g. collapse edges shorter than ?
46 triceratops.obj 2832 vertices 2834
polygonsv 3.661 0.002 -0.738v 3.719
0.347 -0.833v 3.977 0.311 -0.725v 4.077
0.139 -0.654 ? ? ? ? f 2806 2810
2815 2821f 2797 2801 2811 2805f 2789
2793 2802 2796f 2783 2794 2788 ? ?
? ?
2832! permutations
2806
2834! permutations