(Exercise 05 "Quadrilateral Mesh Edge Contraction”)
 
(75 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Geometry Modelling in Graphics (Course Materials) =
+
= Geometrical Modelling in Graphics (Course Materials) =
 
__TOC__
 
__TOC__
  
Lecture Monday 8:10 M-XII Exercise Tuesday 13:10 M-XII
+
Lecture Monday 9:00 MS Teams Exercise Tuesday 16:30 MS Teams
  
 
=== Grading ===
 
=== 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.
+
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 ==
+
=== What you Need to Pass ===
  
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.
+
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 and more is Fx.
* Programming, modelling project with production and exercise (mandatory, 50 points).
+
* Programming, modelling project with production and exercise (mandatory, 50 points). Submission after deadline -50%.
 
* All programming is checked with deadlines during the exercises.
 
* All programming is checked with deadlines during the exercises.
* Pass oral/written exam: (+20 points) If you feel you are better, convince me !  
+
* Pass oral/written exam: (+50 points) If you feel you are better, convince me !  
 
* Summary
 
* Summary
 
** Attendance = 0 or -100 (Fx)
 
** Attendance = 0 or -100 (Fx)
Line 19: Line 19:
  
 
* Grades
 
* Grades
** A = 92-100
+
    A = 92-100
** B = 84-91
+
    B = 84-91
** C = 76-83
+
    C = 76-83
** D = 68-75
+
    D = 68-75
** E = 60-67
+
    E = 60-67
** Fx = 0-59
+
    Fx = 0-59
  
*[https://docs.google.com/spreadsheets/d/1G4rg7JguCGLlDXoGxVr81FXVa41FwHWFhNEm-3ShBV0/edit?usp=sharing '''VIEW RESULTS''']
+
*[https://docs.google.com/spreadsheets/d/1sHATICOAh27Y2ouPVrpyckm-ySdx6u4IacNFqUtQZsY/edit?usp=sharing '''VIEW RESULTS''']
  
 
=== Oral Examination ===
 
=== Oral Examination ===
To the oral examination all the above requirements must be SATISFACTORILY completed.  
+
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 ===  
 
=== Materials to read ===  
*Michael Henle, "A Combinatorial Introduction to Topology"
+
*Mario Botsch, Leif Kobbelt, Mark Pauly, Pierre Alliez, Bruno Levy, "Polygon Mesh Processing" [https://www.crcpress.com/Polygon-Mesh-Processing/Botsch-Kobbelt-Pauly-Alliez-Levy/p/book/9781568814261 CRC Press]
*J. O'Rourke, "Computational Geometry in C"
+
*Siu-Wing Cheng, Tamal K. Dey, Jonathan Shewchuk, "Delaunay Mesh Generation" [https://www.crcpress.com/Delaunay-Mesh-Generation/Cheng-Dey-Shewchuk/p/book/9781584887300 CRC Press]
 +
* 3D printer modelling and [https://all3dp.com/printables/ best models] to get the inspiration
 +
----
 +
=== Lesson00 "Introduction to Geometry Modelling" ===
 +
<!-- [[File:ca10_lesson01.png]]
 +
-->
 +
* Lecture schedule
 +
* "Terms and conditions" of this lecture
 +
* Lecture notes: [[media:gm17_lesson00.pdf|lesson00.pdf]]
 +
 
 +
=== Lesson01 "Polygonal meshes, Winged Edge, Quad Edge, DCEL" ===
 +
* 2D manifold
 +
* Polygonal meshes
 +
* Winged Edge
 +
* Quad Edge
 +
* Double Connected Edge List
 +
* Lecture notes: [[media:gm17_lesson01.pdf|lesson01.pdf]]
 +
 
 +
=== Lesson02 "Polygonal Mesh Properties" ===
 +
* Normal, curvature, object interior
 +
* Descriptors
 +
* Bounded volume
 +
* Lecture notes: [[media:gm17_lesson02.pdf|lesson02.pdf]]
 +
 
 +
=== Lesson03 "Polygonal Mesh Simplification" ===
 +
* Mesh simplification algorithm
 +
* Terrain visualisation
 +
* Progressive meshes
 +
* Lecture notes: [[media:gm17_lesson03.pdf|lesson03.pdf]]
 +
 
 +
=== Lesson04 "Polygonal Mesh Smoothing" ===
 +
* Polygon and mesh smoothing with subdivision
 +
* Catmull-Clark subdivision, Modified Butterfly subdivision
 +
* Mesh Laplacian smoothing
 +
* Lecture notes: [[media:gm17_lesson04.pdf|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: [[media:gm17_lesson05.pdf|lesson05.pdf]]
 +
 
 +
=== Lesson06 "Curves" ===
 +
* Polynomial curves
 +
* Spline curves
 +
* Rational curves
 +
* Implicit curves
 +
* Lecture notes: [[media:gm17_lesson06.pdf|lesson06.pdf]]
 +
 
 +
=== Lesson07 "Surfaces" ===
 +
* Polynomial surfaces
 +
* Spline surfaces
 +
* Rational surfaces
 +
* Implicit surfaces
 +
* Lecture notes: [[media:gm17_lesson07.pdf|lesson07.pdf]]
 +
 
 +
=== Lesson08 "Volumes" ===
 +
* Distance function
 +
* Voxelization: Mesh voxelization, Implicit surface voxelization
 +
* Distance transforms
 +
* Fast marching method
 +
* Visualization
 +
* Lecture notes: [[media:gm17_lesson08.pdf|lesson08.pdf]]
  
=== Useful links ===  
+
=== Lesson09 "Point Clouds" ===
*http://www.sccg.sk/~durikovic/graphicsutil/index.html
+
* Point cloud sources
 +
* K-nearest neighbor search on Kd-tree
 +
* Normal estimation
 +
* Registration
 +
* Visualization
 +
* Lecture notes: [[media:gm17_lesson09.pdf|lesson09.pdf]]
  
 +
=== Lesson10 "Surface Reconstruction" ===
 +
* Implicit reconstruction
 +
* Power crust mesh reconstruction
 +
* Parameteric reconstruction
 +
* Lecture notes: [[media:gm17_lesson10.pdf|lesson10.pdf]]
  
 +
=== Lesson11 "Procedural Modelling" ===
 +
* Cities  [[media:gm17_lesson11Cities.pdf|Cities.pdf]]
 +
* Buildings  [[media:gm17_lesson11Buildings.pdf|Buildings.pdf]]
 +
* Facades  [https://www.cg.tuwien.ac.at/research/publications/2015/Ilcik_2015_LAY/Ilcik_2015_LAY-preprint.pdf Facades.pdf]
 +
* Vegetation [[media:gm17_lesson11Vegetation.pdf|Vegetation.pdf]]
 +
* Solid models  [[media:gm17_lesson11Models.pdf|Models.pdf]]
 
----
 
----
 +
=EXERCISES=
 +
Your presence at the seminar is mandatory. Exercise projects are done in Blender with Python language.
  
 +
<!--
 +
=== Exercise 01 "Unity3D, C#, DCEL structure, DCEL object visualization in Unity3D” ===
 +
* Install [https://unity3d.com/ Unity3D]
 +
* Install [http://www.assimp.org/ Assimp] library and the [https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/assimp-net/AssimpNet-3.0.zip .NET] version we use
 +
-->
  
=== Lesson01 "Introduction to Geometry Modelling" ===
+
=== Exercise 01 "Blender Scripting” ===
Lecture notes: [[http://www.sccg.sk/~durikovic/classes/MRT/MRT01_HVS%20Handouts.pdf pdf]],
+
* Install [https://www.blender.org/download/]
%[[File:ca10_lesson01.png]]
+
* Using scripts reference page [https://docs.blender.org/api/blender_python_api_current/]
* Lecture schedule
+
* Example [[media:mesh_script.blend|mesh_script.blend]]
* "Terms and conditions" of this lecture
+
** to run in new Blender version, change line 31 and 32 to bpy.context.scene.collection.objects.link(obj)
* Lecture notes: [[media:gm17_lesson01.pdf|lesson01.pdf]]
+
* Create tetrahedron [https://en.wikipedia.org/wiki/Tetrahedron]
  
=== Lesson02 "2D Manifold, Polygonal meshes, Winged Edge, Quad Edge, DCEL" ===
+
=== Exercise 02 "Half Edge” ===
Lecture notes: [[http://www.sccg.sk/~durikovic/classes/MRT/MRT01_HVS%20Handouts.pdf pdf]],
+
* Half-Edge Data Structure [http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml][http://kaba.hilvi.org/homepage/blog/halfedge/halfedge.htm]
%[[File:ca10_lesson01.png]]
+
* DCEL [http://totologic.blogspot.sk/2013/11/core-quad-edge-implementation-explained.html]
* Lecture schedule
+
* Example [[media:half_edge.blend|half_edge.blend]]
* "Terms and conditions" of this lecture
+
* Create half-edge data structure for the tetrahedron [http://mathworld.wolfram.com/RegularTetrahedron.html]
* Lecture notes: [[media:gm17_lesson02.pdf|lesson02.pdf]]
+
  
Čast 0: Úvod, sylabus, podmienky predmetu - pdf-en
+
=== Exercise 03 "Mesh Curvature” ===
Čast 1: Variety, polygonálne siete, Winged Edge, Quad Edge, DCEL - pdf-en
+
* Discrete Mesh Curvature [http://www.cs.uky.edu/~cheng/PUBL/Paper_Discrete.pdf] [https://pdfs.semanticscholar.org/7297/d9821f8db05b806ad332285c506dbea076b2.pdf]
 +
<!--* Example  [[media:bmesh.blend|bmesh.blend]]  -->
 +
* Exercise  [[media:cviko3_curvatur.blend|cviko3_curvatur.blend]] [[media:Cviko3_curvatur.ver2.8.blend|Cviko3_curvatur.ver2.8.blend]]
 +
* Compute mesh curvature at the triangle vertex [http://www.ijesit.com/Volume%202/Issue%203/IJESIT201303_48.pdf]
  
 +
=== Exercise 04 "UV Mapping” ===
 +
* Half-Edge Creation Example  [[media:mestToHalfEdge.blend|mestToHalfEdge.blend]]  [[media:MestToHalfEdge_v2.0.blend|MestToHalfEdge_v2.8.blend]]
 +
* UV Mapping [https://www.youtube.com/watch?v=Y7M-B6xnaEM]
 +
* Displacement Mapping in Blender
  
 +
=== Exercise 05 "Quadrilateral Mesh Edge Contraction” ===
 +
* Video: https://www.youtube.com/watch?v=vBJcdClynFE&t=636s
 +
* Mesh Simplification [https://iiw.kuleuven.be/onderzoek/eavise/mastertheses/wiebe-vanranst.pdf]
 +
* Implement edge contraction [[media:edge_contraction.blend|edge_contraction.blend]]  [[media:edge_contraction_v2.8.blend|edge_contraction_v2.8.blend]] <!--  -->
  
 +
=== Exercise 06 "Triangle Mesh Edge Contraction” ===
 +
* 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]
 +
* Implement edge contraction  [[media:edge_contraction2.blend|edge_contraction2.blend]]  [[media:Edge_contraction_v2_v2.8.blend|Edge_contraction_v2_v2.8.blend]]<!-- -->
 +
Homework (13.4.)
 +
* implement the edge contraction algorithm
 +
* works on the quads and triangles simultaneously
 +
* is able to extracts n shortest edges
  
Čast 0: Úvod, sylabus, podmienky predmetu - pdf-en
+
=== Exercise 07 "Loop subdivision - Triangle” ===
Čast 1: Variety, polygonálne siete, Winged Edge, Quad Edge, DCEL - pdf-en
+
* Subdivision [https://www.youtube.com/watch?v=ckOTl2GcS-E][https://graphics.stanford.edu/~mdfisher/subdivision.html]
Čast 2: Vlastnosti polygonálnych sietí, normály, krivosť, vnútro objektu, deskriptory, ohraničujúci objem - pdf-en
+
* Vertex connection into a triangle and filling the Half-Edge structure  [[media:loop_subdiv1.blend|loop_subdiv1.blend]]
Čast 3: Zjednodušovanie polygonálnych sietí, prehľad algoritmov, vizualizácia terénu, progresívne meše - pdf-en
+
[[media:loop_subdiv_v2.8.blend|loop_subdiv_v2.8.blend]]<!-- -->
Čast 4: Vyhladzovanie polygónov a polygonálnych sietí, prerozdeľovacie algoritmy - pdf-en
+
Čast 5: Triangulácia, vypĺňanie dier, oprava polygonálnych sietí - pdf-en
+
Čast 6: Parametrické (polynomické, splajnové, racionálne) a implicitné krivky - pdf-en
+
Čast 7: Parametrické (polynomické, splajnové, racionálne) a implicitné plochy - pdf-en
+
Čast 8: Objemová reprezentácia, vzdialenostné polia, konverzia a vizualácia - pdf-en
+
Čast 9: Mračná bodov, generovanie, spracovanie, vizualizácia - pdf-en
+
Čast 10: Rekonštrukcia, prispôsobovanie kriviek a plôch - pdf-en
+
Čast 11: Procedurálne modelovanie - články: mestá, budovy, fasády, terén, vegetácia, objekty
+
  
 +
=== 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]
 +
* Triangular mesh subdivision and filling the Half-Edge structure  [[media:loop_subdiv2.blend|loop_subdiv2.blend]]  <!---->
 +
[[media:loop_subdiv2_ver2.8.blend|loop_subdiv2_ver2.8.blend]]
  
 +
=== Exercise 09 "Butterfly subdivision -  Triangular Meshes” ===
 +
* 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]]  <!-- -->
 +
[[media:loop_subdiv3_v2.8.blend|loop_subdiv3_v2.8.blend]]
  
=EXCERCISES=
+
Homework (4.5.)
*Your presence at the seminar is mandatory.
+
* implement modifed Butterfly subdivision scheme
*Seminar we will focus on projects the selected problems from lessons. We will use the numerical methods to solve specific problems.
+
  
=== Excercise01 "Key Framing” ===
+
=== Exercise 10 "Polygonising a scalar field” ===
* '''[https://www.youtube.com/watch?v=CFFhgutjZQk Blender demo]'''
+
* Marching Cubes [http://paulbourke.net/geometry/polygonise/] [https://github.com/mutantbob/blender-marching-cubes]
* Blender https://www.blender.org/
+
*Implicit reconstruction [[media:marching-cube_v2.8.blend|marching-cube_v2.8.blend]]
 +
Homework (4.5.)
 +
* create iso surface of a sphere, torus and cylinder
 +
* determine a boolean union and intersection operator on the 3D shapes
 +
* create an unique shape using all three iso surfaces and both operators
  
**resources:
+
<!--
* Blender tutorial for skeleton modelling
+
OUTDATED:
** rigging https://www.youtube.com/watch?v=mJwWTKt12ak
+
**nmotion capture database https://sites.google.com/a/cgspeed.com/cgspeed/motion-capture/daz-friendly-release
+
  
Projekty na cvičeniach sa budú vytvárať v prostredí Unity3D a v programovacom jayzku C#.
+
=== Exercise 02"Assimp library in Unity3D” ===
Pre načítanie objektov zo súboru použijeme pomocnú knižnicu Assimp, konkrétne jej .NET verziu.
+
* Operators [https://docs.blender.org/api/blender_python_api_2_62_release/bpy.types.Operator.html]
 +
* Example [[media:script2.blend|script2.blend]]
 +
* Half-Edge Data Structure [http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml]
  
Cvičenie 1: Prostredie Unity3D, C#, štruktúra DCEL, vizualizácia DCEL objektu v Unity3D.
+
=== Exercise 03 "Triangle selection” ===
Cvičenie 2: Knižnica Assimp v Unity3D, import objektu zo súboru a naplnenie DCEL štruktúry.
+
* Select a triangle with a mouse click, find and visualise the neighbouring triangles. Generate the DCEL structure for a sphere.
Cvičenie 3: Výber trojuholníka myšou, nájdenie a zobrazenie susedných trojuholníkov. Generovanie DCEL štruktúry pre sféru.
+
Cvičenie 4: Kompilácia projektu v Unity, zjednodušovanie objektu podľa najkratšej hrany.
+
Cvičenie 5: Zjednodušovanie objektu podľa najkratšej hrany. Kolaps hrany do vrchola a výpočet novej pozície vrchola.
+
Cvičenie 6: Zjednodušovanie objektu podľa najkratšej hrany. Prebudovanie DCEL štruktúry v okolí odobratej hrany.
+
Cvičenie 7: Loopov prerozdeľovací algoritmus. Výpočet pozícií nových vrcholov.
+
Cvičenie 8: Loopov prerozdeľovací algoritmus. Spájanie vrcholov do trojuholníkov a naplnenie DCEL štruktúry
+
Cvičenie 9: Objemová reprezentácia v pravidelnej mriežke. Naplnenie sférou a kockou.
+
Cvičenie 10: Marching cubes. Výber aktuálnej konfigurácie pre voxel. Lineárna interpolácia na hranách voxlov. Zdroj.
+
Cvičenie 11: Marching cubes. Generovanie trojuholníkov pre každý voxel. Vytvorenie DCEL štruktúry pre vygenerované trojuholníky. Zdroj.
+
Cvičenie 12: Marching cubes. Trilineárna interpolácia, prienik dvoch objektov.
+
  
 +
=== Exercise 04 "Compiler in Unity” ===
 +
* Unity compiler, object simplification based on shortest edge.
  
 +
=== Exercise 05 "Object simplification” ===
 +
* Object simplification based on shortest edge. Edge collapsing to a vertex and new vertex position.
  
Prvá domáca úloha: Half-edge štruktúra, vytvorenie štruktúry z naimportovaného súboru (klávesa D pre duck.dae), vytvorenie štruktúry pre kocku a sféru (na stlačenie kláves C a S), zisťovanie susedných prvkov, vizualizácia. Termín odovzdania je 15.3.2016. Maximálny bodový zisk za úlohu je 15 bodov.
+
=== Exercise 06 "Object simplification” ===
Druhá domáca úloha: Prerozdeľovací Loopov algoritmus a zjednodšovací edge-collapse algoritmus podľa najkratšej hrany na half-edge štruktúre. Na tlačítko L sa vykoná jeden krok Loopovho algoritmu na aktuálnom modely (aj s pravidlami pre hranicu), na tlačítko E sa vykoná kolaps aktuálne najkratšej hrany, na tlačítko R sa odstráni naraz 50% najkratších hrán. Projekt musí obsahovať ďalší model s hranicou na otestovanie algoritmov. Termín odovzdania je 19.4.2016. Maximálny bodový zisk za úlohu je 15 bodov.
+
* Object simplification based on shortest edge. DCEL structure update in the neighbourhood of deleted edge.
Tretia domáca úloha: Štruktúra pre vzdialenostné pole na pravidelnej mriežke. Prevod základných objektov a objektov z implicitnej reprezentácie do volumetrickej (kocka pri stlačení F1, sféra pri stlačení F2 a srdce pri stlačení F3). Prienik dvoch objektov (sféry a srdca) vo volumetrickej reprezentácii po stlačení F4. Marching cubes (vytvorenie DCEL štruktúry z pravidelnej volumetrickej mriežky). Termín odovzdania je 24.5.2016. Maximálny bodový zisk za úlohu je 20 bodov.
+
 
Za neskoré odvzadnie programovacej úlohy sa strhne za danú úlohu 50% bodov.
+
=== Exercise 07 "Loop subdivision” ===
Ústna skúška prebehne počas skúškového obdobia. V rámci skúšky sa náhodne vyberie téma, ktorú po príprave študent odprezentuje. Za ústnu odpoveď môže študent získať maximálne 50b.
+
* Loop subdivision, position of new vertices.
Výsledná známka sa určí z dosiahnutých bodov za cvičenia a za ústnu skúšku podľa stupnice
+
 
    A:91-100 bodov
+
=== Exercise 08 "Loop subdivision” ===
    B:81-90 bodov
+
* Vertex connection into a triangle and filling the DCEL structure.
    C:71-80 bodov
+
 
    D:61-70 bodov
+
=== Exercise 09 "Volume representation with voxels” ===
    E:51-60 bodov
+
* Regular grid representation of a sphere and a cube and filling the structure.
    Fx:0-50 bodov
+
 
 +
=== Exercise 10 "Marching cubes algorithm” ===
 +
* Selection of voxel configuration at voxel position. Linear interpolation along the voxel edges.
 +
 
 +
=== Exercise 11 "Marching cubes algorithm” ===
 +
* Selection of voxel configuration at voxel position. Linear interpolation along the voxel edges. [http://paulbourke.net/geometry/polygonise/ Tutorial is here]
 +
 
 +
=== Exercise 12 "Marching cubes algorithm” ===
 +
* Triangle generation for each voxel. DCEL structure generation for newly generated triangles. [http://paulbourke.net/geometry/polygonise/ Tutorial is here]
 +
 
 +
=== Exercise 13 "Marching cubes algorithm” ===
 +
* Trilinear interpolation, object intersection.
 +
----
 +
=HOMEWORKS=
 +
Prvá domáca úloha: Half-edge štruktúra, vytvorenie štruktúry z naimportovaného súboru (klávesa D pre duck.dae), vytvorenie štruktúry pre kocku a sféru (na stlačenie kláves C a S), zisťovanie susedných prvkov, vizualizácia.  
 +
*Termín odovzdania je 15.3.2017. Maximálny bodový zisk za úlohu je 15 bodov.
 +
----
 +
Druhá domáca úloha: Prerozdeľovací Loopov algoritmus a zjednodšovací edge-collapse algoritmus podľa najkratšej hrany na half-edge štruktúre. Na tlačítko L sa vykoná jeden krok Loopovho algoritmu na aktuálnom modely (aj s pravidlami pre hranicu), na tlačítko E sa vykoná kolaps aktuálne najkratšej hrany, na tlačítko R sa odstráni naraz 50% najkratších hrán. Projekt musí obsahovať ďalší model s hranicou na otestovanie algoritmov.  
 +
*Termín odovzdania je 19.4.2017. Maximálny bodový zisk za úlohu je 15 bodov.
 +
----
 +
Tretia domáca úloha: Štruktúra pre vzdialenostné pole na pravidelnej mriežke. Prevod základných objektov a objektov z implicitnej reprezentácie do volumetrickej (kocka pri stlačení F1, sféra pri stlačení F2 a srdce pri stlačení F3). Prienik dvoch objektov (sféry a srdca) vo volumetrickej reprezentácii po stlačení F4. Marching cubes (vytvorenie DCEL štruktúry z pravidelnej volumetrickej mriežky).  
 +
*Termín odovzdania je 24.5.2017. Maximálny bodový zisk za úlohu je 20 bodov.
 +
----
 +
Projekt: 3D tlač. Úprava alebo návrh modelu pre 3D tlačiareň.  
 +
*Tlač možná na zariadeniach vo FabLab. https://www.fablab.sk/sk/typ-zariadenia/3d-tlaciarne/
 +
*Pokiaľ by mal niekto záujem o technológie výroby vo FabLab, odporúčam do pozornosti predmet 1-AIN-316: Digitálne technológie výroby http://dai.fmph.uniba.sk/courses/dtv/index.php/DTV
 +
-->

Latest revision as of 11:38, 17 August 2021

Geometrical Modelling in Graphics (Course Materials)

Lecture Monday 9:00 MS Teams Exercise Tuesday 16:30 MS Teams

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 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"


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
    • to run in new Blender version, change line 31 and 32 to bpy.context.scene.collection.objects.link(obj)
  • Create tetrahedron [3]

Exercise 02 "Half Edge”

Exercise 03 "Mesh Curvature”

Exercise 04 "UV Mapping”

Exercise 05 "Quadrilateral Mesh Edge Contraction”

Exercise 06 "Triangle Mesh Edge Contraction”

Homework (13.4.)

  • implement the edge contraction algorithm
  • works on the quads and triangles simultaneously
  • is able to extracts n shortest edges

Exercise 07 "Loop subdivision - Triangle”

loop_subdiv_v2.8.blend

Exercise 08 "Loop subdivision - Triangular Meshes”

loop_subdiv2_ver2.8.blend

Exercise 09 "Butterfly subdivision - Triangular Meshes”

  • Butterfly subdivision [20]
  • Triangular mesh subdivision and filling the Half-Edge structure loop_subdiv3.blend

loop_subdiv3_v2.8.blend

Homework (4.5.)

  • implement modifed Butterfly subdivision scheme

Exercise 10 "Polygonising a scalar field”

Homework (4.5.)

  • create iso surface of a sphere, torus and cylinder
  • determine a boolean union and intersection operator on the 3D shapes
  • create an unique shape using all three iso surfaces and both operators