+ All Categories
Home > Documents > Large Mesh Simplification using Processing Sequences

Large Mesh Simplification using Processing Sequences

Date post: 14-Jan-2016
Category:
Upload: badru
View: 43 times
Download: 1 times
Share this document with a friend
Description:
Large Mesh Simplification using Processing Sequences. Martin Isenburg UNC Chapel Hill. Peter Lindstrom LLNL Livermore. Stefan Gumhold GRIS Tubingen. Jack Snoeyink UNC Chapel Hill. Overview. Motivation Background Processing Sequences Adapted Simplification Schemes OOCS Wu & Kobbelt - PowerPoint PPT Presentation
Popular Tags:
106
Large Mesh Simplification using Processing Sequences Martin Isenburg UNC Chapel Hill Peter Lindstrom LLNL Livermore Stefan Gumhold GRIS Tubingen Jack Snoeyink UNC Chapel Hill
Transcript
Page 1: Large Mesh Simplification using Processing Sequences

Large Mesh Simplificationusing Processing Sequences

Martin IsenburgUNC

Chapel Hill

Peter LindstromLLNL

Livermore

Stefan GumholdGRIS

Tubingen

Jack SnoeyinkUNC

Chapel Hill

Page 2: Large Mesh Simplification using Processing Sequences

Overview

• Motivation

• Background

• Processing Sequences

• Adapted Simplification Schemes– OOCS

– Wu & Kobbelt

• Conclusion

Page 3: Large Mesh Simplification using Processing Sequences

Motivation

Page 4: Large Mesh Simplification using Processing Sequences

Large Meshes

3D scans isosurfaces

Page 5: Large Mesh Simplification using Processing Sequences

Large Meshes

3D scans isosurfaces

Page 6: Large Mesh Simplification using Processing Sequences

PPM isosurface

• 235 million vertices

• 469 million triangles

• 235 million rtices

• million trianglesover

8 Gigabyte !

hampers:• distributing / loading• rendering• processing

Page 7: Large Mesh Simplification using Processing Sequences

• in-core algorithms of choice:– Qslim

– Rsimp

Mesh Simplification

• alternative: processing sequence

[Garland & Heckbert ’97]

[Brodsky & Watson ’00]

require~ 200 bytesper vertex

• current out-of-core approaches:1. piece by piece

2. external memory

3. polygon soup [Lindstrom ’00]

[Hoppe ’98]

[Cignoni et al. ’03]

Page 8: Large Mesh Simplification using Processing Sequences

Background

Page 9: Large Mesh Simplification using Processing Sequences

Related Work

• Large Mesh Processing– Simplification

– Compression

– Visualization Systems

• Main Techniques 1. Mesh Cutting

2. Online Processing

3. Batch Processing

Page 10: Large Mesh Simplification using Processing Sequences

• cut mesh into small pieces

• process each separately

• special treatment for cuts

• stitch result back together

1. Mesh Cutting

figure courtesy of Hugues Hoppe

Page 11: Large Mesh Simplification using Processing Sequences

2. Online Processing

• external memory datastructures

• “random” mesh access

figure courtesy of Paolo Cignoni

Page 12: Large Mesh Simplification using Processing Sequences

3. Batch Processing (1)

• polygon soup

• single scan over stream ofde-referenced triangles

• no explicit connectivity

[Lindstrom ’00]

Page 13: Large Mesh Simplification using Processing Sequences

3. Batch Processing (2)

• polygon soup

• single scan over stream ofde-referenced triangles

• no explicit connectivity

(coherent)

reconstruct

figure courtesy of Jianhua Wu and Leif Kobbelt

[Wu & Kobbelt ’03]

Page 14: Large Mesh Simplification using Processing Sequences

Sequenced Processing

• coherent triangle orderinginterleaved with vertices

• small footprint streaming

• finalization of vertices

[Isenburg & Gumhold ’03]

Page 15: Large Mesh Simplification using Processing Sequences

Quadric Error Matrices

• accumulate error

• vertex placement

• sum of squareddistances of point to set of planes

• quadric error:

figure courtesy of Michael Garland

[Garland & Heckbert ’97]

Q =q00 q01 q02 q03

q10 q11 q12 q13

q20 q21 q22 q23

q30 q31 q32 q33

vTQv

