1 / 22

SOT: Compact Representation for Tetrahedral Meshes

l. r. c. p. n. SOT: Compact Representation for Tetrahedral Meshes. Topraj Gurung & Jarek Rossignac. o. Tet Mesh Representations. Nodes. Geometry: Vertex location & attributes Connectivity (graph): Nodes References (links) Storing all links is prohibitive & unnecessary

rhonda
Télécharger la présentation

SOT: Compact Representation for Tetrahedral Meshes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. l r c p n SOT: Compact Representation for Tetrahedral Meshes Topraj Gurung & Jarek Rossignac o

  2. Tet Mesh Representations Nodes • Geometry: • Vertex location & attributes • Connectivity (graph): • Nodes • References (links) • Storing all links is prohibitive & unnecessary • SOT (introduced here): • Supports all these links • At constant compute cost • Stores only 4 Tr !!! ≈20 Tr Links 4 4 Boundary Star Adjacency Order T F TF TT F around E 26 3 E VT V 2 SOT

  3. Connectivity representation vs compression Fr/Tr: references per Face/Tet. Fb/Tb: bits per Face/Tet. SOT

  4. Outline • Corner table and Vertex & Opposite Table (VOT) extension • Corner Table [Rossignac01]: 6Fr • VOT [Bischoff&Rossignac 05 , Lage et al. 05]: 8 Tr • Wedge operators • Similar to half edges in Compact Half Faces [Lage05] • Mimics corner table operators for triangle meshes • Sorted Vertex & Opposite Table (SVOT): Free star • Support star references without increasing storage • 8 references per tet • Linear construction time • Sorted Opposite Table (SOT): • Same functionality as SVOT, but at half the storage cost: 4 Tr SOT

  5. Corner Table for Triangle Meshes (review) • Compact data structure for triangle meshes • [Rossignac01] • Corner • 3 corners per triangle • Each incident on a vertex • Each associated with its opposite edge • Orientation: • Assume clockwise SOT

  6. Corner Table for Triangle Meshes (review) • 6 references per triangle • 3 for vertex • 3 for opposite a 0 a 0 3 1 1 b 2 c 2 1 2 d 3 0 c b c 4 4 4 5 b 5 5 3 d SOT

  7. Corner Table for Triangle Meshes (review) • What about traversing meshes? • Corner operators • current corner: c • next corner: n(c) • previous corner: p(c) • opposite corner: o(c) • right corner: r(c) • left corner: l(c) • swing corner: s(c) • Derived from corner table • requires constant time s(c) l(c) r(c) c p(c) n(c) o(c) SOT

  8. Corners of tetrahedra • 4 corners per tetrahedron • Each associated with opposite facet • Orientation convention: • first corner sees opposite facet ccw 3 2 1 0 SOT

  9. Vertex Opposite Table • Corner table extended to tet meshes • [Lage05, Bischoff&Rossignac05] • 8 references per tetrahedron • 4 references for vertices • 4 references for opposites • Vertex-to-star reference not available • 1 million tetrahedra = 34MB Vb 0 a 4 1 b 1 1 5 2 c 2 Vc 3 d 3 7 2 Ve 4 0 4 e 0 Va 5 b 5 6 3 6 d 6 7 c 7 Vd SOT

  10. Wedge in Vertex Opposite Table • Traversing to neighboring tets in a consistent manner • E.g. how do you walk around an edge? • Wedge: • Ordered pair of corners within a tetrahedron • A wedge is not an edge • Edge = vertex to vertex • Wedge = corner to corner • 12 wedges per tetrahedron SOT

  11. Wedge operators • Wedge operators: • constant cost implementation • Uses only the VOT information • Given current wedge: • mirror, next, previous wedges are defined in same tetrahedron • mirror: reverse direction of current wedge • next: CCW wedge relative to current wedge • previous: CW wedge relative to current wedge current mirror previous next SOT

  12. Wedge operators l r left right current c • Access adjacent tets • left, right, opposite wedges • Mimic corner operators • n, p, o, l, r, s • as seen on link of v(c) • Wedge operators not stored at all • All easily composed from mirror, next and opposite • l(w) = o(n(w))… p n previous next opposite o SOT

  13. Example: Usage of wedge operators:List all tetrahedra incident on a wedge • 1) cw = current wedge = red • 2) nw = next (cw) • 3) lw = left wedge = opposite(nw) • 4) swing left = next (lw) • 5) swing left. twice • 6) swing left. three times • 7) swing left. four times • 8) swing left. five times • Brings wedge back to initial wedge • Done! • [4]-[8] is a for loop • Record the tets wedge visits in for loop SOT

  14. Vertex-to-star references • Query: Given a vertex ID, determine the tets incident on it. • Useful for determining • incident tets, • incident faces, • incident edges, • adjacent vertices • Vertex Opposite Table provides tetrahedron-to-vertex references, but not the vertex-to-star references • One solution: store an additional lookup table • nV additional references [Lage05] • We do it for free • No additional storage cost SOT

  15. SVOT (Free vertex-to-tet reference) • Sorted Vertex Opposite Table • The order of tets in the VOT is arbitrary • We reorder the VOT so that • the 1st corner of vthtet is incident on vertex v • the corner c(v) of vertex v is 4v • Questions: • Is such an order always possible? • Is there a simple and efficient algorithm? SOT

  16. Map vertices to unique triangles SOT

  17. Sort (Reorder) triangles 0 3 10 12 8 2 vertex i is mapped to ith triangle’s first corner 9 1 1 0:(x0,y0,z0) 7 9 1:(x1,y1,z1) 5 0 2 6 0 2:(x2,y2,z2) 2 4 3 11 3:(x3,y3,z3) 1 … 0 3 … SOT

  18. SOT: Sorted Opposite Table • Sorted Vertex Opposite Table (SVOT) supports: • Vertex-to-tet refs and wedge operations at constant cost • Uses 8 Tr( same as VOT) • We propose an alternative: the SOT • Our Sorted Opposite Table offers a trade-off: • reduce storage by 50% (4 Tr) • but, increase of processing time of some corner and wedge operators • SOT retains the vertex-to-tet and other functionality of SVOT • SOT retain linear construction and linear operator cost • SOT reduces storage by discarding the vertex table completely • Store only the O table (+9 service bit per tet, hidden in O) • How is it possible to operate without the V table? • What are these service bits? SOT

  19. SOT service bits? • Discard the V Table completely • Cache 2 service bits per corner (8 Tb) • To record the twist • how adjacent tets are glued at common face • Could store them as log2(3*3*3*3)=6.3 Tb • Needed to compute the o(w) • Use 1 additional bit per tet • to mark visited tets when walking on the link • To compute v(c) • Visit all incident corners SOT

  20. Computing v(c) in SOT Find a triangle whose first corner is mapped to the the desired vertex SOT

  21. Summary • VOT (Vertex & Opposite Table): 8 Tr • Natural extension of corner table to tet meshes • Wedges: Convenient operators for mesh traversal • Powerful, constant time • SVOT (Sorted Vertex & Opposite Table): 8 Tr • Linear cost reordering • Vertex-to-tet (star) references without additional cost • SOT (Sorted Opposite Table): 4 Tr • Discards Vertex table and hides service bits in Opposite table • Same functionality as SVOT • Possibly valuable when paging is the bottleneck SOT

  22. Thanks! SOT

More Related