d (Project)
(Project)
Riadok 48: Riadok 48:
 
Finished project send to ''adam.riecicky@fmph.uniba.sk''
 
Finished project send to ''adam.riecicky@fmph.uniba.sk''
  
==== Stage 1 (13p) ====
+
==== Stage 1 (3p) ====
''Deadline 9.12.2018 23:59''
+
''Deadline 24.11.2019 23:59''
  
Create a simple visualization and transformation tool for meshes, stored in obj. file format.
+
Create a simple loader and visualizer of meshes, stored in obj. file format.
  
 
; Structures
 
; Structures
: implement math types Mat4 and Vec4. Add functions Multiply(Mat4, Mat4) and Multiply(Vec4, Mat4).
 
 
: implement IndexedFace which contains ''array of Vec4 vertex positions'' and ''array of Int indices''
 
: implement IndexedFace which contains ''array of Vec4 vertex positions'' and ''array of Int indices''
 
; Mesh import and display
 
; Mesh import and display
 
: load mesh from Wavefront file (.obj). [[https://dai.fmph.uniba.sk/upload/104/d/d1/obj_files.zip Download test models here]]. Assume that all imported models are scaled to box (2x2).
 
: load mesh from Wavefront file (.obj). [[https://dai.fmph.uniba.sk/upload/104/d/d1/obj_files.zip Download test models here]]. Assume that all imported models are scaled to box (2x2).
: display wireframe model in the center of a screen so that Y-axis of model directs upwards and X-axis directs right. (Z is ignored)
+
: display wireframe model in the center of a screen so that the Y-axis of model directs upwards and X-axis directs right. (Z is ignored)
 +
 
 +
; Examples of the functional program '''(ignore gui)''':
 +
: [https://dai.fmph.uniba.sk/upload/104/e/e2/img1.png screen 1] = Import only
 +
: [https://dai.fmph.uniba.sk/upload/a/a9/Img2.png screen 2] = Import only
 +
 
 +
==== Stage 2 (10p) ====
 +
''Deadline 15.12.2019 23:59''
 +
 
 +
Add transformation controls to your tool.
 +
 
 +
; Structures
 +
: implement math types Mat4 and Vec4. Add functions Multiply(Mat4, Mat4) and Multiply(Vec4, Mat4).
 
; Transformations - must be implemented using matrix multiplication!
 
; Transformations - must be implemented using matrix multiplication!
: Add buttons which can control transformations of the model. Each time user requests transformation by clicking a button, a model matrix should be constructed. (Optionally added to the previous transformation)
+
: Add buttons that can control the transformations of the model. Each time a user requests transformation by clicking a button, a model matrix should be constructed. (Optionally added to the previous transformation)
 
: Motel matrix can be reset to identity using a button
 
: Motel matrix can be reset to identity using a button
 
: Construct projection matrix which performs primitive orthogonal projection and transforms the object into the viewport
 
: Construct projection matrix which performs primitive orthogonal projection and transforms the object into the viewport
Riadok 70: Riadok 81:
 
: [https://dai.fmph.uniba.sk/upload/8/81/Img3.png screen 3] = Imported, translated by -0.6 in X-axis, rotated by 0.6 rad around Y-axis, rotated by 0.4 rad around Z-axis and scaled by factor 1.1, in order  
 
: [https://dai.fmph.uniba.sk/upload/8/81/Img3.png screen 3] = Imported, translated by -0.6 in X-axis, rotated by 0.6 rad around Y-axis, rotated by 0.4 rad around Z-axis and scaled by factor 1.1, in order  
  
==== Stage 2 (7p) ====
+
==== Stage 3 (7p) ====
''Deadline 6.1.2018 23:59''
+
''Deadline 12.1.2020 23:59''
  
 
Enhance existing visualization tool by implementing Blinn-Phong Lightning Model
 
Enhance existing visualization tool by implementing Blinn-Phong Lightning Model
  
 
; Mesh display
 
; Mesh display
: Implement back-face culling. Faces on the far side of mesh should not be rendered
+
: Implement back-face culling. Faces on the far side of the mesh should not be rendered
 
: Display solid model - each face is a drawn as a polygon filled with color (no edges)
 
: Display solid model - each face is a drawn as a polygon filled with color (no edges)
 
: Final face color should be calculated as multiples of base color and intensity calculated by Blinn-Phong
 
: Final face color should be calculated as multiples of base color and intensity calculated by Blinn-Phong
 
; Controls
 
; Controls
: Add an interface to control a direction of incoming light
+
: Add an interface to control the direction of incoming light
  
 
Examples of the functional program:
 
Examples of the functional program:
 
[https://dai.fmph.uniba.sk/upload/b/bd/Zpgso_pr2_scr1.png screen 1],
 
[https://dai.fmph.uniba.sk/upload/b/bd/Zpgso_pr2_scr1.png screen 1],
 
[https://dai.fmph.uniba.sk/upload/7/71/Zpgso_pr2_scr2.png screen 2]
 
[https://dai.fmph.uniba.sk/upload/7/71/Zpgso_pr2_scr2.png screen 2]

Verzia zo dňa a času 12:39, 11. november 2019

Fundamentals of Computer Graphics and Image Processing 1-AIN-301

Course information sheet >

Lecture
Wednesday 9:50, M-I
Excercises
Monday 18:10, F1-248

Grading

You can get 100 points (p) during semester, where 1pt = 1% of final grade

  • Final writen exam: 50p
  • Excercises: 50p (with minimum of 30p)
    • 4 home assignments: 4x10p (2 from CG part and 2 from IP)
    • Attendance: 10x1p

Materials




Excercises CG

Slides

Slides #01

Slides #02

Slides #03

Slides #04

Project

Choose programming language of your liking (suggested Python/Java/Javascript)

Finished project send to adam.riecicky@fmph.uniba.sk

Stage 1 (3p)

Deadline 24.11.2019 23:59

Create a simple loader and visualizer of meshes, stored in obj. file format.

Structures
implement IndexedFace which contains array of Vec4 vertex positions and array of Int indices
Mesh import and display
load mesh from Wavefront file (.obj). [Download test models here]. Assume that all imported models are scaled to box (2x2).
display wireframe model in the center of a screen so that the Y-axis of model directs upwards and X-axis directs right. (Z is ignored)
Examples of the functional program (ignore gui)
screen 1 = Import only
screen 2 = Import only

Stage 2 (10p)

Deadline 15.12.2019 23:59

Add transformation controls to your tool.

Structures
implement math types Mat4 and Vec4. Add functions Multiply(Mat4, Mat4) and Multiply(Vec4, Mat4).
Transformations - must be implemented using matrix multiplication!
Add buttons that can control the transformations of the model. Each time a user requests transformation by clicking a button, a model matrix should be constructed. (Optionally added to the previous transformation)
Motel matrix can be reset to identity using a button
Construct projection matrix which performs primitive orthogonal projection and transforms the object into the viewport
Always store the original model. Do model transformation and projection for each point only before rendering
Examples of the functional program
screen 1 = Import only
screen 2 = Import only
screen 3 = Imported, translated by -0.6 in X-axis, rotated by 0.6 rad around Y-axis, rotated by 0.4 rad around Z-axis and scaled by factor 1.1, in order

Stage 3 (7p)

Deadline 12.1.2020 23:59

Enhance existing visualization tool by implementing Blinn-Phong Lightning Model

Mesh display
Implement back-face culling. Faces on the far side of the mesh should not be rendered
Display solid model - each face is a drawn as a polygon filled with color (no edges)
Final face color should be calculated as multiples of base color and intensity calculated by Blinn-Phong
Controls
Add an interface to control the direction of incoming light

Examples of the functional program: screen 1, screen 2