Page 16: Large Mesh Simplification using Processing Sequences

Processing Sequences

Page 17: Large Mesh Simplification using Processing Sequences

A little history …

• Compressor– region growing

Page 18: Large Mesh Simplification using Processing Sequences

A little history …

• Compressor– region growing

• Out-of-Core Mesh– transparent

– caching clusters

Page 19: Large Mesh Simplification using Processing Sequences

A little history …

• Compressor– region growing

• Out-of-Core Mesh– transparent

– caching clusters

• Compact Format– small footprint

– streaming

Page 20: Large Mesh Simplification using Processing Sequences

A little history …

• Compressor– region growing

• Out-of-Core Mesh– transparent

– caching clusters

• Compact Format– small footprint

– streaming

Page 21: Large Mesh Simplification using Processing Sequences

A little history …

• Compressor– region growing

• Out-of-Core Mesh– transparent

– caching clusters

• Compact Format– small footprint

– streaming

Page 22: Large Mesh Simplification using Processing Sequences

• interleaved ordering of triangles and vertices that “grows regions”

processingboundary

Processing Sequences

border edges

Q7

Q1

Q4

• available information:– first & last use of edges & vertices

– surface border

• maintaindata alongboundary

Page 23: Large Mesh Simplification using Processing Sequences

unprocessed region

Abstractions

• boundary-based– one boundary

– process immediately

processed region

waiting area

processingboundary

Page 24: Large Mesh Simplification using Processing Sequences

processed region

unprocessed region

Abstractions

• boundary-based– one boundary

– process immediately

• buffer-based– two boundaries

– process in buffer

– read to fill

– write to empty

in-corebuffer

output boundary

input boundary

processed region

unprocessed region

processingboundary

waiting area

Page 25: Large Mesh Simplification using Processing Sequences

OOCS

Page 26: Large Mesh Simplification using Processing Sequences

OOCS

• stream in polygon soup– triangle after triangle

• vertex clustering– one quadric per grid cell

• output sensitive– store all quadrics

• no border info – tangential

term added

Page 27: Large Mesh Simplification using Processing Sequences

OOCS

Q

Q

input output

Page 28: Large Mesh Simplification using Processing Sequences

OOCS

Q

Q

Q

Q

input output

Page 29: Large Mesh Simplification using Processing Sequences

OOCS

Q

Q

Q

Q

input output

Page 30: Large Mesh Simplification using Processing Sequences

OOCS

Q

Q

QQ

Q Q

Q

input output

Page 31: Large Mesh Simplification using Processing Sequences

OOCS

QQ

Q Q

QQ

QQ

Q Q Q

Q

QQ

Q

input output

Q

Page 32: Large Mesh Simplification using Processing Sequences

OOCS

QQ

Q Q

QQ

QQ

QQ

QQ Q Q Q

Q Q

Q

Q Q Q

Q

Q

Q

QQ

Q

QQ

Q

Q

input output

Page 33: Large Mesh Simplification using Processing Sequences

OOCS

QQ

Q Q

QQ

Q

Q

Q

QQ

QQ Q Q Q

Q Q

Q

Q

Q Q

Q Q

Q

Q

Q

QQQ

Q Q Q

QQQQ

Q

QQQ

Q Q

Q

input output

Page 34: Large Mesh Simplification using Processing Sequences

OOCS

QQ

Q Q

QQ

Q

Q

Q

QQ

QQ Q Q Q

Q Q

Q

Q

Q Q

Q Q

Q

Q

Q

QQQ

Q Q Q

QQQQ

Q

QQ

QQ

QQQ

Q Q

Q

input output

Page 35: Large Mesh Simplification using Processing Sequences

OOCS

QQ

Q Q

QQ

Q

Q

Q

QQ

QQ Q Q Q

Q Q

Q

Q

Q Q

Q Q

Q

Q

Q

QQQ

Q Q Q

QQQQ

Q

QQ

QQ

QQQ

Q Q

Q

input output

Page 36: Large Mesh Simplification using Processing Sequences

OOCS using PS

Page 37: Large Mesh Simplification using Processing Sequences

• fewer artifacts– do not collapse multiple

layers into single vertex

– improved surface boundaries

• streaming output

OOCS using PS

• memory insensitive– maintain much fewer quadrics

