1. The document discusses various topics related to polygon mesh models, including mesh representation, topology, geometry, smoothing, and normal vector computation.
2. Key definitions include vertices, edges, faces, manifold vs. non-manifold meshes, homeomorphism, and Euler characteristic. Common data structures for mesh topology are also described.
3. Methods for computing mesh normals, estimating curvature on meshes, and repairing/reconstructing geometry are outlined. Questions are posed about mapping spherical meshes and implementing Coons' patch.
1. 1Challenge the future
Boundary Representations 2:
Polygon Mesh Models
Ir. Pirouz Nourian
PhD candidate & Instructor, chair of Design Informatics, since 2010
MSc in Architecture 2009
BSc in Control Engineering 2005
Geo1004, Geomatics Master, Directed by Dr. ir. Sisi Zlatannova
2. 2Challenge the future
• Example:
• Important note:
the geometry of faces is not stored; only rendered when needed!
What you see on the screen is not necessarily what you store!
Mesh Representation
A light-weight model composed of points and a set of topological
relations among them.
Points >Vertices Lines > Edges Polygons > Faces Mesh
T1: {0,4,3}
T2:{0,1,4}
Q1:{1,2,5,4}
3. 3Challenge the future
• The geometry of a mesh can be represented by its points (known as geometrical vertices
in Rhino), i.e. a list of 3D points in ℝ3
• The topology of a mesh can be represented based on its [topological] vertices, referring
to a ‘set’ of 3D points in ℝ3
, there are multiple ways to describe how these vertices are
spatially related (connected or adjacent) to one another and also to edges and faces of the
mesh
• Same topology and different geometries:
Mesh
Mesh Geometry versus Mesh Topology
T1: {0,4,3}
T2:{0,1,4}
Q1:{1,2,5,4}
T1
T2
Q1
T1
T2
Q1
0
3
1
4
5
2 0
3
1
4 5
2
4. 4Challenge the future
• formally an ordered set of Vertices, Edges and Faces or 𝑀 = (𝑉, 𝐸, 𝐹)
• The ordered set describes a set of vertices and a set of faces describing how the vertices construct convex polygons by the
set of edges connecting them when embedded in ℝ3
. (In a set there is no duplicate element. So, the vertices, edges and
faces in the above definition are unique in their sets and have no duplicates.)
• Edges and faces should not intersect or self-intersect.
• Edges correspond to straight lines, faces are generators of convex and planar polygons. A mesh represents a polyhedron if
it has planar faces without self-intersection.
• Mesh has a topological structure, in which edges are tuples of vertex indices and faces are composed of (CW/CCW
ordered) tuples of integers referring to indices of the vertices or edges
• Ensuring flatness of faces is most convenient with triangular faces. This is one of many reasons that triangular meshes are
most common and used for rendering engines.
• Faces or edges should not be degenerate; e.g. an edge that effectively corresponds to a line of length zero, or a face
giving rise to a polygon that has zero surface area. Faces (polygons) should not be self intersecting; edges should not self-
intersect either.
Proper Mesh
A mesh that does not need to be corrected!
5. 5Challenge the future
Mesh Basics
Some preliminary definitions: fan, star, strip
A triangle strip=:ABCDEF
ABC, CBD, CDE, and EDF
A
B
C
D
E
F
A Closed Triangle Fan or a ‘star’=:ABCDEF
A
B
C
D
E
F
ABC, ACD, ADE, and AEF
A Triangle Fan=: ABCDE
AB
C
D
E
ABC, ACD, and ADE
6. 6Challenge the future
Mesh Basics
Some preliminary definitions: free* vertices, free* edges
If an edge has less than two faces adjacent to it then it is considered free ; if a vertex is part
of such an edge it is considered as free too.
* In Rhinocommon free vertices/edges are referred to as naked.
7. 7Challenge the future
Images courtesy of Dr. Ching-Kuang Shene from Michigan Technological University
• if a mesh is supposed to be a 2D manifold then it should meet these criteria:
1. each edge is incident to only one or two faces; and
2. the faces incident to a vertex form a closed or an open fan.
Non manifold mesh examples: (note why!)
Proper Mesh
A mesh that does not need to be corrected!?
• if a mesh is supposed to be orientable then, it should be possible to find
‘compatible’ orientations for any two adjacent faces; in which, for each pair of
adjacent faces, the common edge of the two faces has opposite orders.
• Example: Möbius band is a 2D manifold mesh that is not orientable.
8. 8Challenge the future
Mesh Basics
Some preliminary definitions: boundary denoted as 𝜹
• The boundary is the set of edges incident to only one face of a manifold.
Therefore: we can conceptualize the boundary as the union of all faces of a
manifold. We can conclude that:
• If every vertex has a closed fan (or there is no edge of valence less than 2),
the given manifold has no boundary. Example: a box!
non-manifold boundary manifold boundaryno boundary
9. 9Challenge the future
Image Source: http://prateekvjoshi.com/2014/11/16/homomorphism-vs
homeomorphism/
Mesh Topology: Homeomorphism
clay models that are all topologically equal!?
Images courtesy of Dr. Ching-Kuang Shene from Michigan Technological University
Two 2-manifold meshes A and B are
homeomorphic if their surfaces can be
transformed to one another by topological
transformations (bending, twisting, stretching,
scaling, etc.) without cutting and gluing.
10. 10Challenge the future
Mesh Topology: Homeomorphism
Euler-Poincare Characteristic: key to homeomorphism
Images courtesy of Dr. Ching-Kuang Shene from Michigan Technological University
𝜒 𝑀 = 𝑉 − 𝐸 + 𝐹 = 2 1 − 𝑔 − 𝛿
• 𝛿 is the number of boundaries
• 𝑔 is the number of “genera” (pl. of genus) or holes
• Irrespective of tessellation!
𝜒 𝑀 = 𝑉 − 𝐸 + 𝐹 = 2 1 − 2 − 0 = −2
11. 11Challenge the future
Mesh Topology: Homeomorphism
Euler-Poincare Characteristic: key to homeomorphism
• N-Manifold/Non-Manifold: Each point of an n-dimensional manifold has a
neighborhood that is homeomorphic to the Euclidean space of n-dimension
• Riddle: The above definition implies that for mapping some local features
2D maps are fine. What about the whole globe? That is not
homoeomorphic to a rectangular surface! How do we do it then?
12. 12Challenge the future
Quiz:
Check Euler-Poincare Characteristic on two spherical meshes
• Question: we know that the Euler-Poincare Characteristic is independent of
tessellation; check this fact on the two spheres below; explain the discrepancy.
Hints: http://4.rhino3d.com/5/rhinocommon/ look at mesh [class] members
𝜒 𝑀 = 2𝜒 𝑀 = 66!?
14. 14Challenge the future
Mesh Geometry
• Boolean operation on meshes:
1. 𝐴 ∪ 𝐵: Boolean Union
2. 𝐴 − 𝐵: Boolean Difference
3. 𝐴 ∩ 𝐵: Boolean Intersection
• why do they fail sometimes?
15. 15Challenge the future
Mesh Topological Structure
• Mesh Topological Data Models:
Face-Vertex: e.g. 𝐹0 = {𝑉0, 𝑉5, 𝑉4} & 𝑉0 ∈ 𝐹0, 𝐹1, 𝐹12, 𝐹15, 𝐹7
Images courtesy of David Dorfman, from Wikipedia
Face-Vertex (as implemented in Rhinoceros)
16. 16Challenge the future
Vertex-Vertex: e.g. 𝑉0~{𝑉1, 𝑉4, 𝑉3}
Face-Vertex: e.g. 𝐹0 = 𝑉0, 𝑉5, 𝑉4 , 𝑉0 ∈ 𝐹0, 𝐹1, 𝐹12, 𝐹15, 𝐹7
Winged-Edge: e.g. 𝐹0 = 𝐸4, 𝐸8, 𝐸9 , 𝐸0 = 𝑉0, 𝑉1 , 𝐸0~ 𝐹1, 𝐹12 , 𝐸0~ 𝐸9, 𝐸23, 𝐸10, 𝐸20
Half-Edge: each half edge has a twin edge in opposite direction, a previous and a next
Mesh Topological Structures
Image courtesy of David Dorfman, from Wikipedia
What is explicitly stored as topology of a mesh: E.g.
Face-Vertex (as implemented in Rhinoceros)
http://doc.cgal.org/latest/HalfedgeDS/index.html
17. 17Challenge the future
Mesh Topological Structure
• Mesh Topological Data Models:
Face-Vertex Example:
http://4.rhino3d.com/5/rhinocommon/html/AllMembers_T_Rhino_Geometry_Collections_MeshTopologyVertexList.htm
Face-Vertex (as implemented in Rhinoceros)
Name Description
ConnectedFaces Gets all faces that are connected to a given vertex.
ConnectedTopologyVertices(Int32) Gets all topological vertices that are connected to a given vertex.
ConnectedTopologyVertices(Int32, Boolean) Gets all topological vertices that are connected to a given vertex.
The MeshTopologyVertexList type exposes the following members.
Half-Edge: Half-Edge Mesh Data Structure, example implementation by Daniel Piker:
http://www.grasshopper3d.com/group/plankton
19. 19Challenge the future
Mesh Smoothing
•
For k As Integer=0 To L - 1
Dim SmoothV As New List(Of Point3d)
For i As Integer=0 To M.Vertices.Count - 1
Dim Ngh = Neighbors(M, i)
Dim NVertex As New Point3d(0, 0, 0)
For Each neighbor As point3d In Ngh
NVertex = NVertex + neighbor
Next
NVertex = (1 / Ngh.Count) * NVertex
SmoothV.Add(NVertex)
Next
M.Vertices.Clear
M.Vertices.AddVertices(SmoothV)
A = M
Next
20. 20Challenge the future
Normal Vectors of a Mesh
• Topological Vertices versus Geometrical Points
• Joining mesh objects: What is a mesh box?
• Welding Meshes: how does it work?
• Face Normal versus Vertex Normal
Where do they come from and what do they represent?
21. 21Challenge the future
How to Compute Mesh Normals?
•
00,
00 ),(
vvuuv
p
u
p
vun
1
( ) ( )
0
( )( )
N
x i next i i next i
i
N y y z z
1
( ) ( )
0
( )( )
N
z i next i i next i
i
N x x y y
1
( ) ( )
0
( )( )
N
y i next i i next i
i
N z z x x
Martin Newell at Utah (remember the teapot?)
Why?
22. 22Challenge the future
(2D Curvature Analysis: Mesh)
• Discretization
Mesh
• Measurement
At vertices
• Attribution
To vertices
Curvature Estimation on Meshes?
23. 23Challenge the future
Curvature Estimation on Meshes
• What was the definition of curvature?
• Change of tangents or change of normals?
• How to measure change of normals?
• ProVec = vec - (vec * M.Normals(i)) * M.Normals(i)
• Projected_Vector=Vector-(Vector.Normal).Normal Why?
• Maximum & Minimum change
• Estimation of Gaussian & Mean curvature on mesh vertices