+ All Categories
Home > Documents > Streaming Compression of Triangle Meshes

Streaming Compression of Triangle Meshes

Date post: 09-Feb-2016
Category:
Upload: kirkan
View: 51 times
Download: 0 times
Share this document with a friend
Description:
Streaming Compression of Triangle Meshes. Martin Isenburg University of California at Berkeley. Peter Lindstrom Lawrence Livermore National Labs. Jack Snoeyink University of North Carolina at Chapel Hill. Compression. digital text, programs … images voice, music movies. JPG. GIF. - PowerPoint PPT Presentation
Popular Tags:
46
Streaming Compression of Triangle Meshes Martin Isenburg University of California at Berkeley Jack Snoeyink University of North Carolina at Chapel Hill Peter Lindstrom Lawrence Livermore National Labs
Transcript
Page 1: Streaming Compression of Triangle Meshes

Streaming Compressionof Triangle Meshes

Martin IsenburgUniversity of California

at Berkeley

Jack SnoeyinkUniversity of North Carolina

at Chapel Hill

Peter LindstromLawrence Livermore

National Labs

Page 2: Streaming Compression of Triangle Meshes

Compression

Page 3: Streaming Compression of Triangle Meshes

Compression• physical

– sleeping bags– compressed air

JPG GIF

• digital– text, programs …– images– voice, music– movies

Page 4: Streaming Compression of Triangle Meshes

– Efficient Rendering– Progressive Transmission– Maximum Compression

• Connectivity• Geometry• Properties

Mesh Compression“Geometry Compression” [Deering, 95]

storage / network

main memory

Maximum Compression

Page 5: Streaming Compression of Triangle Meshes

Current Schemes“Triangle Mesh Compression” [Touma & Gotsman ‘98]

“Cut-Border Machine” [Gumhold & Strasser ‘98]

“Edgebreaker” [Rossignac ‘99]

“Face Fixer” [Isenburg & Snoeyink ‘00]

“Degree Duality Coder” [Isenburg ‘02]

“Angle Analyzer” [Lee, Alliez & Desbrun ‘02]

“FreeLence” [Kälberer et al. ‘05]

“Out-of-Core Compression” [Isenburg & Gumhold ‘03]

Page 6: Streaming Compression of Triangle Meshes

Current Approach

Page 7: Streaming Compression of Triangle Meshes

Current Approach

Page 8: Streaming Compression of Triangle Meshes

Underlying 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

Page 9: Streaming Compression of Triangle Meshes

Original Orderings

rendering the first 20to 40 percent of thetriangle array

Page 10: Streaming Compression of Triangle Meshes

Connectivity TraversalEntire Mesh As Input

triangles

vertices beforecompression

starts

createdata structurefor queryingand markingconnectivity

getNext(h_edge);getInv(h_edge);getOrigin(h_edge);isBorder(h_edge);isEncoded(h_edge);markAsEncoded(h_edge);

inv flags

Auxiliary Data Structures

001

11

1

1

1

1

11

11

1

1

1

1

1

1

1

0

0

0

00

0 0

00

0

00

0

0

0

0

00

0

0

0

Page 11: Streaming Compression of Triangle Meshes

Large Meshes

3D scans isosurfaces

Page 12: Streaming Compression of Triangle Meshes

Large Meshes

3D scans isosurfaces

Page 13: Streaming Compression of Triangle Meshes

Limited Main Memory

“Compressing Large Polygonal Models” [Ho et al. ‘01]

• cut mesh into pieces, compress separately, stitch back together

“Out-of-core Compression of Gigantic Polygon Meshes”[Isenburg and Gumhold. ‘03]

• use an external memory structure

• impossible to construct / store data structures for mesh traversal

Page 14: Streaming Compression of Triangle Meshes

Out-of-Core Compression• OoC-Mesh

– on-disk clustering– construct in advance– cache LRU clusters

• OoC-Compressor– make few queries

Page 15: Streaming Compression of Triangle Meshes

Out-of-Core Compression• OoC-Mesh

– on-disk clustering– construct in advance– cache LRU clusters

• OoC-Compressor– make few queries

• Decompression– “streaming”

Page 16: Streaming Compression of Triangle Meshes

Streaming

Page 17: Streaming Compression of Triangle Meshes

Streaming• physical

– water in a pipe– drip coffee

• digital– streaming formats

• audio• video

• triangle meshes

Page 18: Streaming Compression of Triangle Meshes

Two Types of Streaming• progressive

• non-progressive

Page 19: Streaming Compression of Triangle Meshes

Non-Progressive Streaming• consume immediately• potentially without end• keep small buffer• delete data if no longer needed

small window

Page 20: Streaming Compression of Triangle Meshes

Streaming Mesh Formats• interleave introduce finalize

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

⋮ ⋮ ⋮ ⋮

vertex # 2finalized

not used bysubsequent

triangles

vertex # 2introduced

not used byprecedingtriangles

active

“Streaming Meshes” [Isenburg and Lindstrom ‘05]

number of active vertices“width”

Page 21: Streaming Compression of Triangle Meshes

Outputting 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

Page 22: Streaming Compression of Triangle Meshes

Streaming Simplification

