Contents
- 1 Computer Graphics 1
- 1.1 Summary
- 1.2 Lessons
- 1.2.1 Lesson01 [24.09] "Introduction to Computer Graphics"
- 1.2.2 Lesson02 [01.10] "Scene Representations"
- 1.2.3 Lesson03 [08.10] "Transformations and Projections"
- 1.2.4 Lesson04 [15.10] "The Graphics Pipeline"
- 1.2.5 Lesson05 [22.10] "Line Clipping"
- 1.2.6 Lesson06 [29.10] "Intersections and Clipping"
- 1.2.7 Lesson07 [19.11] "Visible Surface Determination and Antialiasing"
- 1.2.8 Lesson08 [26.11] "Rasterization"
- 1.2.9 Lesson09 [03.12] "Visibility Culling and Graphical Pipeline Revisited"
- 1.2.10 Lesson10 [10.12] "Representation and Blending of Images"
- 1.3 Seminars
- 1.4 Project
- 1.4.1 Exercise00 [23/24.09] "Introduction"
- 1.4.2 Exercise01 [30.09/01.10] "Vectors and Matrices"
- 1.4.3 Exercise02 [14/15.10] "Show of Your Curves"
- 1.4.4 Exercise03 [21/22.10] "3D Mesh? No Problem"
- 1.4.5 Exercise04 [28/29.10] "The One About Clipping"
- 1.4.6 Exercise05 [04/05.11] "Half-Edge Trick"
- 1.4.7 Exercise06 [25/26.11] "Now You See Me"
- 1.4.8 Exercise07 [02/03.12] "Draw Me Like One of Your French Pixels"
- 1.4.9 Exercise08 [09/10.12] "Virtual Knitting"
Computer Graphics 1
Summary
- Midterm - Max "20 points of your final evaluation
- Finalterm - Max 30 points of your final evaluation
- Semester - Max 80 points (Exercises - 50, Project - 20, Activity 10) of your final evaluation
- Submission: cg1.2013.hw@gmail.com
- Attendance: Optional
- Lessons are conducted by Andrej Mihalik (mihalik@sccg.sk)
- Seminars are conducted by Michal Piovarči (michal.piovarci@gmail.com)
- Other collaborators and authors are Juraj Onderik and Michal Chladek
- Schedule
- Tue (09:50) - Room F2 (lesson)
- Mon (10:40) - Room H3 (seminar)
- Tue (09:50) - Room H6 (seminar)
- Your Evaluation
Lessons
Materials to read
- 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.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
- http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224
- http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika
Lesson01 [24.09] "Introduction to Computer Graphics"
Lesson02 [01.10] "Scene Representations"
- Representation of Curves
- Representation of Volumes
- Representation of Surfaces
- Lecture notes: lesson02.pdf
Lesson03 [08.10] "Transformations and Projections"
- Linear Transformations
- Affine Transformations
- Perspective Projections
- Parallel Projections
- Lecture notes: lesson03.pdf
Lesson04 [15.10] "The Graphics Pipeline"
- What is The Graphics Pipeline
- Vertex Shader
- Primitive Assembly
- Tessellation Shaders
- Geometry Shader
- Geometry Postprocessing and Rasterization
- Fragment Shader
- Frame Buffer Operations
- Lecture notes: lesson04.pdf
Lesson05 [22.10] "Line Clipping"
- Line clipping algorithms in the CG Pipeline
- Cohen-Sutherland
- Cyrus-Beck
- Nicholl-Lee-Nicholl
- Lecture notes: lesson05.pdf
Lesson06 [29.10] "Intersections and Clipping"
- Computing basic intersections
- Polygon clipping algorithms
- Sutherland-Hodgeman
- Weiler-Atherton
- Greiner-Hormann
- Curve and text clipping
- Lecture notes: lesson06.pdf
Lesson07 [19.11] "Visible Surface Determination and Antialiasing"
- Alias, Nyquist frequency - Aliasing Aditional Material
- Antialiasing: Postfiltering, Prefiltering, MSAA, CSAA - Antialiasing
- Visibility Surface Determination: Object Space, Image Space, Priority List
- Painter's Algorithm, Newel-Newel-Sancha
- Schumacker, BSP-tree
- Warnock's Algorithm
- Z-buffer
- Octree
- Lecture notes: lesson07.pdf
Lesson08 [26.11] "Rasterization"
- Line rasterization: DDA, Bresenham, Midpoint
- Curve rasterization: Midpoint, Bresenham
- Polygon rasterization
- Filling algorithms: flood fill, boarder fill
- Lecture notes: lesson08.pdf
Lesson09 [03.12] "Visibility Culling and Graphical Pipeline Revisited"
- Wireframe Models
- Visibility Culling: Backface, View Frustum, Detail, Occlusion
- Graphical Pipeline: Transformation and Coordinates
- Lecture notes: lesson09.pdf
Lesson10 [10.12] "Representation and Blending of Images"
- Color Models
- Image Blending Modes
- Lecture notes: lesson10.pdf
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 by email to cg1.2013.hw@gmail.com until next deadline 06:00 (morning)
- 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 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 cg1.2013.hw@gmail.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 cg1.2013.hw@gmail.com with your idea about the chosen project (idea, language, implementation, application). More info in person on M162.
- 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 [23/24.09] "Introduction"
- Introduction
- There is no assignment for this seminar
Exercise01 [30.09/01.10] "Vectors and Matrices"
- Create a simple application for vectors(4x1) and matrices(4x4)
- Info | Sample | Template
- Deadline: 14.10 6:00AM (Morning)
- Please, questions about assignments address to Matej Hudak (mail, in person - M162)
Exercise02 [14/15.10] "Show of Your Curves"
- Create a simple application to compute bezier curve using De Casteljau algorithm.
- Info | Sample | Template
- Deadline: 21.10 6:00AM (Morning)
Exercise03 [21/22.10] "3D Mesh? No Problem"
- We will work with OpenGL library in C#. Library is OpenTK - direct support for OpenGL in C# - OpenGL Intro. This exercise is introduction to 3D CG. We will use Meshomatic library. There is no assignment this week.
- Sample
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.
- Sample | Template
- This assignment will self-destruct 4.11 06:00 (morning). Good luck.
Exercise05 [04/05.11] "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 | Sample | Template
- Deadline: 25.11 6:00AM (Morning)
Exercise06 [25/26.11] "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 | Sample | Template
- 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. Ellipse
- Bonus - curve rasterization. Bezier curve [0.5 points]. Other than bezier curve [2 points]
- Sample | 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 [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.12 6:00AM (Morning)