Page 38: Large Mesh Simplification using Processing Sequences

processedregion

unprocessedregion

Q7

7

Q55

55

OOCS using PS (detail)

Q33

Q4

4

4

Page 39: Large Mesh Simplification using Processing Sequences

processedregion

unprocessedregion

Q55

Q4

Q7

7

4

4

Q3

5

3

OOCS using PS (detail)

Page 40: Large Mesh Simplification using Processing Sequences

processedregion

unprocessedregion

Q55

Q4

Q7

7

4

4

5

Q3

turns into vertex quadric

OOCS using PS (detail)

Page 41: Large Mesh Simplification using Processing Sequences

processedregion

unprocessedregion

Q55

Q4

Q7

7

4

4

5

Q8

8

OOCS using PS (detail)

Page 42: Large Mesh Simplification using Processing Sequences

processedregion

unprocessedregion

Q55

Q4

Q7

7

4

5

Q8

8

OOCS using PS (detail)

Page 43: Large Mesh Simplification using Processing Sequences

processedregion

unprocessedregion

Q55

Q4

Q7

7

5

Q8

8

quadric turns into vertex

8

OOCS using PS (detail)

Page 44: Large Mesh Simplification using Processing Sequences

processedregion

unprocessedregion

Q55

Q7

7

5

Q8

88

Q9

9

OOCS using PS (detail)

Page 45: Large Mesh Simplification using Processing Sequences

processedregion

unprocessedregion

Q55

Q7

7

Q8

88

Q9

9quadricmerge

OOCS using PS (detail)

Page 46: Large Mesh Simplification using Processing Sequences

OOCS using PSinput output

QQ

Page 47: Large Mesh Simplification using Processing Sequences

OOCS using PS

Q

Q

Q

Q

outputinput

Page 48: Large Mesh Simplification using Processing Sequences

OOCS using PS

Q

Q Q

Q Q

Q

outputinput

Q Q

Page 49: Large Mesh Simplification using Processing Sequences

OOCS using PS

Q

Q

Q

Q

QQ

QQ

Q Q

Q

Q

Q

outputinput

QQ

Q Q

Page 50: Large Mesh Simplification using Processing Sequences

OOCS using PS

QQ

Q

QQ

Q

QQ

Q

Q

Q

outputinput

QQ

Q

QQ

Q Q

Q Q

Q

QQ Q

Q

Page 51: Large Mesh Simplification using Processing Sequences

OOCS using PS

QQ

Q

Q

Q

Q

outputinput

QQ

Q

Q

Q

QQ

Q

Q

QQ

Q

QQ

Q Q

Q Q

Q

Q Q

Q

Q

Q

Q

Page 52: Large Mesh Simplification using Processing Sequences

OOCS using PS

Q

QQ

Q

Q

outputinput

QQ

Q

Q

Q

Q

QQ

Q

Q

Q

QQ

Q

Q

QQ

Q

QQ

Q Q

Q Q

Q

Q Q

Q

Q

Q

QQ

Page 53: Large Mesh Simplification using Processing Sequences

OOCS using PS

QQQ

Q

Q

Q

outputinput

Q

Q

Q

QQ

Q

Q

Q

Q

QQ

Q

Q

Q

QQ

Q

Q

QQ

Q

QQ

Q Q

Q Q

Q

Q Q

Q

Q

Q

QQ

Q

Page 54: Large Mesh Simplification using Processing Sequences

OOCS using PS

Q

QQ

Q

Q

outputinput

QQQ

Q

Q

Q

Q

Q

Q

QQ

Q

Q

Q

Q

QQ

Q

Q

Q

QQ

Q

Q

QQ

Q

QQ

Q Q

Q Q

Q

Q Q

Q

Q

Q

QQ

Q

Q

Page 55: Large Mesh Simplification using Processing Sequences

OOCS using PSoutputinput

QQQ

Q

Q

Q

Q

Q

Q

QQ

Q

Q

Q

Q

QQ

Q

Q

Q

QQ

Q

Q

QQ

Q

QQ

Q Q

Q Q

Q

Q Q

Q

Q

Q

QQ

Q

Q

QQ

Q

Q

Q

Page 56: Large Mesh Simplification using Processing Sequences

Improved Mesh QualityOOCS-PS

OOCS

vertices: 33,053

