CG1 2013/en: Rozdiel medzi revíziami

 
(92 medziľahlých úprav od 3 ďalších používateľov nie je zobrazených)
Riadok 1: Riadok 1:
 
[[File:cg1_2013.jpg]]
 
[[File:cg1_2013.jpg]]
= Computer Graphics 1 (2013) =
+
= Computer Graphics 1 =
  
== Lessons ==
+
== What you Need to Pass ==
Materials to read
+
 
 +
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.
 +
* Project and exercise (mandatory, 70 points).
 +
* Solve all homework problems (mandatory each one >=30%, 10 points)
 +
* Mid term (mandatory, 20 points)
 +
* Pass final term (mandatory, 15 points) You will need to solve several problems discussed during lessons.
 +
* Pass oral/written exam: (mandatory, +15 points)
 +
* Summary
 +
** Attendance = 0 or -100 (Fx)
 +
** Exercise = +50..0
 +
** Activity = +10..0 (optional)
 +
** Project = +20..0 (optional)
 +
** Homework = +10..3 or +3..0 (Fx)
 +
** Mid term = +20..0
 +
** Final term = +15..0
 +
** Oral/written exam = +15..0
 +
 
 +
* Grades
 +
** A = 92-100
 +
** B = 84-91
 +
** C = 76-83
 +
** D = 68-75
 +
** E = 60-67
 +
** Fx = 0-59
 +
 
 +
<!-- Commented stuff start
 +