“Stream Algorithm for … ” [Wu & Kobbelt ‘03]

“Large Mesh Simplification …” [Isenburg et al. ‘03]

Page 23: Streaming Compression of Triangle Meshes

Streaming Compression

Page 24: Streaming Compression of Triangle Meshes

Streaming Compression (1)• streaming API

bool open(FILE* file, int bits);bool write_vertex(float* position);bool write_triangle(int* index, bool* finalize);bool close();

• compare to standard APIbool compress(FILE* file, int bits,

int num_pos, float* positions, int num_tri, int* indices);

Page 25: Streaming Compression of Triangle Meshes

Streaming Compression (2)

• when writing a triangle– look-up active vertices– determine configuration– compress triangle

+ positions of new vertices– remove finalized data structures

• when writing a vertex– insert in hash

Page 26: Streaming Compression of Triangle Meshes

Possible Configurations

start add

start1

fill

join end

written triangle

active elements

Page 27: Streaming Compression of Triangle Meshes

Compressing a Triangle– configuration

add

fill

– specify active vertex• log2(width) bits• better: use cache

– specify other active vertices• use local edge lists

– position of new vertices• parallelogram prediction

– finalization flags

add

fill

Page 28: Streaming Compression of Triangle Meshes

Demo• compress triangles immediately

• use delay buffer

Page 29: Streaming Compression of Triangle Meshes

Greedy Local ReorderingImproving connectivity compression by reordering triangles in a delay buffer

0

2

4

6

8

10

12

14

16

18

none

25 5010

025

050

0 1K

5K

10K

50K

delay buffer size

bpv

lucy(original) (spectral) (geometric) (breadth) (depth)

st. matthew(original) (spectral) (geometric)

Page 30: Streaming Compression of Triangle Meshes

out-of-core

compressed 344 MB

pre-process 7 hours

4 hourscompress

main memory 384 MB

disk space 11.2 GB

streaming

---

28 min

---

12 MB

392 MB(coordinates uniformly quantized to 18 bits)

Page 31: Streaming Compression of Triangle Meshes

Example Processing Pipeline

Page 32: Streaming Compression of Triangle Meshes

P1 P2 P3

P1P2

P3

P1 P2 P3

• pipelined stream-processing

Pipelined Stream-Processing• conventional processing

P1 P2 P3

– super-linear speedup

– minimal end-to-end I/O delay

– optimal disk caching

Page 33: Streaming Compression of Triangle Meshes

Demo Pipeline

256

256

256

regular volume grid

smextract | smclean | smsimp | smcompress

P2 P3P1 P4

grid.raw mesh.smc

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 ⋮ ⋮ ⋮ ⋮

Page 34: Streaming Compression of Triangle Meshes

Conclusion

Page 35: Streaming Compression of Triangle Meshes

Current Schemes do not Scale

9 GB1 MB

Page 36: Streaming Compression of Triangle Meshes

Problems of Current Schemes

372 milliontriangles

(4 GB)

186 million vertices(2 GB)

dedicatedout-of-core

data structure(11 GB)

global reordering ofmesh duringcompression

entire mesh as input IO-inefficient for large data

Page 37: Streaming Compression of Triangle Meshes

Streaming Approachbool open(FILE* file, int bits);bool write_vertex(float* position);bool write_triangle(int* index, bool* finalize);bool close();

Page 38: Streaming Compression of Triangle Meshes

out-of-core

compressed 344 MB

pre-process 7 hours

4 hourscompress

main memory 384 MB

disk space 11.2 GB

streaming

---

28 min

---

12 MB

392 MB(coordinates uniformly quantized to 18 bits)

Page 39: Streaming Compression of Triangle Meshes

Alternate 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, …

• connectivity

Page 40: Streaming Compression of Triangle Meshes

Compressing Volume Meshesstandard streaming

torso

fighter

2.14 bpt 3.88 bptrate

time 7 min

115 MB

8 sec

3 MBmemory

1.81 bpt 3.56 bptrate

time 11 min

140 MB

12 sec

6 MBmemory

Page 41: Streaming Compression of Triangle Meshes

Current/Future Work• implement more stream modules

– streaming surface reconstruction– streaming stripification– streaming re-meshing– streaming smoothing– streaming segmentation– streaming feature extraction– streaming …

Page 42: Streaming Compression of Triangle Meshes

Acknowledgements• meshes

– Stanford University, Cyberware• support

– NSF grant 0429901 "Collaborative Research: Fundamentals

and Algorithms for Streaming Meshes." – U.S. DOE / LLNL # W-7405-Eng-48– Max Planck Institute für Informatik

Page 43: Streaming Compression of Triangle Meshes

Thank You

streaming compression API :http://www.cs.unc.edu/~isenburg/smc

Page 44: Streaming Compression of Triangle Meshes
Page 45: Streaming Compression of Triangle Meshes

Stream-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

Page 46: Streaming Compression of Triangle Meshes

# triceratops.obj## 2832 vertices# 2834 polygons#v 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! permutations2832! • 2834! • 4

differentorderings

= 1.6E+18810possible

descriptions

2834

4 rotations 2834

2834! permutations

2806


Recommended