d (→Assignment CG) |
d (→Labs - CG) |
||
(37 intermediate revisions by the same user not shown) | |||
Riadok 30: | Riadok 30: | ||
− | = | + | = Labs - CG = |
+ | <!--- | ||
+ | Guide: Adam Riečický | ||
+ | |||
+ | Mondays at 16:30 on [https://teams.microsoft.com/l/channel/19%3ac7d4a4b8193e42a7ba7bd4c9fbb24599%40thread.tacv2/General?groupId=06d7acf3-8480-4c8f-aa56-6e71fd0ebbb1&tenantId=ce31478d-6e7a-4ce7-8670-a5b9d51884f9 Teams] | ||
+ | |||
+ | == Slides == | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1Zv6LJ8nKIB84ly_YBpJAT8rXI4Vtxh-a2hK7H4ay_Wk/edit?usp=sharing Slides #01] | ||
+ | |||
+ | [https://docs.google.com/presentation/d/17zB9-BhQa0jSjLs8bDOdfUHmf9MJ3dDp5bEQi-82cGE/edit?usp=sharing Slides #02] | ||
+ | |||
+ | [https://docs.google.com/presentation/d/14luAuPU26NjKMbQRf7leVxUwQcGh0ZLBmvQ4uR4Kerc/edit?usp=sharing Slides #03] | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1IXT5HbH1q7LhgGfYJkI5khzezfBqzTT1jnp3d15VWGY/edit#slide=id.p Slides #04] | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1y2rWsXCrkgj68UuLU-ELztN57ofnoie7oG5DmgUJXKI/edit#slide=id.g29c1b949f2_0_0 Slides #05] | ||
+ | |||
+ | == Project == | ||
Choose programming language of your liking (suggested Python/Java/Javascript) | Choose programming language of your liking (suggested Python/Java/Javascript) | ||
− | |||
− | + | Finished project send to ''adam.riecicky@fmph.uniba.sk'' | |
− | '' | + | |
− | Create simple | + | === Stage 1 (3p) === |
+ | ''Deadline 22.11.2020 23:59'' | ||
+ | |||
+ | Create a simple loader and visualizer of meshes, stored in obj. file format. | ||
; Structures | ; Structures | ||
− | + | : implement IndexedFace which contains ''array of Vec4 vertex positions'' and ''array of Int indices'' | |
− | : implement IndexedFace which contains ''array of Vec4 | + | |
; 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 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 functional program: | + | ; Examples of the functional program '''(ignore gui)''': |
− | + | : [https://dai.fmph.uniba.sk/upload/104/e/e2/img1.png screen 1] | |
− | + | : [https://dai.fmph.uniba.sk/upload/a/a9/Img2.png screen 2] | |
− | + | ||
− | === Stage 2 ( | + | === Stage 2 (10p) === |
− | ''Deadline | + | ''Deadline 22.12.2020 23:59'' |
− | + | Add transformation controls to your tool. | |
− | ([https://dai.fmph.uniba.sk/upload/a/ | + | |
+ | ; Structures | ||
+ | : implement math types ''Mat4'' and ''Vec4''. | ||
+ | : Add functions ''Multiply(Mat4, Mat4)'', ''Multiply(Mat4, Vec4)'' OR override the multiplication operator. | ||
+ | ; Transformations - must be implemented using matrix multiplication! | ||
+ | : Add buttons that can control the transformations of the model. When 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 Reset button | ||
+ | : Construct a projection matrix which performs primitive orthogonal projection and transforms the object into the viewport (scale and translate as in the previous stage) | ||
+ | : Always store the original model. Model transformation and projection is done for each point just before rendering | ||
+ | |||
+ | ; Examples of the functional program: | ||
+ | : [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 | ||
+ | : [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 3 (7p) === | ||
+ | ''Deadline 27.1.2021 23:59'' | ||
+ | |||
+ | Enhance existing visualization tool by implementing Blinn-Phong Lightning Model | ||
; Mesh display | ; Mesh display | ||
− | : | + | : Implement back-face culling. Faces on the far side of the mesh should not be rendered |
− | : | + | : Display solid model - each face is 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 | ; Controls | ||
− | : Add interface to control incoming light | + | : Add an interface to control the direction or position of the incoming light |
− | : | + | |
+ | ; 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/7/71/Zpgso_pr2_scr2.png screen 2] | ||
+ | |||
+ | === Bonus Points === | ||
+ | ''Submit with Stage 3'' | ||
+ | |||
+ | Extend your visualization options by the following features to earn bonus points. Attention: Your point total (including bonus points) will not exceed 25 points for exercises from computer graphics part. | ||
+ | |||
+ | ; Material Properties (1p) | ||
+ | : Expose material properties ka, kd, ks, shininess, and color to GUI. Re-render image when the user changes these properties. | ||
+ | |||
+ | ; Lighting Model Selection (2p) | ||
+ | : Implement a switch that allows the selection between two lighting models (Phong vs Blin-Phong). The difference should be minimal but it is a proof of concept. | ||
+ | |||
+ | ; Light Types (3p) | ||
+ | : Add possibility to select the light type (point light, sun/directional light) - the GUI option should also change from "light direction" to "light position". | ||
+ | ---> |
Verzia zo dňa a času 15:28, 16. február 2021
Fundamentals of Computer Graphics and Image Processing 1-AIN-301
Obsah
- 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
- Žára a kol. Moderní počítačová grafika
- Ružický, Ferko: Počítačová grafika a spracovanie obrazu
- Šikudová a kol. Počítačové videnie: Detekcia a rozpoznávanie objektov