Computer Graphics

Marco Tarini
Università degli Studi di Milano
2021/2022

Risulati del 2ndo compitino: [qui]

Docente:
Marco Tarini (me!)

Orario:
Martedì 10:30..12:30 - Aula Tau, via Celoria 18
Giovedì 14:30..16:30 - Aula Alfa, via Celoria 18

Lingua:
Italiano

Modalità:
Le lezioni sono in presenza.
L'aula sarà accessibile solo agli studenti in possesso di un certificato Covid-19 (green pass).
Secondo il regolamento dell'Università, gli studenti che non possono partecipare a causa di (a) restrizioni di viaggio (dall'estero), (b) quarantena, o (c) problemi di salute, possono seguire le lezioni in live streaming. Seguire il link qui sotto.
Se possibile, avvertire il docente in anticipo, quando si progetta di seguire una lezione in live streaming.
Live Streaming link: Microsoft Teams meeting.

Calendario & slide:
I lucidi, resi disponibili dopo ogni lezione, sono intesi come un supporto visivo alla lezione, e costituiscono anche un diario dettagliato degli argomenti svolti; non sono necessariamente un materiale di studio autoesplicativo e sufficiente alla preparazione.
Le "PREVIEW slides" sono lucidi forniti in anteprima prima della lezione, al solo scopo di consentire agli studenti che vogliano usufuirne per seguire la lezione più agevolmente. Si consiglia di scaricare la versione riveduta e corretta fornita dopo la lezione.

Il seguente calendario è soggetto a cambiamenti!

0-00 2022-03-01
10:30..12:30
Martedì
Aula MN
Presentazione del corso.
Introduzione - cosa è e a cosa serve la CG
PARTE I: 3D data structures
1-00 2022-03-08
10:30..12:30
Martedì
Aula MN
Modelli 3D: intro generale.
Nuovole di punti - part I.
MATH-01: Punti e vettori - somma, differenza, norma.
1-01 2022-03-10
14:30..16:30
Giovedì
Aula Alfa
Nuovole di punti - part II.
1-02 2022-03-15
10:30..12:30
Martedì
Aula MN
Mesh Poligonali: definizioni, surface reconstruction.
1-03 2022-03-17
14:30..16:30
Giovedì
Aula Alfa
MATH-02: Interpolazione e coordinate baricentriche.
Mesh Poligonali: attributi.
1-04 2022-03-22
10:30..11:30
Martedì
Teledidattica
Mesh Poligonali: Regolarità; Modellazione.
022-03-24
14:30..16:30
Giovedì
Aula Alfa
LEZIONE SOSPESA
1-05 2022-03-29
10:30..12:30
Martedì
Teledidattica
MATH-03: Prodotto Cross.
Mesh Poligonali: computo normali; geometry processing 1/2.
1-06 2022-03-31
14:30..16:30
Giovedì
Teledidattica
Mesh Poligonali: gemetry processing 2/2.
Mesh Poligonali: data structures.
1-07 2022-04-04
10:30..12:30
Martedì
Teledidattica
Mesh Poligonali: UV-maps e tessiture.
1-08 2022-04-07
14:30..16:30
Giovedì
Aula Alfa
Curve e superfici parametriche.
1-09 2022-04-08
14:30..16:30
Venerdì
Aula Beta
Modelli volumetrici: mesh poliedrali, voxel, modelli impliciti.
1-10 2022-04-12
10:30..12:30
Martedì
Aula MN
Modelli volumetrici: oct-tree e poisson reconstruction.
Modelli regolari: hieght field, range scan.
Note su forma e normali.
1-xx 2022-04-26
10:30..12:30
Martedì
Aula Omega
compitino parte 1
PARTE II: 3D rendering
2-00 2022-04-28
14:30..16:30
Giovedì
Aula Alfa
Subdivision surfaces: cenni.
Immagini digitali e colori.
Ray-tracing 1/2: intro e ray-casting.
2-01 2022-05-03
10:30..12:30
Martedì
Aula MN
MATH-04: Prodotto Dot.
Ray-tracing 2/2: note matematiche.
Rasterization-based: intro.
2-02 2022-05-05
14:30..16:30
Giovedì
Aula Alfa
MATH-05: Trasformazioni affini 1/3.
2-03 2022-05-10
10:30..12:30
Martedì
Aula MN
MATH-05: Trasformazioni affini 2/3.
2-04 2022-05-12
14:30..16:30
Giovedì
Aula Alfa
MATH-05: Trasformazioni affini 3/3.
Trasformazioni nel rendering: intro.
2-05 2022-05-17
10:30..12:30
Martedì
Aula MN
Trasformazioni nel rendering: Model.
Trasformazioni nel rendering: View.
2-06 2022-05-19
14:30..16:30
Giovedì
Aula Alfa
Trasformazioni nel rendering: Projection.
2-07 2022-05-24
10:30..12:30
Martedì
Aula Tau

