Line 121: | Line 121: | ||

---- | ---- | ||

=EXERCISES= | =EXERCISES= | ||

− | Your presence at the seminar is mandatory. Exercise projects are done in | + | Your presence at the seminar is mandatory. Exercise projects are done in Blender with Python language. |

<!-- | <!-- | ||

Line 143: | Line 143: | ||

=== Exercise 03 "Mesh Curvature” === | === Exercise 03 "Mesh Curvature” === | ||

* Discrete Mesh Curvature [http://multires.caltech.edu/pubs/diffGeoOps.pdf] | * Discrete Mesh Curvature [http://multires.caltech.edu/pubs/diffGeoOps.pdf] | ||

− | * Example [[media:bmesh.blend|bmesh.blend]] | + | * Example <!-- [[media:bmesh.blend|bmesh.blend]] --> |

* Compute mesh curvature at the triangle vertex [http://www.ijesit.com/Volume%202/Issue%203/IJESIT201303_48.pdf] | * Compute mesh curvature at the triangle vertex [http://www.ijesit.com/Volume%202/Issue%203/IJESIT201303_48.pdf] | ||

=== Exercise 04 "UV Mapping” === | === Exercise 04 "UV Mapping” === | ||

− | * Half-Edge Creation Example [[media:mestToHalfEdge.blend|mestToHalfEdge.blend]] | + | * Half-Edge Creation Example <!-- [[media:mestToHalfEdge.blend|mestToHalfEdge.blend]] --> |

* UV Mapping and Displacement Mapping in Blender | * UV Mapping and Displacement Mapping in Blender | ||

=== Exercise 05 "Quadrilateral Mesh Edge Contraction” === | === Exercise 05 "Quadrilateral Mesh Edge Contraction” === | ||

* Mesh Simplification [https://iiw.kuleuven.be/onderzoek/eavise/mastertheses/wiebe-vanranst.pdf] | * Mesh Simplification [https://iiw.kuleuven.be/onderzoek/eavise/mastertheses/wiebe-vanranst.pdf] | ||

− | * Implement edge contraction [[media:edge_contraction.blend|edge_contraction.blend]] | + | * Implement edge contraction <!-- [[media:edge_contraction.blend|edge_contraction.blend]] --> |

=== Exercise 06 "Triangle Mesh Edge Contraction” === | === Exercise 06 "Triangle Mesh Edge Contraction” === | ||

* QEM [http://cseweb.ucsd.edu/~ravir/190/2016/garland97.pdf] | * QEM [http://cseweb.ucsd.edu/~ravir/190/2016/garland97.pdf] | ||

* Blender Scripting - Adding A Custom Property [https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Advanced_Tutorials/Python_Scripting/Addon_Custom_Property] | * Blender Scripting - Adding A Custom Property [https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Advanced_Tutorials/Python_Scripting/Addon_Custom_Property] | ||

− | * Implement edge contraction [[media:edge_contraction2.blend|edge_contraction2.blend]] | + | * Implement edge contraction <!-- [[media:edge_contraction2.blend|edge_contraction2.blend]] --> |

=== Exercise 07 "Loop subdivision - Triangle” === | === Exercise 07 "Loop subdivision - Triangle” === | ||

* Loop subdivision [https://graphics.stanford.edu/~mdfisher/subdivision.html] | * Loop subdivision [https://graphics.stanford.edu/~mdfisher/subdivision.html] | ||

− | * Vertex connection into a triangle and filling the Half-Edge structure [[media:loop_subdiv1.blend|loop_subdiv1.blend]] | + | * Vertex connection into a triangle and filling the Half-Edge structure <!-- [[media:loop_subdiv1.blend|loop_subdiv1.blend]] --> |

=== Exercise 08 "Loop subdivision - Triangular Meshes” === | === Exercise 08 "Loop subdivision - Triangular Meshes” === | ||

* Loop subdivision, position of new vertices [https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/thesis-10.pdf][http://www.holmes3d.net/graphics/subdivision/][http://mrl.nyu.edu/~dzorin/cg05/lecture11.pdf] | * Loop subdivision, position of new vertices [https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/thesis-10.pdf][http://www.holmes3d.net/graphics/subdivision/][http://mrl.nyu.edu/~dzorin/cg05/lecture11.pdf] | ||

− | * Triangular mesh subdivision and filling the Half-Edge structure [[media:loop_subdiv2.blend|loop_subdiv2.blend]] | + | * Triangular mesh subdivision and filling the Half-Edge structure <!-- [[media:loop_subdiv2.blend|loop_subdiv2.blend]] --> |

=== Exercise 09 "Butterfly subdivision - Triangular Meshes” === | === Exercise 09 "Butterfly subdivision - Triangular Meshes” === | ||

* Butterfly subdivision [https://mrl.nyu.edu/~dzorin/papers/zorin1996ism.pdf] | * Butterfly subdivision [https://mrl.nyu.edu/~dzorin/papers/zorin1996ism.pdf] | ||

− | * Triangular mesh subdivision and filling the Half-Edge structure [[media:loop_subdiv3.blend|loop_subdiv3.blend]] | + | * Triangular mesh subdivision and filling the Half-Edge structure <!-- [[media:loop_subdiv3.blend|loop_subdiv3.blend]] --> |

=== Exercise 10 "Polygonising a scalar field” === | === Exercise 10 "Polygonising a scalar field” === |

## Revision as of 16:50, 26 February 2019

# Geometrical Modelling in Graphics (Course Materials)

## Contents

- 1 Geometrical Modelling in Graphics (Course Materials)
- 1.1 Grading
- 1.2 What you Need to Pass
- 1.3 Oral Examination
- 1.4 Materials to read
- 1.5 Lesson00 "Introduction to Geometry Modelling"
- 1.6 Lesson01 "Polygonal meshes, Winged Edge, Quad Edge, DCEL"
- 1.7 Lesson02 "Polygonal Mesh Properties"
- 1.8 Lesson03 "Polygonal Mesh Simplification"
- 1.9 Lesson04 "Polygonal Mesh Smoothing"
- 1.10 Lesson05 "Polygonal Mesh Repairing"
- 1.11 Lesson06 "Curves"
- 1.12 Lesson07 "Surfaces"
- 1.13 Lesson08 "Volumes"
- 1.14 Lesson09 "Point Clouds"
- 1.15 Lesson10 "Surface Reconstruction"
- 1.16 Lesson11 "Procedural Modelling"

- 2 EXERCISES
- 2.1 Exercise 01 "Blender Scripting”
- 2.2 Exercise 02 "Half Edge”
- 2.3 Exercise 03 "Mesh Curvature”
- 2.4 Exercise 04 "UV Mapping”
- 2.5 Exercise 05 "Quadrilateral Mesh Edge Contraction”
- 2.6 Exercise 06 "Triangle Mesh Edge Contraction”
- 2.7 Exercise 07 "Loop subdivision - Triangle”
- 2.8 Exercise 08 "Loop subdivision - Triangular Meshes”
- 2.9 Exercise 09 "Butterfly subdivision - Triangular Meshes”
- 2.10 Exercise 10 "Polygonising a scalar field”

Lecture Monday 8:10 M-XII Exercise Tuesday 13:10 M-XII

### Grading

No make-up exams will be given for missed tests. All the assignments should be turn in by the designated due date. To pass this course all the course requirements must be SATISFACTORILY completed > 30% of each problem set. Programming, modelling projects and oral exam.

### What you Need to Pass

- Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.
- Programming, modelling project with production and exercise (mandatory, 50 points). Submission after deadline -50%.
- All programming is checked with deadlines during the exercises.
- Pass oral/written exam: (+50 points) If you feel you are better, convince me !
- Summary
- Attendance = 0 or -100 (Fx)
- Projects = +50..0
- Oral/written exam = +50..0

- Grades

A = 92-100 B = 84-91 C = 76-83 D = 68-75 E = 60-67 Fx = 0-59

### Oral Examination

To the oral examination all the above requirements must be SATISFACTORILY completed. Random lecture topic will be selected and presented by a student after written preparation.

### Materials to read

- Mario Botsch, Leif Kobbelt, Mark Pauly, Pierre Alliez, Bruno Levy, "Polygon Mesh Processing" CRC Press
- Siu-Wing Cheng, Tamal K. Dey, Jonathan Shewchuk, "Delaunay Mesh Generation" CRC Press
- 3D printer modelling and best models to get the inspiration

### Lesson00 "Introduction to Geometry Modelling"

- Lecture schedule
- "Terms and conditions" of this lecture
- Lecture notes: lesson00.pdf

### Lesson01 "Polygonal meshes, Winged Edge, Quad Edge, DCEL"

- 2D manifold
- Polygonal meshes
- Winged Edge
- Quad Edge
- Double Connected Edge List
- Lecture notes: lesson01.pdf

### Lesson02 "Polygonal Mesh Properties"

- Normal, curvature, object interior
- Descriptors
- Bounded volume
- Lecture notes: lesson02.pdf

### Lesson03 "Polygonal Mesh Simplification"

- Mesh simplification algorithm
- Terrain visualisation
- Progressive meshes
- Lecture notes: lesson03.pdf

### Lesson04 "Polygonal Mesh Smoothing"

- Polygon and mesh smoothing with subdivision
- Catmull-Clark subdivision, Modified Butterfly subdivision
- Mesh Laplacian smoothing
- Lecture notes: lesson04.pdf

### Lesson05 "Polygonal Mesh Repairing"

- Polygon and mesh smoothing with subdivision
- Delaunay triangulation
- Triangulation in 3D
- Filling holes in meshes
- Volumetric mesh repair
- Lecture notes: lesson05.pdf

### Lesson06 "Curves"

- Polynomial curves
- Spline curves
- Rational curves
- Implicit curves
- Lecture notes: lesson06.pdf

### Lesson07 "Surfaces"

- Polynomial surfaces
- Spline surfaces
- Rational surfaces
- Implicit surfaces
- Lecture notes: lesson07.pdf

### Lesson08 "Volumes"

- Distance function
- Voxelization: Mesh voxelization, Implicit surface voxelization
- Distance transforms
- Fast marching method
- Visualization
- Lecture notes: lesson08.pdf

### Lesson09 "Point Clouds"

- Point cloud sources
- K-nearest neighbor search on Kd-tree
- Normal estimation
- Registration
- Visualization
- Lecture notes: lesson09.pdf

### Lesson10 "Surface Reconstruction"

- Implicit reconstruction
- Power crust mesh reconstruction
- Parameteric reconstruction
- Lecture notes: lesson10.pdf

### Lesson11 "Procedural Modelling"

- Cities Cities.pdf
- Buildings Buildings.pdf
- Facades Facades.pdf
- Vegetation Vegetation.pdf
- Solid models Models.pdf

# EXERCISES

Your presence at the seminar is mandatory. Exercise projects are done in Blender with Python language.

### Exercise 01 "Blender Scripting”

- Install [1]
- Using scripts reference page [2]
- Example mesh_script.blend
- Create tetrahedron [3]

### Exercise 02 "Half Edge”

- Half-Edge Data Structure [4][5]
- DCEL [6]
- Example half_edge.blend
- Create half-edge data structure for the tetrahedron [7]

### Exercise 03 "Mesh Curvature”

### Exercise 04 "UV Mapping”

- Half-Edge Creation Example
- UV Mapping and Displacement Mapping in Blender

### Exercise 05 "Quadrilateral Mesh Edge Contraction”

- Mesh Simplification [10]
- Implement edge contraction

### Exercise 06 "Triangle Mesh Edge Contraction”

### Exercise 07 "Loop subdivision - Triangle”

- Loop subdivision [13]
- Vertex connection into a triangle and filling the Half-Edge structure

### Exercise 08 "Loop subdivision - Triangular Meshes”

- Loop subdivision, position of new vertices [14][15][16]
- Triangular mesh subdivision and filling the Half-Edge structure

### Exercise 09 "Butterfly subdivision - Triangular Meshes”

- Butterfly subdivision [17]
- Triangular mesh subdivision and filling the Half-Edge structure

### Exercise 10 "Polygonising a scalar field”