non-manifoldvertices: 3,366

vertices: 35,134

non-manifoldvertices: 897

Page 57: Large Mesh Simplification using Processing Sequences

Lower Memory Requirements

373 million vertices

OOCSmemory:

3,282 MBtime:

67 minOOCS-PSmemory:

121 MBtime:

83 min23 million vertices

Page 58: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

Page 59: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

• stream coherent soup into buffer• reconstruct connectivity

– hash on vertex data– finalize complete stars

inputboundary

a aa a

a

aaa

a

accumulating

c c

collapsible

• randomized edge collapse – one quadric per vertex– accumulating collapsible

• randomized streaming output

Page 60: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

ca

a

a

a

a

a

a

input output

Page 61: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

c

cc

c

c

c

cc

c

a

a

a

aa

aa

a

a

a

a

a

aa

a

a aa

aa

a

a

a

a

a

a

a

input output

Page 62: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

c

cc

cc

aa

a a

c

a

a

a

aa

a

c

c

c

a

a

a

aa

a

a

aa

a

a

a

c

c

ca

a

a

a

a

a

aa

a

aa

a

a

a

a

a

a

c

c

c

outputinput

Page 63: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

c

c

c

c

c

aaaa

a

a

a

aa

a c

c

c

a

a

a

aa

a a

aa

a

a

a

cc

ca

a

a

a

a

a

a

a

a

a a

a

a

a

a

a

a

c

ca

aa

a

a

c

c

c

c

cc

cc

c

aa

a

a

c

cc

c

a

a

outputinput

Page 64: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

c

c

c

c

c

aaaa

a

a

a

a

a

a

c

c

a

a

a

a a

a a

aa

a

aa

c

ca

a

a

aa

a

a

a a

a

a

a

a

a

c

c

aa

a

a

a

c

c

c

cc

aa

a

a

c

c

c

c

a

a

aa

aa

aa

c

c

c

c

c c

c

c

c

c

c

c

cc

c

c

c

c c

outputinput

Page 65: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

c

aaaa

a

aa

a

a

a

a

aa

a

a

a

a

a

a

a

aa

a

a

a a

a

a

a

a

a

c

aa a

a

a

c

aa

a

a

aa

a

a

a

a

c

c

c c

c

c

c

caa

a

a

aa

a a

a

aa

a

a a a a

a

a

a

a

a

ac

c

c

c

c c

c

c

c

c

c

c c

outputinput

Page 66: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

aaaa

a

aa

a

a

a

a

aa

a

a

a

a

a

a

a

aa

a

aa a

a

a

a

a

a

aa a

a

a aa

a

a

a

a

a

a

a

a

c

c

a

a

a

a

aa

a

a

a

a

a

a

a a a a

a

a a

a

a

ac

c

c

aaa

aa

a

aa

aa

aa

aa

a

c

c

c c

cc

c

c

c

cc

outputinput

Page 67: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

aaaa

a

aa

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

aa a

a

a

a

a

a

a a

a

a aa

a

a

a

a

a

a

a

c

a aa

a

a

a

a

a

a

a

a

a

a a a a

a

a

a

aa

aa

a

aa a

a

a

aaa

a

a

a

a

c

c

a

a

a

a

cc c

ccc

cc

c

ac

a

outputinput

Page 68: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

aaaa

a

aa

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

aa a

a

a

a

a

a

a a

a

a aa

a

a

aa

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a a a a

a

a

a

aa

a

a

a

a a a

a

a

a

a

aa

a

a

a

a

aaa

a

c

cc

cc

a aa

a

c

outputinput

Page 69: Large Mesh Simplification using Processing Sequences

border

Wu & Kobbelt

aaaa

a

aa

a

a

a

a

a

a

a

a

a

a

a

a

a

a

aa a

a

a

a

a

a

a a

a

a aa

a

a

a

a

a

a

aa

a

a

a

a

a

a

a

a

a a a a

a

a

a

aa

a

aa a a

a

a

aa

a

a

a

aaa

a

aa

a

aa

a

a

aa

a

c

c

c

cc

outputinput

Page 70: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

c

c

c

c

c

c

c

c

c

c

c

c

cc c

c

c

c

c

c

c

c cc

c

c

c

c

cc

c

c

c

c

c

c

c

c c c c

c

c

