polygon meshes -...
TRANSCRIPT
![Page 1: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/1.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 1
polygon meshes
![Page 2: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/2.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 2
polygon meshes representation
• which representation is good? – often triangles/quads only – will work on triangles
• compact • efficient for rendering
– fast enumeration of all faces
• efficient for geometry algorithms – finding adjacency (what is close to what)
![Page 3: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/3.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 3
vertices, edges, faces
• fundamental entities – nv vertices – ne edges – nf faces – simple closed surface: nv - ne + nf = 2
• fundamental properties: – topology: how faces are connected – geometry: where faces are in space – separate issues
• algorithms mostly care about topology
![Page 4: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/4.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 4
topology vs. geometry
• same geometry different topology
• same topology different geometry
![Page 5: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/5.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 5
triangles
![Page 6: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/6.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 6
triangles
• array of vertex data – vertex[nf][3] – vertex stores position and optional data (normal, uvs) – ~72 bytes per triangle with vertex position only
• redundant • adjacency is not well defined
– floating point errors in comparing vertices
![Page 7: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/7.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 7
indexed triangles
![Page 8: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/8.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 8
indexed triangles
• array of vertex data – vertex[nv] – 12 bytes per vertex with position only
• array of vertex indices (3 per triangle) – int[nf][3], often flattened in a single array – 24 bytes per triangle
• total storage: ~ 36 bytes (50% memory)
• topology/geometry stored separately/explicitly – adjacency queries are well defined
![Page 9: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/9.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 9
triangles strips
• since triangle share edges, let every triangle reuse the last one’s vertices
![Page 10: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/10.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 10
triangles strips
• requires multiple strips for general case
![Page 11: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/11.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 11
triangle strips
• array of vertex data – vertex[nv] – 12 bytes per vertex with position only
• array of lists of vertex indices – int[nf][varyingLength]
• for long lists saves about 1/3 index memory
![Page 12: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/12.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 12
triangle fans
• idea similar to triangle strips • different arrangement
![Page 13: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/13.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 13
quad meshes
• similar options as for storing triangles – flat quads – indexed quad meshes – quad strips, no fans
![Page 14: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/14.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 14
adjacency queries
• example queries – given a face, find adjacent faces – given an edge, find faces that share it – given a vertex, find faces that share it
• previous data structures – inefficient adjacency queries, O(n)
![Page 15: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/15.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 15
adjacency lists
• store all vertex, edge, face adjacency – efficient adjacency queries, O(1) – extra storage
}{ kE
}{ iV }{ jF
[based on Finkelstein 2004]
![Page 16: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/16.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 16
partial adjacency lists
• store some vertex, edge, face adjacency – goal: efficient adjacency queries – goal: less storage
}{ kE
}{ iV }{ jF
[based on Finkelstein 2004]
![Page 17: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/17.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 17
winged edge
• adjacency stored in edges – all adjacency in O(1) – little extra storage
}{ kE
}{ iV }{ jF
1 2 1 2
[based on Finkelstein 2004] [Shirley]
![Page 18: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/18.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 18
winged edge
• tetrahedron example
[Shi
rley]
![Page 19: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/19.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 19
defining normals
• face normal – geometrically correct – not for smooth surfaces
• vertex normals – geometrically “inconsistent” – for smooth surface approx.
![Page 20: polygon meshes - pellacini.di.uniroma1.itpellacini.di.uniroma1.it/teaching/graphics11/lectures/07_PolygonMes… · computer graphics • polygon meshes © 2009 fabio pellacini •](https://reader036.vdocument.in/reader036/viewer/2022062507/5fc1582b6403d55bf9157ccd/html5/thumbnails/20.jpg)
computer graphics • polygon meshes © 2009 fabio pellacini • 20
defining normals
• face normal – geometrically correct – not for smooth surfaces
• vertex normals – geometrically “inconsistent” – for smooth surface approx.