* [https://docs.google.com/spreadsheet/ccc?key=0AguOJecPQwoSdHFDYnRaZTZHZFJlcWFJWkZjX3ZsNGc&usp=sharing VIEW RESULTS]
 +
Commnet end
 +
-->
 +
 
 +
* Schedule
 +
** Mon (18:10) - Room A (lecture)
 +
** Mon (10:40) - Room H3 (seminar)
 +
** Tue (09:50) - Room H6 (seminar)
 +
 
 +
 
 +
=== Materials to read ===
 
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/
 
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/
* http://data.agg.ethz.ch/publications/2008/botsch_2008_GMPeg.pdf
 
 
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/
 
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/
* http://www.scribd.com/doc/72522933/5/Nicholl-Lee-Nicholl-Line-Clipping
+
* [http://flurry.dg.fmph.uniba.sk/webog/en/zatko-teaching/389-pocitacova-grafika-1.html Texty v Slovenčine]
* http://flurry.dg.fmph.uniba.sk/webog/en/zatko-teaching/389-pocitacova-grafika-1.html
+
 
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224
 
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224
 
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika
 
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika
  
=== Lesson01 [24.09] "Introduction to Computer Graphics" ===
+
----
 +
<!-- Commented stuff start
 +
=== Lesson01 "Introduction to Computer Graphics" ===
 +
* Computer Graphics Applications
 +
* Graphics Pipeline
 +
* Lecture notes: [[media:cg1_lesson01.pdf|lesson01.pdf]]
  
=== Lesson02 [01.10] "Scene Representations" ===
+
=== Lesson02 Lesson03 "Scene Representations" ===
[[File:cg1_2012_lesson02.png|link=http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson02.pdf]]
+
[[File:cg1_2012_lesson02.png|link=https://dai.fmph.uniba.sk/upload/f/f1/Cg1_lesson02.pdf]]
 
* Representation of Curves
 
* Representation of Curves
 
* Representation of Volumes
 
* Representation of Volumes
 
* Representation of Surfaces
 
* Representation of Surfaces
* Lecture notes: [http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson03.pdf lesson02.pdf]
+
* Lecture notes: [[media:cg1_lesson02.pdf|lesson02.pdf]]
[[media:subor.pdf|lesson02.pdf]]
+
* Štátnicová téma: Reprezentácie objektov v počítačovej grafike. (Mnohouholníkové siete, splajny, CSG, volumetrické reprezentácie (BSP, octree), implicitné reprezentácie. Výhody a nevýhody jednotlivých reprezentácií, vzájomné konverzie.)
 +
* Homework 1: [[media:cg1_HomeworkSet01.pdf|HomeworkSet01.pdf]] deadline next week.
  
=== Lesson03 [08.10] "Transformations and Projections" ===
+
=== Lesson04 "Transformations and Projections" ===
[[File:cg1_2012_lesson04.png|link=http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson04.pdf]]
+
[[File:cg1_2012_lesson04.png|link=https://dai.fmph.uniba.sk/upload/e/ea/Cg1_lesson04.pdf]]
 
* Linear Transformations
 
* Linear Transformations
 
* Affine Transformations
 
* Affine Transformations
 
* Perspective Projections
 
* Perspective Projections
 
* Parallel Projections
 
* Parallel Projections
* Lecture notes: [[media:cg1_2012_lesson04.pdf|lesson03.pdf]]
+
* Lecture notes: [[media:cg1_lesson04.pdf|lesson04.pdf]]
 +
* Poznámky v Slovenčine k téme [[media:cg1_Transformacie.pdf|Transformacie]] a [[media:cg1_Viewing.pdf|Súradnice kamery]]
 +
* Štátnicová téma: Zobrazovací kanál. (Modelovanie 3D scény, snímanie, premietanie - rovnobeľné, stredové a ich vzájomný súvis. Súradnicové sústavy v zobrazovacom kanáli. Zaradenie algoritmov počítačovej grafiky (riešenie viditeľnosti, orezávanie...) do zobrazovacieho kanála. Zobrazovací kanál dvojrozmernej scény.)
  
=== Lesson04 [15.10] "The Graphics Pipeline" ===
+
=== Lesson05 "Line Clipping" ===
[[File:cg1_2012_lesson05.png|link=http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson05.pdf]]
+
[[File:cg1_2012_lesson06.png|link=https://dai.fmph.uniba.sk/upload/9/9e/Cg1_lesson05.pdf]]
* What is The Graphics Pipeline
+
* Vertex Shader
+
* Primitive Assembly
+
* Tessellation Shaders
+
* Geometry Shader
+
* Geometry Postprocessing and Rasterization
+
* Fragment Shader
+
* Frame Buffer Operations
+
* Lecture notes: [[media:cg1_2012_lesson05.pdf|lesson04.pdf]]
+
 
+
=== Lesson05 [22.10] "Line Clipping" ===
+
[[File:cg1_2012_lesson06.png|link=http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson06.pdf]]
+
 
* Line clipping algorithms in the CG Pipeline
 
* Line clipping algorithms in the CG Pipeline
 
* Cohen-Sutherland
 
* Cohen-Sutherland
 
* Cyrus-Beck
 
* Cyrus-Beck
 
* Nicholl-Lee-Nicholl
 
* Nicholl-Lee-Nicholl
* Lecture notes: [[media:cg1_2012_lesson06.pdf|lesson05.pdf]]
 
 
=== Lesson06 [29.10] "Intersections and Clipping" ===
 
[[File:cg1_2012_lesson07.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson07.pdf]]
 
* Computing basic intersections
 
 
* Polygon clipping algorithms
 
* Polygon clipping algorithms
 
* Sutherland-Hodgeman
 
* Sutherland-Hodgeman
* Weiler-Atherton
+
* Lecture notes: [[media:cg1_lesson05.pdf|lesson05.pdf]]
* Greiner-Hormann
+
* Poznámky v Slovenčine k téme [[media:cg1_Orezavanie.pdf|Orezavanie]]
* Curve and text clipping
+
* Štátnicová téma: Hľadanie prienikov a orezávanie. (Prieniky v rovine: prienik úsečiek, polpriamok, prienik s mnohouholníkom, prienik s konvexným mnohouholníkom, metódy hľadania prieniku úsečky a krivky. Prieniky v priestore: prienik úsečky a roviny, prienik úsečky a mnohouholníka. Algoritmy Cohen-Sutherland, Cyrus-Beck,  Liang-Barsky a Nichol-Lee-Nichol pre orezávanie úsečky do okna. Orezávanie mnohouholníka do okna.)
* Lecture notes: [[media:cg1_2012_lesson07.pdf|lesson06.pdf]]
+
 
 +
=== Lesson06 [27.10] "Intersections and Scan Line Raterization" ===
 +
[[File:cg1_2012_lesson07.png|link=https://dai.fmph.uniba.sk/upload/1/11/Cg1_lesson06.pdf]]
 +
* Computing basic intersections
 +
* Orientation function
 +
* Edge intersection tests
 +
* Scan Line conversion algorithm
 +
* Lecture notes: [[media:cg1_lesson06.pdf|lesson06.pdf]]
 +
* Lecture notes in slovak: [[media:cg1_lesson06SK.pdf|lesson06SK.pdf]]
 +
* Poznámky v Slovenčine k téme [[media:cg1_Prieniky.pdf|Prieniky]]
 +
* Homework 2: [[media:cg1_HomeworkSet02.pdf|HomeworkSet02.pdf]] deadline for Example 1 and 2 next week [till 3. nov. 2014].
 +
 
 +
=== Lesson07 [3.11] "Rasterization" ===
 +
[[File:cg1_2012_lesson08.png|link=https://dai.fmph.uniba.sk/upload/3/3d/Cg1_lesson07.pdf]]
 +
* Line rasterization: DDA, Bresenham, Midpoint
 +
* Curve rasterization: Midpoint, Bresenham
 +
* Polygon rasterization
 +
* Filling algorithms: flood fill, boarder fill
 +
* Lecture notes: [[media:cg1_lesson07.pdf|lesson07.pdf]]
 +
* Poznámky v Slovenčine k téme [[media:cg1_Rasterizacia.pdf|Rasterizácia]]
 +
* Štátnicová téma: Rasterizácia a antialiasing. (Algoritmy rasterizácie úsečky. Rasterizácia kvadratickej krivky, rasterizácia mnohouholníka pomocou skenovacej priamky. Prístupy k vypĺňaniu oblastí. Alias a metódy antialiasingu.)
 +
* Homework 2: [[media:cg1_HomeworkSet02.pdf|HomeworkSet02.pdf]] deadline for Example 3 next week [till 10. nov. 2014, please handle the homework scan in the electronic form by email to prof. Durikovic, with the subject: CG1 EXAMPLE 3].
 +
 
 +
=== Lesson08 [10.11 Mihalik, Piovarci] "Midterm test" ===
 +
* Test problems are similar to homework problems.
 +
* Sit in lecture room A, two rows of seats will be free between rows of students, three seats will be free between students in row.
 +
* Test results 18.11.
 +
 
 +
=== Lesson09 [17.11] "Štátny sviatok" ===
  
=== Lesson07 [19.11] "Visible Surface Determination and Antialiasing" ===
+
=== Lesson10 [24.11 Mihalik] "Aliasing, Antialiasing and Visible Surface Determination" ===
[[File:cg1_2012_lesson09.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson09.pdf]]
+
[[File:cg1_2012_lesson09.png|link=https://dai.fmph.uniba.sk/upload/4/4a/Cg1_2012_lesson09.pdf]]
* Alias, Nyquist frequency - [http://www.sccg.sk/~durikovic/classes/CG1/Handouts/aliasing.pdf Aliasing] [http://www.math.ubc.ca/~feldman/m267/dft.pdf Aditional Material]
+
* Aliasing, Nyquist frequency - [http://www.sccg.sk/~durikovic/classes/CG1/Handouts/aliasing.pdf Aliasing] [http://www.math.ubc.ca/~feldman/m267/dft.pdf Aditional Material]
 
* Antialiasing: Postfiltering, Prefiltering, MSAA, CSAA - [http://www.sccg.sk/~durikovic/classes/CG1/Handouts/antialiasing.pdf Antialiasing]
 
* Antialiasing: Postfiltering, Prefiltering, MSAA, CSAA - [http://www.sccg.sk/~durikovic/classes/CG1/Handouts/antialiasing.pdf Antialiasing]
 
* Visibility Surface Determination: Object Space, Image Space, Priority List
 
* Visibility Surface Determination: Object Space, Image Space, Priority List
Riadok 71: Riadok 124:
 
* Octree
 
* Octree
 
* Lecture notes: [[media:cg1_2012_lesson09.pdf|lesson07.pdf]]
 
* Lecture notes: [[media:cg1_2012_lesson09.pdf|lesson07.pdf]]
 +
* Štátnicová téma: Algoritmy pre určovanie viditeľného povrchu. (Algoritmy v priestore objektov: využitie normálových vektorov, maliarove algoritmy, využitie volumetrických reprezentácií. Algoritmy v priestore obrazu: z-buffer, delenie okna. špeciálne algoritmy: zobrazovanie drôteného modelu, zobrazovanie grafu funkcie.)
  
=== Lesson08 [26.11] "Rasterization" ===
+
=== Lesson11 [1.12 Mihalik] "The Graphics Pipeline" ===
[[File:cg1_2012_lesson08.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson08.pdf]]
+
[[File:cg1_2012_lesson05.png|link=https://dai.fmph.uniba.sk/upload/6/64/Cg1_2012_lesson05.pdf]]
* Line rasterization: DDA, Bresenham, Midpoint
+
* What is The Graphics Pipeline
* Curve rasterization: Midpoint, Bresenham
+
* Vertex Shader
* Polygon rasterization
+
* Primitive Assembly
* Filling algorithms: flood fill, boarder fill
+
* Tessellation Shaders
* Lecture notes: [[media:cg1_2012_lesson08.pdf|lesson08.pdf]]
+
* Geometry Shader
 +
* Geometry Postprocessing and Rasterization
 +
* Fragment Shader
 +
* Frame Buffer Operations
 +
* Lecture notes: [[media:cg1_2012_lesson05.pdf|lesson04.pdf]]
  
 +
=== Lesson12 [8.12] "Representation and Blending of Images" ===
 +
[[File:cg1_2012_lesson11.png|link=https://dai.fmph.uniba.sk/upload/b/b3/Cg1_2012_lesson11.pdf]]
 +
* Color Models
 +
* Image Blending Modes
 +
* Lecture notes: [[media:cg1_2012_lesson11.pdf|lesson10.pdf]]
 +
 +
=== Lesson13 [15.12] "FINAL test" ===
 +
* Test problems are similar to homework problems.
 +
* Sit in lecture room A, two rows of seats will be free between rows of students, three seats will be free between students in row.
 +
* Expect the test results till 24:00.
 +
* Bring the student index with you! Who fails has Fx.
 +
* Those wishing to get credits from CG1 this day, MUST pass the test with A (96-100%) and wait till the test results.
 +
 +
<!-- Commets
 
=== Lesson09 [03.12] "Visibility Culling and Graphical Pipeline Revisited" ===
 
=== Lesson09 [03.12] "Visibility Culling and Graphical Pipeline Revisited" ===
[[File:cg1_2012_lesson10.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson10.pdf]]
+
[[File:cg1_2012_lesson10.png|link=https://dai.fmph.uniba.sk/upload/3/3d/Cg1_2012_lesson10.pdf]]
 
* Wireframe Models
 
* Wireframe Models
 
* Visibility Culling: Backface, View Frustum, Detail, Occlusion
 
* Visibility Culling: Backface, View Frustum, Detail, Occlusion
 
* Graphical Pipeline: Transformation and Coordinates
 
* Graphical Pipeline: Transformation and Coordinates
 
* Lecture notes: [[media:cg1_2012_lesson10.pdf|lesson09.pdf]]
 
* Lecture notes: [[media:cg1_2012_lesson10.pdf|lesson09.pdf]]
 +
Commets ends
 +
-->
  
=== Lesson10 [10.12] "Representation and Blending of Images" ===
+
----
[[File:cg1_2012_lesson11.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson11.pdf]]
+
* Color Models
+
* Image Blending Modes
+
* Lecture notes: [[media:cg1_2012_lesson11.pdf|lesson10.pdf]]
+
  
== Seminars - Info ==
+
 
 +
== Seminars ==
 
* On every seminar we will implement selected problems/algorithms from lessons. We will usually start with a prearranged template downloadable from this site.
 
* On every seminar we will implement selected problems/algorithms from lessons. We will usually start with a prearranged template downloadable from this site.
 
* As a programming language we will use C#. We will use Visual C# 2010 Express  / Sharp Develop as a development environment. Alternatively you can use MonoDevelop (Linux / Mac OSX) on your own machine.
 
* As a programming language we will use C#. We will use Visual C# 2010 Express  / Sharp Develop as a development environment. Alternatively you can use MonoDevelop (Linux / Mac OSX) on your own machine.
Riadok 101: Riadok 172:
  
 
=== Assignments ===
 
=== Assignments ===
* Assignment must be submitted by email to [mailto:cg1.2013.hw@gmail.com  cg1.2013.hw@gmail.com] until '''next deadline 06:00 (morning)'''
+
* Assignment must be submitted until '''next deadline 24:00'''
 +
* '''Tuesday seminar''' attendees should submit their assignments during the seminar or by the email to [mailto:cg1.2013.hw@gmail.com  cg1.2013.hw@gmail.com].
 +
* '''Please remove exe from zip file or use a link to another repository.'''
 +
* '''Monday seminars submission''' email is [mailto:cg1.2014.hw@gmail.com  cg1.2014.hw@gmail.com]
 
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.
 
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.
 
* You can get '''max 100% per assignment'''. Late submission is for 0%.
 
* You can get '''max 100% per assignment'''. Late submission is for 0%.
* It is required to submit '''zipped source code of your homework'''. Do not send only executable files. Homework without source code is for 0%.
+
* It is required to submit '''compilable zipped source code of your homework'''. Do not send only executable files. Homework without source code is for 0%.
 
* Your code should be well formatted and commented. Titles of functions, classes, variables should be representative for their purpose.
 
* Your code should be well formatted and commented. Titles of functions, classes, variables should be representative for their purpose.
  
 
== Project ==
 
== Project ==
* Project is your opportunity to gain '''additional 20 points of your final evaluation (during the semester)''' and it is '''optional'''. It must be submitted by email to [mailto:cg1.2013.hw@gmail.com  cg1.2013.hw@gmail.com] including your solution and source files.
+
* Project is your opportunity to gain '''additional 20 points of your final evaluation (during the semester)''' and it is '''optional'''. It must be submitted by email to [mailto:mihalik@sccg.com  mihalik@sccg.com] including your solution and source files.
 
* Comment your code and add help!
 
* Comment your code and add help!
 
* Submission until - 6 days before you final term
 
* Submission until - 6 days before you final term
* Project assignments - Choose among these themes or create your own. You should notify [mailto:cg1.2013.hw@gmail.com  cg1.2013.hw@gmail.com] with your idea about the chosen project (idea, language, implementation, application). More info in person on M162.
+
* Project assignments - Choose among these themes or create your own. You should notify [mailto:mihalik@sccg.com  mihalik@sccg.com] with your idea about the chosen project (idea, language, implementation, application). More info in person on M113.
 
* '''Ideas:'''
 
* '''Ideas:'''
 
** Voxel Data Structure - 3D should be used, generate voxelization of objects
 
** Voxel Data Structure - 3D should be used, generate voxelization of objects
Riadok 119: Riadok 193:
 
** Other - Specify in the email
 
** Other - Specify in the email
  
== Summary ==
+
<!-- ::::ARCHIVE::::
* '''Midterm - Max 10 points''' of your final evaluation
+
[[media:Ex01.Sample.zip|Sample]] | [[media:Ex01.Template.zip|Template]]
* '''Finalterm - Max 40 points''' of your final evaluation
+
[[media:Ex02.Sample.zip|Sample]] | [[media:Ex02.Template.zip|Template]]
* '''Semester - Max 60 points (Exercises - 50,  Project - 20, Bonus 10)''' of your final evaluation
+
[media:Ex08.Template.zip|Template]
* Submission: [mailto:cg1.2013.hw@gmail.com cg1.2013.hw@gmail.com]
+
-->
* Attendance: Optional
+
<!-- Commented stuff start
* Lessons are conducted by '''Andrej Mihalik (mihalik@sccg.sk)'''
+
-->
* Seminars are conducted by '''Matej Hudak (subseth.mato@gmail.com)'''
+
=== Exercise00 [22/23.09] "Introduction" ===
* Other collaborators and authors are Juraj Onderik and Michal Chladek
+
* Schedule
+
** Tue (09:50) - Room F2 (lesson)
+
** Mon (10:40) - Room H3 (seminar)
+
** Tue (08:10) - Room H6 (seminar)
+
* [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdDh1TDNBcl8xUThLZHZkVVJvMjNQdFE&usp=sharing Your Evaluation]
+
 
+
== Seminars ==
+
=== Exercise00 [23/24.09] "Introduction" ===
+
 
* [[media:CG1Intro2013.pdf|Introduction]]
 
* [[media:CG1Intro2013.pdf|Introduction]]
 
* There is no assignment for this seminar
 
* There is no assignment for this seminar
  
=== Exercise01 [30.09/01.10] "Vectors and Matrices" ===
+
=== Exercise01 [29.09/30.10] "Vectors and Matrices" ===
 
* Create a simple application for vectors(4x1) and matrices(4x4)
 
* Create a simple application for vectors(4x1) and matrices(4x4)
* [[media:Ex01.Info.pdf|Info]] | [[media:Ex01.Sample.zip|Sample]] | [[media:Ex01.Template.zip|Template]]
+
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]
* Deadline: 14.10 6:00AM (Morning)
+
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]
* Please, questions about assignments address to Matej Hudak (mail, in person - M162)
+
* '''Deadline''': 5.10 24:00
 +
* '''Bonus''' implement unit tests:
 +
** Add drop-down option called '''Unit Test'''
 +
** Create '''2 tests for each arithmetic operation''' in the drop-down menu
 +
** Compare the result calculated by your implementation with a precalculated result
 +
** Count successful tests and output final score to console
  
=== Exercise02 [14/15.10] "Show of Your Curves" ===
+
=== Exercise02 [6/7.10] "Show of Your Curves" ===
 
* Create a simple application to compute bezier curve using De Casteljau algorithm.  
 
* Create a simple application to compute bezier curve using De Casteljau algorithm.  
* [http://www.sccg.sk/~hudak/CG1/Ex02.Info.pdf Info] | [http://www.sccg.sk/~hudak/CG1/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex02.Template.zip Template]
+
* [[media:Ex02.Info.pdf|Info]] | [[media:Ex02.Sample.zip|Sample]] | [[media:CG1.Ex02.Template.zip|Template]]
* Deadline: 21.10 6:00AM (Morning)
+
* '''Deadline:''' 12.10 24:00
 +
* '''Extended deadline (-30% from evaluation): ''' 19.10 24:00
  
 +
=== Exercise03 [13/14.10] "(ง ͠° ͟ʖ ͡°)ง Raise Your Matrices (ง ͠° ͟ʖ ͡°)ง" ===
 +
* Create a simple aplication that can create, scale and rotate polylines
 +
* [[media:CG1.Ex03.sample.zip|Sample]] | [[media:CG1.Ex03.template.zip|Template]]
 +
* '''Deadline:''' 19.10 24:00
 +
* '''Extended deadline (-30% from evaluation): ''' 26.10 24:00
 +
 +
=== Exercise04 [20/21.10] "Half-Edge Trick" ===
 +
* And now ladies and gentlemen I will saw this edge in half. (Suspense - Applause - Performance)
 +
* Implement a simple mesh representation in 2D. Use half-edge data structure. Implement loading data from file.off and filling the structure. As usual you should use a similar functionality and drawing as in the sample application - already in template.
 +
* [[media:Ex05.Info.pdf|Info]] | [http://www.openmesh.org/media/Documentations/OpenMesh-2.0-Documentation/mesh_navigation.html Navigating HalfEdge] | [[media:Ex05.Sample.zip|Sample]] | [[media:Ex05.Template.zip|Template]]
 +
* '''Bonus: (2 points)''' implement interactive half-edge generation:
 +
** Right clicking in GUI will add new points
 +
*** remember to merge points with already existing points
 +
** Each 3 point will create a new face
 +
*** remember to correctly set Next and Opposite half edges
 +
* '''Deadline:''' 26.10 24:00
 +
* '''Extended deadline (-30% from evaluation): ''' 2.11 24:00
 +
 +
=== Exercise05 [27/28.10] "The One About Clipping" ===
 +
* Your mission, should you choose to accept it, is to implement two clipping algorithms: Cohen-Sutterland and Cyrus-Beck. Implemented algorithms should be those algorithms by definition. Pseudocodes are in the 'Clipping' lesson. The interaction and GUI are in the template application.
 +
* [[media:Ex04.Sample.zip|Sample]] | [[media:Ex04.Template.zip|Template]]
 +
* [http://stackoverflow.com/questions/1165647/how-to-determine-if-a-list-of-polygon-points-are-in-clockwise-order How to determine if a list of polygon points are in clockwise order]
 +
* '''This assignment will self-destruct''' 2.11 24:00 (morning). Good luck.
 +
* '''In case of system bug''' 9.11 24:00
 +
 +
=== Exercise06 [3/4.11] "AMA (Ask Me Anything)" ===
 +
* Q&A before midterm exam
 +
* Sample assignments for practice
 +
* '''There is no assignment this week'''
 +
 +
=== Exercise07 [10/11.11] "Virtual Knitting" ===
 +
* Implement Scan Line algorithm. Implemented algorithms should be those algorithms by definition. The interaction and GUI are in the template application. Use materials from the lecture and additional material [http://flurry.dg.fmph.uniba.sk/webog/SuboryOG/zatko/4.VYPLNANIE2011.pdf]
 +
* Bonus - flood fill algorithm. Algorithm from the lecture [0.5 points]. Other [1 point]
 +
* Bonus - use scanline to fill 3D volume. Use OpenGL to work with mesh (Ex03) and fill 3D mesh like [[media:Input.png|input]] with cubes / spheres similar to [[media:Result.png|result]] [max 5 points]
 +
* [[media:Ex08.Sample.zip|Sample]] | [[media:CG1.Ex08.Template.zip|Template]]
 +
* '''Deadline:''' 23.11 24:00
 +
* '''Extended deadline (-30% from evaluation): ''' 30.11 24:00
 +
 +
=== Exercise08 [24/25.11] "Draw Me Like One of Your French Pixels" ===
 +
* Implement a rasterization of three objects: line, circle and ellipse. Use additional material if necessary. [[media:Ellipse.pdf|Ellipse]]
 +
* Bonus - curve rasterization. Bezier curve [0.5 points]. Other than bezier curve [2 points]
 +
* [[media:Ex07.Sample.zip|Sample]] | [[media:Ex07.Template.rar|Template]]
 +
* '''Deadline:''' 7.12. 24:00
 +
* '''Extended deadline (-30% from evaluation): ''' 14.12 24:00
 +
 +
=== Exercise09 [1/2.12] "Now You See Me" ===
 +
* And now you don't. Look closely, because the closer you think you are, the more you'll actually understand.
 +
* Implement a visible surface determination algorithm Z-buffer. As usual you should use a similar functionality and drawing as in the sample application.
 +
* [[media:Ex06.Info.pdf|Info]] | [[media:CG1.Zbuffer.pdf | Z-buffer]]| [[media:Ex06.Sample.zip|Sample]] | [[media:Ex06.Template.zip|Template]]
 +
* '''Bonus:'''
 +
** Antialisaing [1 point]
 +
** Gaussian blur [1 point], using separable kernel [+1 point]
 +
** Phong shading [1 point]
 +
* '''Deadline:''' 7.12. 24:00
 +
* '''Extended deadline (-30% from evaluation): ''' 14.12 24:00
 +
 +
=== Exercise10 [8/9.12] "AMA 2 (Ask Me Anything)" ===
 +
* Q&A before final exam
 +
* Sample assignments for practice
 +
* [http://www.songho.ca/opengl/gl_projectionmatrix.html Projection]
 +
* '''There is no assignment this week'''
 +
 +
 +
<!-- Comments
 
=== Exercise03 [21/22.10] "3D Mesh? No Problem" ===
 
=== Exercise03 [21/22.10] "3D Mesh? No Problem" ===
* We will work with OpenGL library in C#. Library is [http://www.opentk.com/ OpenTK] - direct support for OpenGL in C# - [http://www.sccg.sk/~hudak/CG1/OpenGLIntro.pdf OpenGL Intro]. This exercise is introduction to 3D CG. We will use [http://www.opentk.com/project/Meshomatic Meshomatic] library. There is no assignment this week.  
+
* We will work with OpenGL library in C#. Library is [http://www.opentk.com/ OpenTK] - direct support for OpenGL in C# - [[media:OpenGLIntro.pdf|OpenGL Intro]]. This exercise is introduction to 3D CG. We will use [http://www.opentk.com/project/Meshomatic Meshomatic] library. There is no assignment this week.  
* [http://www.sccg.sk/~hudak/CG1/Ex03.Sample.zip Sample]
+
* [[media:Ex03.Sample.zip|Sample]]
  
 
=== Exercise04 [28/29.10] "The One About Clipping" ===
 
=== Exercise04 [28/29.10] "The One About Clipping" ===
 
* Your mission, should you choose to accept it, is to implement two clipping algorithms: Cohen-Sutterland and Cyrus-Beck. Implemented algorithms should be those algorithms by definition. Pseudocodes are in the 'Clipping' lesson. The interaction and GUI are in the template application.
 
* Your mission, should you choose to accept it, is to implement two clipping algorithms: Cohen-Sutterland and Cyrus-Beck. Implemented algorithms should be those algorithms by definition. Pseudocodes are in the 'Clipping' lesson. The interaction and GUI are in the template application.
* [http://www.sccg.sk/~hudak/CG1/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex04.Template.zip Template]
+
* [[media:Ex04.Sample.zip|Sample]] | [[media:Ex04.Template.zip|Template]]
 
* This assignment will self-destruct 4.11 06:00 (morning). Good luck.
 
* This assignment will self-destruct 4.11 06:00 (morning). Good luck.
  
Riadok 162: Riadok 297:
 
* And now ladies and gentlemen I will saw this edge in half. (Suspense - Applause - Performance)
 
* And now ladies and gentlemen I will saw this edge in half. (Suspense - Applause - Performance)
 
* Implement a simple mesh representation in 2D. Use half-edge data structure. Implement loading data from file.off and filling the structure. As usual you should use a similar functionality and drawing as in the sample application - already in template.
 
* Implement a simple mesh representation in 2D. Use half-edge data structure. Implement loading data from file.off and filling the structure. As usual you should use a similar functionality and drawing as in the sample application - already in template.
* [http://www.sccg.sk/~hudak/CG1/Ex05.Info.pdf Info] | [http://www.sccg.sk/~hudak/CG1/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex05.Template.zip Template]
+
* [[media:Ex05.Info.pdf|Info]] | [[media:Ex05.Sample.zip|Sample]] | [[media:Ex05.Template.zip|Template]]
 
* Deadline: 25.11 6:00AM (Morning)
 
* Deadline: 25.11 6:00AM (Morning)
  
Riadok 168: Riadok 303:
 
* And now you don't. Look closely, because the closer you think you are, the more you'll actually understand.  
 
* And now you don't. Look closely, because the closer you think you are, the more you'll actually understand.  
 
* Implement a visible surface determination algorithm Z-buffer. As usual you should use a similar functionality and drawing as in the sample application.
 
* Implement a visible surface determination algorithm Z-buffer. As usual you should use a similar functionality and drawing as in the sample application.
* [http://www.sccg.sk/~hudak/CG1/Ex06.Info.pdf Info] | [http://www.sccg.sk/~hudak/CG1/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex06.Template.zip Template]
+
* [[media:Ex06.Info.pdf|Info]] | [[media:Ex06.Sample.zip|Sample]] | [[media:Ex06.Template.zip|Template]]
 
* Deadline: 9.12 6:00AM (Morning)
 
* Deadline: 9.12 6:00AM (Morning)
 
+
-->
=== Exercise07 [02/03.12] "Draw Me Like One of Your French Pixels" ===
+
* Implement a rasterization of three objects: line, circle and ellipse. Use additional material if necessary. [http://www.sccg.sk/~hudak/CG1/Ellipse.pdf Ellipse]
+
* Bonus - curve rasterization. Bezier curve [0.5 points]. Other than bezier curve [2 points]
+
* [http://www.sccg.sk/~hudak/CG1/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex07.Template.rar Template]
+
* Deadline: 9.12 6:00AM (Morning)
+
 
+
=== Exercise08 [09/10.12] "Virtual Knitting" ===
+
* Continue from previous exercise and implement Scan Line algorithm. Implemented algorithms should be those algorithms by definition. The interaction and GUI are in the template application. Use materials from the lecture and additional material [http://flurry.dg.fmph.uniba.sk/webog/SuboryOG/zatko/4.VYPLNANIE2011.pdf]
+
* Bonus - flood fill algorithm. Algorithm from the lecture [0.5 points]. Other [1 point]
+
* Bonus - use scanline to fill 3D volume. Use OpenGL to work with mesh (Ex03) and fill 3D mesh like [http://www.sccg.sk/~hudak/CG1/Input.png input] with cubes / spheres similar to [http://www.sccg.sk/~hudak/CG1/Result.png result] [max 5 points]
+
* [http://www.sccg.sk/~hudak/CG1/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex08.Template.zip Template]
+
* Deadline: 23.12 6:00AM (Morning)
+

Aktuálna revízia z 08:30, 22. máj 2015

Cg1 2013.jpg

Computer Graphics 1

What you Need to Pass

  • Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.
  • Project and exercise (mandatory, 70 points).
  • Solve all homework problems (mandatory each one >=30%, 10 points)
  • Mid term (mandatory, 20 points)
  • Pass final term (mandatory, 15 points) You will need to solve several problems discussed during lessons.
  • Pass oral/written exam: (mandatory, +15 points)
  • Summary
    • Attendance = 0 or -100 (Fx)
    • Exercise = +50..0
    • Activity = +10..0 (optional)
    • Project = +20..0 (optional)
    • Homework = +10..3 or +3..0 (Fx)
    • Mid term = +20..0
    • Final term = +15..0
    • Oral/written exam = +15..0
  • Grades
    • A = 92-100
    • B = 84-91
    • C = 76-83
    • D = 68-75
    • E = 60-67
    • Fx = 0-59


  • Schedule
    • Mon (18:10) - Room A (lecture)
    • Mon (10:40) - Room H3 (seminar)
    • Tue (09:50) - Room H6 (seminar)


Materials to read




Seminars

  • On every seminar we will implement selected problems/algorithms from lessons. We will usually start with a prearranged template downloadable from this site.
  • As a programming language we will use C#. We will use Visual C# 2010 Express / Sharp Develop as a development environment. Alternatively you can use MonoDevelop (Linux / Mac OSX) on your own machine.
  • Don't cheat - create instead. Any kind of cheating is punished by withholding 15 points of your final evaluation for all involved students. Situation where only part of code is shared is also considered cheating!
  • Attendance at seminars is optional, but recommended.
  • Additional activity can be awarded by max 10 points of your final evaluation.

Assignments

  • Assignment must be submitted until next deadline 24:00
  • Tuesday seminar attendees should submit their assignments during the seminar or by the email to cg1.2013.hw@gmail.com.
  • Please remove exe from zip file or use a link to another repository.
  • Monday seminars submission email is cg1.2014.hw@gmail.com
  • Your submission email must have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.
  • You can get max 100% per assignment. Late submission is for 0%.
  • It is required to submit compilable zipped source code of your homework. Do not send only executable files. Homework without source code is for 0%.
  • Your code should be well formatted and commented. Titles of functions, classes, variables should be representative for their purpose.

Project

  • Project is your opportunity to gain additional 20 points of your final evaluation (during the semester) and it is optional. It must be submitted by email to mihalik@sccg.com including your solution and source files.
  • Comment your code and add help!
  • Submission until - 6 days before you final term
  • Project assignments - Choose among these themes or create your own. You should notify mihalik@sccg.com with your idea about the chosen project (idea, language, implementation, application). More info in person on M113.
  • Ideas:
    • Voxel Data Structure - 3D should be used, generate voxelization of objects
    • Advanced Mesh Transformations - Take blender mesh function and implement it
    • Gimp Layer functions - Darken, Soft light, ...
    • Displacement Modeling - a.k.a Z-brush
    • Other - Specify in the email

Exercise00 [22/23.09] "Introduction"

Exercise01 [29.09/30.10] "Vectors and Matrices"

  • Create a simple application for vectors(4x1) and matrices(4x4)
  • Info | Sample | Template
  • Inverse Matrix | Adjoint Matrix | Adjoint Matrix Wiki
  • Deadline: 5.10 24:00
  • Bonus implement unit tests:
    • Add drop-down option called Unit Test
    • Create 2 tests for each arithmetic operation in the drop-down menu
    • Compare the result calculated by your implementation with a precalculated result
    • Count successful tests and output final score to console

Exercise02 [6/7.10] "Show of Your Curves"

  • Create a simple application to compute bezier curve using De Casteljau algorithm.
  • Info | Sample | Template
  • Deadline: 12.10 24:00
  • Extended deadline (-30% from evaluation): 19.10 24:00

Exercise03 [13/14.10] "(ง ͠° ͟ʖ ͡°)ง Raise Your Matrices (ง ͠° ͟ʖ ͡°)ง"

  • Create a simple aplication that can create, scale and rotate polylines
  • Sample | Template
  • Deadline: 19.10 24:00
  • Extended deadline (-30% from evaluation): 26.10 24:00

Exercise04 [20/21.10] "Half-Edge Trick"

  • And now ladies and gentlemen I will saw this edge in half. (Suspense - Applause - Performance)
  • Implement a simple mesh representation in 2D. Use half-edge data structure. Implement loading data from file.off and filling the structure. As usual you should use a similar functionality and drawing as in the sample application - already in template.
  • Info | Navigating HalfEdge | Sample | Template
  • Bonus: (2 points) implement interactive half-edge generation:
    • Right clicking in GUI will add new points
      • remember to merge points with already existing points
    • Each 3 point will create a new face
      • remember to correctly set Next and Opposite half edges
  • Deadline: 26.10 24:00
  • Extended deadline (-30% from evaluation): 2.11 24:00

Exercise05 [27/28.10] "The One About Clipping"

  • Your mission, should you choose to accept it, is to implement two clipping algorithms: Cohen-Sutterland and Cyrus-Beck. Implemented algorithms should be those algorithms by definition. Pseudocodes are in the 'Clipping' lesson. The interaction and GUI are in the template application.
  • Sample | Template
  • How to determine if a list of polygon points are in clockwise order
  • This assignment will self-destruct 2.11 24:00 (morning). Good luck.
  • In case of system bug 9.11 24:00

Exercise06 [3/4.11] "AMA (Ask Me Anything)"

  • Q&A before midterm exam
  • Sample assignments for practice
  • There is no assignment this week

Exercise07 [10/11.11] "Virtual Knitting"

  • Implement Scan Line algorithm. Implemented algorithms should be those algorithms by definition. The interaction and GUI are in the template application. Use materials from the lecture and additional material [1]
  • Bonus - flood fill algorithm. Algorithm from the lecture [0.5 points]. Other [1 point]
  • Bonus - use scanline to fill 3D volume. Use OpenGL to work with mesh (Ex03) and fill 3D mesh like input with cubes / spheres similar to result [max 5 points]
  • Sample | Template
  • Deadline: 23.11 24:00
  • Extended deadline (-30% from evaluation): 30.11 24:00

Exercise08 [24/25.11] "Draw Me Like One of Your French Pixels"

  • Implement a rasterization of three objects: line, circle and ellipse. Use additional material if necessary. Ellipse
  • Bonus - curve rasterization. Bezier curve [0.5 points]. Other than bezier curve [2 points]
  • Sample | Template
  • Deadline: 7.12. 24:00
  • Extended deadline (-30% from evaluation): 14.12 24:00

Exercise09 [1/2.12] "Now You See Me"

  • And now you don't. Look closely, because the closer you think you are, the more you'll actually understand.
  • Implement a visible surface determination algorithm Z-buffer. As usual you should use a similar functionality and drawing as in the sample application.
  • Info | Z-buffer| Sample | Template
  • Bonus:
    • Antialisaing [1 point]
    • Gaussian blur [1 point], using separable kernel [+1 point]
    • Phong shading [1 point]
  • Deadline: 7.12. 24:00
  • Extended deadline (-30% from evaluation): 14.12 24:00

Exercise10 [8/9.12] "AMA 2 (Ask Me Anything)"

  • Q&A before final exam
  • Sample assignments for practice
  • Projection
  • There is no assignment this week