c

c

c

ccc

cccc

cc

c

c

c

c c c

c

c

c

c

c

c

cc c

c

c

cc

c

c

cc

c

cc

c

c

cc

c

c

c

c

cc

outputinput

Page 71: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

c

c

c

c

c

c

c

c

c

c

c

c

c

c

c

c

c

c c

cc

c

cc

c

c

c

c

c c

c

c

cc

c

c

c

c

cc

c

c

c

c

c

outputinput

Page 72: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt

c

c

c

c

c

c

c

c

c

c

c

c

c

c

c

cc

c

c

c

c

c

c

c

outputinput

Page 73: Large Mesh Simplification using Processing Sequences

Wu & Kobbeltoutputinput

Page 74: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

Page 75: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

• less fragmentation of buffer– processing sequence input / output

– more collapsible edges

• immediate boundary simplification– mesh borders known early

– truly “streaming” output

• faster connectivity reconstruction– indexed input / API support

Page 76: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS (detail)

unprocessedregion

processedregion

inputboundary

outputboundary

in-coretrianglebuffer

a

a

a

a

a

a

a

accumulating

c

cc

c

c

c

c

collapsible

Page 77: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS (detail)

unprocessedregion

processedregion

inputboundary

outputboundary

in-coretrianglebuffer

c

cc

c

c

c

c

collapsible

a

a

a

a

a

a

a

accumulating

c

Page 78: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS (detail)

unprocessedregion

processedregion

inputboundary

outputboundary

in-coretrianglebuffer

c

cc

c

c

c

c

collapsible

a

a

a

a

a

a

a

a

accumulating

c

c

Page 79: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS (detail)

unprocessedregion

processedregion

inputboundary

outputboundary

in-coretrianglebuffer

cc

c

c

c

collapsible

a

a

a

a

a

a

a

a

accumulating

c

c

c

Page 80: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS (detail)

unprocessedregion

processedregion

inputboundary

outputboundary

in-coretrianglebuffer

cc

c

c

c

collapsible

a

a

a

a

a

a

a

a

accumulating

c

c

c

Page 81: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS (detail)

unprocessedregion

processedregion

inputboundary

outputboundary

in-coretrianglebuffer

cc

c

c

c

collapsible

a

a

a

a

a

a

a

a

accumulating

c

c

Page 82: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PSinput output

Page 83: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

a

c

aaa

a

aaaa

a

a

c

cc

outputinput

Page 84: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

a

a a aaaa

a

a

aaaaaa

a

a

a

c c

cc

c

cc

c

c

c c c

c

outputinput

Page 85: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

aa a

a a

a

aa

a

a

a

aa

aa

aaa

a

aaa

a

a

a

aa

c

cc

c

c

c

cc

c

c

c

cc

cc

c

c

cc

ccc

c

c

cc

outputinput

Page 86: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

aa

a

aaa

a a

aa

a a

aa

a

a

a

a

a

aa aa

a

c

c

c

c c

c

c

c

c

c

c

ccc

ccc

c

c

c

c

c

c

c

c

c

c

c

c

cc

cc

c

c

cc

outputinput

Page 87: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

a a

a

a

a

aa

a

aa

a

a

a

a

c

c cc

ccc

c

c

c

c

cc

c

c

c

c

cc

cc

c c

c

c

c

c

c

c

c

c

c

c

c

c

c

c

input output

Page 88: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

aa

a

aa

a

a

a

a

a

aa

c

c

c

c

c

c

c

c

c

c

c

c

c

c

c

cc

c

c

c

c

c

c

c

c

c

c

c

c

input output

Page 89: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

a

a

aa a

a

a a

a

a

aa

c

c

c

c

c

c

c

c

c

c

c

ac

c

c

c

c

c

c

c

c c

c

c

c

c

c

c

input output

Page 90: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

a

a

a

a

a

a

a

a

ac

a

c

c

c

c

c

c

c

c c

c

c

c

c

a

c

c

c

c

cc

c

cc

cc

c

c

c

c

c

c

input output

Page 91: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PS

c c

cc

c

cc

cc

c

cc

cc

c

c

c

input output

Page 92: Large Mesh Simplification using Processing Sequences

Wu & Kobbelt using PSinput output

Page 93: Large Mesh Simplification using Processing Sequences

