(60 intermediate revisions by 2 users not shown)
Riadok 2: Riadok 2:
 
__TOC__
 
__TOC__
  
Lecture Monday 8:10 M-XII Exercise Tuesday 13:10 M-XII
+
Lecture Monday 9:50 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. Programming, modelling projects and oral exam.  
+
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). Submission after deadline -50%.
 
* 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)
Riadok 26: Riadok 26:
 
     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/1rz-YQeGREeMOKc9NnNvVj5xeaUQtxlbG2yrtbmxEnyo/edit?usp=sharing '''VIEW RESULTS''']
 +
*In case of online lecture, homework and homework results connect to MS Teams  [https://teams.microsoft.com/l/team/19%3a6fc00cf167da4ad2a192108c532b5a5f%40thread.tacv2/conversations?groupId=e735ba77-1630-4194-9f5e-9fe6ff512bf1&tenantId=ce31478d-6e7a-4ce7-8670-a5b9d51884f9 '''Team'''] Code: rx0qlm4
  
 
=== Oral Examination ===
 
=== Oral Examination ===
Riadok 116: Riadok 117:
 
* Cities  [[media:gm17_lesson11Cities.pdf|Cities.pdf]]
 
* Cities  [[media:gm17_lesson11Cities.pdf|Cities.pdf]]
 
* Buildings  [[media:gm17_lesson11Buildings.pdf|Buildings.pdf]]
 
* Buildings  [[media:gm17_lesson11Buildings.pdf|Buildings.pdf]]
* Facades  [[media:gm17_lesson11Facades.pdf|Facades.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]]
 
* Vegetation [[media:gm17_lesson11Vegetation.pdf|Vegetation.pdf]]
 
* Solid models  [[media:gm17_lesson11Models.pdf|Models.pdf]]
 
* Solid models  [[media:gm17_lesson11Models.pdf|Models.pdf]]
 
----
 
----
 
=EXERCISES=
 
=EXERCISES=
Your presence at the seminar is mandatory. Exercise projects are done in Unity3D  with C# language. We load the 3D objects with Assimp library .NET version.  
+
Your presence at the seminar is mandatory. Exercise projects are done in Blender with Python language.  
  
 
<!--
 
<!--
Riadok 133: Riadok 134:
 
* Using scripts reference page [https://docs.blender.org/api/blender_python_api_current/]
 
* Using scripts reference page [https://docs.blender.org/api/blender_python_api_current/]
 
* Example [[media:mesh_script.blend|mesh_script.blend]]
 
* Example [[media:mesh_script.blend|mesh_script.blend]]
 +
** to run in new Blender version,
 +
*** change line 31 and 32 to bpy.context.scene.collection.objects.link(obj)
 +
*** line 35 to obj.select_set(state=True)
 +
*** line 36 to bpy.context.view_layer.objects.active  = obj
 
* Create tetrahedron [https://en.wikipedia.org/wiki/Tetrahedron]
 
* Create tetrahedron [https://en.wikipedia.org/wiki/Tetrahedron]
 +
 +
=== Exercise 02 "Half Edge” ===
 +
* Half-Edge Data Structure [http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml][http://kaba.hilvi.org/homepage/blog/halfedge/halfedge.htm]
 +
* DCEL [http://totologic.blogspot.sk/2013/11/core-quad-edge-implementation-explained.html]
 +
* Example [[media:half_edge.blend|half_edge.blend]]
 +
* Create half-edge data structure for the tetrahedron [http://mathworld.wolfram.com/RegularTetrahedron.html]
 +
 +
=== Exercise 03 "Mesh Curvature” ===
 +
* 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
 +
 +
=== Exercise 07 "Loop subdivision - Triangle” ===
 +
* Subdivision [https://www.youtube.com/watch?v=ckOTl2GcS-E][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]]
 +
[[media:loop_subdiv_v2.8.blend|loop_subdiv_v2.8.blend]]<!-- -->
 +
 +
=== 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]  [https://users.csc.calpoly.edu/~zwood/teaching/csc572/final15/nshkurkin/index.html]
 +
* 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]]
 +
 +
Homework (4.5.)
 +
* implement modifed Butterfly subdivision scheme
 +
 +
=== Exercise 10 "Polygonising a scalar field” ===
 +
* Marching Cubes [http://paulbourke.net/geometry/polygonise/] [https://github.com/mutantbob/blender-marching-cubes]
 +
*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
 +
 +
<!--
 +
OUTDATED:
  
 
=== Exercise 02"Assimp library in Unity3D” ===
 
=== Exercise 02"Assimp library in Unity3D” ===
Riadok 186: Riadok 251:
 
*Tlač možná na zariadeniach vo FabLab. https://www.fablab.sk/sk/typ-zariadenia/3d-tlaciarne/
 
*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
 
*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
 +
-->

Aktuálna revízia z 08:06, 19. február 2024

Geometrical Modelling in Graphics (Course Materials)

Lecture Monday 9:50 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
  • VIEW RESULTS
  • In case of online lecture, homework and homework results connect to MS Teams Team Code: rx0qlm4

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)
      • line 35 to obj.select_set(state=True)
      • line 36 to bpy.context.view_layer.objects.active = 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”

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