Note su GPU e API grafiche.
Rasterizzazione di primitive.
PROG-00: intro.
2-08 2022-05-26
14:30..16:30
Giovedì
Aula Alfa
PROG-01: mini-mesh, scena, animazione.
         [cgLab01.html]
2-09 2022-05-31
10:30..12:30
Martedì
Aula Tau
Rimozione superfici nascoste.
Partecipating media.
Lighting (1/2).
[cgLab02.html]
2-10 2022-06-07
10:30..12:30
Martedì
Aula Tau
Lighting (2/2).
[cgLab03.html]
PROG-02: import di una mesh in three.js.
2-xx 2022-06-09
14:30..16:30
Giovedì
Aula GAMMA
compitino parte 2

Libri di testo suggeriti:
(Nessun libro di testo è strettamente necessario)
Per la parte matematica: Mathematics for 3D Game Programming and Computer Graphics
Un sottoinsieme degli argomenti: Introduction to Computer Graphics A Practical Learning Approach

Modalità di esame:
L'esame si può superare in due modi:

Gli scritti sono somministrati in forma di prova Moodle eseguita su un computer in aula e sono costituiti da una numerosa serie di piccole domande ed esercizi.

Link ufficiali:
Pagina del corso su Ariel
Programma del corso (dal manifesto)
Current rules for lectures at Unimi

Alcuni software pubblici citati a lezione:
Meshlab, una suite gratuita e OpenSource per geometry processing
Sculptris Alpha, una software gratuito per digital sculpting
Wings 3D, un software gratuito e OpenSource per direct low-poly modelling
Blender, una software gratuito e OpenSource per modellazione 3D
Instant Meshes, una software per remeshing semiregolare
Meshes Repair Tool, una collezione di software specializzato per mesh repairing

Link di iteresse citati a lezione:
Polygonal Mesh processing, un libro introduttivo sul mesh processing (non è un libro di testo del corso)
Symposium on Geometry Processing 2019, un simposio tenuto ad UniMi nel 2019 sul Geometry Processing

Dataset:
Alcune Point Clouds di esempio: [1] [2]
Sketchfab: un repository di point clouds catturate

Info sul mini-lab di C++:

Cosa non è: Il mini-lab di C++ non è parte del corso di Computer Graphics (e non è rilevante per il suo esame), ma può essere di interesse per gli studenti che seguono il corso di CG, dato che il C++ è uno dei linguaggi più usati nella CG, e che il mini-lab userà come esempi alcuni dei concetti visti nel corso di CG. Ai fini del corso di CG, non è in alcun modo necessario partecipare a questo mini-lab; le informazioni sul mini-lab sono messe qui solo per convenienza.

Cosa è: E' una piccola serie di lezioni pratiche aperte, nelle quali i partecipanti scrivono insieme al docente una libreria in C++ per gestire strutture dati utili alla Computer Graphics e alla matematica utilizzata in CG (punti, vettori, etc).

Come partecipare: Basta presentarsi in Aula 400 (via Celoria 18) i Lunedì dalle ore 17:30 alle ore 18:30, con un laptop funzionante (e con batteria ben carica!) e un IDE qualsiasi (come per esempio Visual Studio per C++) in grado di compilare un programma Hello World in C++. NOTA: valgono le regole per la prenotazione dei posti in aula. E' anche disponibile il live streaming

Codice sorgenti:
00 (07 Mar 2022): minilab00.zip
01 (14 Mar 2022): minilab01.zip
02 (21 Mar 2022): minilab02.zip
03 (28 Mar 2022): minilab03.zip
04 (04 Apr 2022): minilab04.zip
05 (11 Apr 2022): minilab05.zip
06 (02 Mag 2022): minilab06.zip
07 (09 Apr 2022): minilab07.zip (qui: un raytracing funzionante!)
08 (16 Apr 2022): minilab08.zip
09 (23 Apr 2022): minilab09.zip
10 (30 Apr 2022): minilab10.zip
11 (06 Apr 2022): minilab11.zip (finale)