3D Geometric Modeling

1 Geometric Modeling

• Surface representations – Industrial design

2/55 Geometric Modeling

• Surface representations – Industrial design – Movies and animation

3/55 Geometric Modeling

• Surface representations – Industrial design – Movies and animation • Surface reconstruction/Visualization

4/55 Polygonal Representations

• Stores the boundary of a solid – : locations – Topology: connectivity information • Vertices • Edges • Faces

5/38 Polygonal Representations

• Constant time adjacency information – For each vertex, • Find edges/faces touching vertex – For each edge, • Find vertices/faces touching edge – For each , • Find vertices/edges touching face

6/38 Polygonal Representations

• Typically assume the surface is manifold

• A surface is manifold if, for every point, locally the surface is equivalent to an open disk

7/38 Polygonal Representations

• Typically assume the surface is manifold

• A surface is manifold if, for every point, locally the surface is equivalent to an open disk

Locally manifold

8/38 Polygonal Representations

• Typically assume the surface is manifold

• A surface is manifold if, for every point, locally the surface is equivalent to an open disk

Non‐manifold edge

9/38 Polygonal Representations

• Typically assume the surface is manifold

• A surface is manifold if, for every point, locally the surface is equivalent to an open disk

Non‐manifold vertex

10/38 Winged Edge Data Structure

N L N R N

Left face E Right face

P P PL R

11/38 Winged Edge Data Structure WingedEdge { WingedEdge nextLeft, nextRight, prevLeft, prevRight; Face leftFace, rightFace; Vertex prevVert, nextVert; }

N L N R Face { WingedEdge edge; N } Left face Right face Vertex { E WingedEdge edge; } P P PL R

12/38 Winged Edge Data Structure

• Given a face, find all vertices touching that face • Given a vertex, find all edge‐adjacent vertices • Given a face, find all

N L N R adjacent faces N

Left face E Right face

P P PL R

13/38 Half Edge Data Structure

NHE

face Flip HE E

PHE V

14/38 Half Edge Data Structure HalfEdge { HalfEdge next, prev, flip; Face face; Vertex origin; Edge edge; }

Face { NHE HalfEdge edge; // part of this face } face Flip Vertex { HE HalfEdge edge; // points away E }

Edge { PHE HalfEdge he; V } 15/38 Half Edge Data Structure

• Very similar to WingedEdge Data Structure, but edges have unique orientation • Slightly more storage • Less conditional operations NHE • Assumes are oriented face Flip HE E

PHE V

16/38 Building a Topological Data Structure

• Must connect adjacent edges/faces/vertices • Edges are critical in most data structures

NHE

face Flip HE E

PHE V

17/38 − + = − = χ GGFEV )(22 • V: number of vertices • E: number of edges • F: number of faces • G: genus of surface (number of holes)

18/38 Euler Characteristic − + = − = χ GGFEV )(22 • V: number of vertices • E: number of edges • F: number of faces • G: genus of surface (number of holes)

+− = − 0*226128

19/38 Euler Characteristic − + = − = χ GGFEV )(22 • V: number of vertices • E: number of edges • F: number of faces • G: genus of surface (number of holes)

+− = − 0*22464

20/38 Euler Characteristic − + = − = χ GGFEV )(22 • V: number of vertices • E: number of edges • F: number of faces • G: genus of surface (number of holes)

+− = − 1*22163216

21/38 Topological Operations: Hole Filling

• Find a half‐edge whose flip is null • Use next and flip points to find next adjacent half‐edge with null flip • Repeat until back at original NHE half‐edge face • Create new half‐edges along HE = nullFlip boundary and face containing E those edges PHE V

22/38 Mesh Simplification

„ Create levels of detail (LOD) of objects:

23/32 Level of Details (LOD)

„ Distant objects use coarser LODs:

24/32 Topological Operations: Edge Collapse

25/38 Topological Operations: Edge Collapse

• Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half‐edges

26/38 Topological Operations: Edge Collapse

• Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half‐edges • Set flip on outer edges to point to opposite edge

27/38 Topological Operations: Edge Collapse

• Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half‐edges • Set flip on outer edges to point to opposite edge • Make sure half ‐edge pointer for edges point to correct half‐edge

28/38 Topological Operations: Edge Collapse

• Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half‐edges • Set flip on outer edges to point to opposite edge • Make sure half ‐edge pointer for edges point to correct half‐edge • Update half‐edge for wing‐vertices

29/38 Topological Operations: Edge Collapse

• Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half‐edges • Set flip on outer edges to point to opposite edge • Make sure half ‐edge pointer for edges point to correct half‐edge • Update half‐edge for wing‐vertices • Delete faces/edges/vertices

30/38 Topological Operation: Edge Collapse

• Edge collapse preserves topology as long as the local Euler characteristic of the surface remains the same − + = χ GFEV )(

31/38 Topological Operation: Edge Collapse

• Edge collapse preserves topology as long as the local Euler characteristic of the surface remains the same − + = χ GFEV )(

ˆˆˆ )2()3()1( +−=−+−−−=+− FEVFEVFEV

ˆ VV −= 1 ˆ EE −= 3 ˆ = FF − 2 32/38 Topological Operation: Edge Collapse

• Edge collapse does NOT always preserve topology

33/38 Detecting Unsafe Edge Collapses

• Let N(v) be the set of vertices edge‐adjacent to v • Safe to collapse if 1 vNvN 2 =∩ 2)()(

v 1 v2

34/38