Conclusion&

Current Work

Page 94: Large Mesh Simplification using Processing Sequences

Summary

• processing sequences– efficient large mesh access

– streaming input and output

– abstractions: • boundary-based• buffer-based

• adapted simplification algorithms:– OOCS

– Wu & Kobbelt

Page 95: Large Mesh Simplification using Processing Sequences

• length of processing boundary– possible

– traversal is optimized for lowest bit-rate change heuristic

Issues

O( n ) [Bar-Yehuda & Gotsman ‘96]

• external memory mesh to createprocessing sequences …?– expensive to build & use

– defeats purpose …

Page 96: Large Mesh Simplification using Processing Sequences

Generating PS

• on-the-fly

• input: “streaming mesh”

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

verticesfinalized

(not used bysubsequenttriangles)

Page 97: Large Mesh Simplification using Processing Sequences

• extend to volume meshes

• promote– provide API

• create / improve– lower processing boundary length

Current Work

• compress– encode on-the-fly

Page 98: Large Mesh Simplification using Processing Sequences

Thank You.

Page 99: Large Mesh Simplification using Processing Sequences
Page 100: Large Mesh Simplification using Processing Sequences
Page 101: Large Mesh Simplification using Processing Sequences

v0

v1

v2

fill

Growing Operations

v0 v1

v2

end

v0 v1

v2

start

v0v1

v2

join

add

v0 v1

v2

processingboundary

Page 102: Large Mesh Simplification using Processing Sequences

read nexttriangle

info aboutcurrenttriangle

optionalmaintainingof user data

Prototype of PS API int open(const char* file_name);int read_triangle();void close();

int t_idx[3];float* t_pos_f[3];int t_vflag[3];int t_eflag[3];

void set_edata( void* data, int i );void set_vdata( void* data, int i );void* get_edata( int i );void* get_vdata( int i );

Page 103: Large Mesh Simplification using Processing Sequences

Example (1)

v0 v1

v2

eflag[0] = PS_FIRST eflag[1] = PS_FIRST eflag[2] = PS_FIRST

vflag[0] = PS_FIRSTvflag[1] = PS_FIRSTvflag[2] = PS_FIRST

v0 v1

v2

eflag[0] = PS_FIRST eflag[1] = PS_FIRST | PS_LAST eflag[2] = PS_FIRST | PS_LAST

vflag[0] = PS_FIRSTvflag[1] = PS_FIRST | PS_LASTvflag[2] = PS_FIRST

borderedge

enteringedge

borderedge

e0

e1

e2

start

start

Page 104: Large Mesh Simplification using Processing Sequences

enteringedge

leavingedges

borderedge

enteringedge

leaving edge

v0 v1

v2

add

Example (2)

eflag[0] = PS_LASTeflag[1] = PS_FIRST | PS_LASTeflag[2] = PS_FIRST

vflag[0] = 0vflag[1] = 0vflag[2] = PS_FIRST

eflag[0] = PS_LAST eflag[1] = PS_FIRSTeflag[2] = PS_LAST

vflag[0] = PS_LASTvflag[1] = 0vflag[2] = 0

fill

v0

v1

v2

Page 105: Large Mesh Simplification using Processing Sequences

Example (3)

eflag[0] = PS_LASTeflag[1] = PS_LASTeflag[2] = PS_LAST

vflag[0] = PS_LASTvflag[1] = PS_LASTvflag[2] = PS_LAST

eflag[0] = PS_LAST eflag[1] = PS_LAST eflag[2] = PS_LAST

vflag[0] = PS_LASTvflag[1] = 0vflag[2] = PS_LAST

leaving

edges

v0 v1

v2

v0 v1

v2

end

end

Page 106: Large Mesh Simplification using Processing Sequences

Computing Smooth Normalsps.open ( “bunny.sma” );while ( ps.read_triangle() ) tmp = compute ( ps.t_pos[0], ps.t_pos[1], ps.t_pos[2] ); for ( i = 0; i < 3; i++ ) if ( ps.vflag[i] & PS_FIRST ) n = new Normal (); ps.set_vdata ( n, i ); else n = ps.get_vdata ( i ); add ( n, tmp ); if ( ps.vflag[i] & PS_LAST ) normalize ( n ); do something delete n;

ps.close ();


Recommended