Ricevimento studenti: martedì 14:30-16:30
Pre-requisiti
Per seguire questo corso è necessario avere assimilato i concetti
e le nozioni seguenti (tra parentesi i corsi di riferimento):
-
Linguaggio C, strutture dati di base (Programmazione)
-
Strutture dinamiche, puntatori (Algoritmi e strutture dati)
-
Programmazione Object Oriented (Linguaggi di programmazione)
-
Programmazione event-driven, progrttazione di interfacce (Interfacce utente)
-
Vettori, matrici, trasformazioni di coordinate (Geometria) - Auspicabile
ma non obbligatorio
Obiettivi
-
Apprendimento dei fondamenti teorici, delle tecniche e delle metodologie
necessarie alla progettazione e realizzazione di applicazioni interattive
di grafica tridimensionale (3D)
-
Elementi di strutture dati ed algoritmi per la modellazione geometrica
e la modellazione di scene 3D
-
Apprendimento ed uso di strumenti per la progettazione di sistemi grafici
interattivi basati su C++, OpenGL, GLUT e GLUI in ambiente Linux
Orario
-
Lunedì 9-11 Aula 710
-
Venerdì 14-16:35
-
Laboratorio SW1 lunedì o venerdì al posto della lezione (su
avviso)
Testi consigliati
Tutti i testi (esclusi quelli in rete) dovrebbero essere disponibili in
biblioteca.
Testo base per la computer graphics:
-
Edward Angel, 1999, Interactive Computer Graphics: A top-down approach
with OpenGL (2nd edition) Addison Wesley, ISBN: 020138597X
Testi di approfondimento per la computer graphics:
-
Foley, van Dam, Feiner, Hughes, Computer Graphics Principles and Practice
(Second edition in C), 1996, Addison Wesley, 1175 pages.
-
Hearn, Baker, Computer Graphics (2nd edition), 1994, Prentice Hall, 652
pages.
-
Hill, Computer Graphics using Open GL, 2000, Prentice Hall, 922 pages.
Testo base per OpenGL:
-
Mason Woo, Jackie Neider, Tom David, Dave Shriner, 1999, OpenGL 1.2 Programming
Guide, 3rd edition: the official guide to learning OpenGL, Version 1.2,
Addison Wesley, ISBN:0201604582
Testo base per GLUT:
Testo di base per GLUI:
Testo base per C++:
-
M. Black, Java to C++ transition tutorial: www.cs.brown.edu/courses/cs032/resources/C++tutorial.html
-
B. Stroustrup, The C++ Programming Language (3rd edition). Addison
Wesley Longman, Reading, MA. 1997. ISBN 0-201-88954-4. 920 pages
disponibile anche in italiano:
B. Stroustrup: C++ Linguaggio, Libreria Standard, Principi di Programmazione
3a Edizione, Addison Wesley Italia, 1015 pagine, 2000, ISBN:8871920783.
1015 pagine
oppure:
S. Oualline, C++ Corso di programmazione, O’Reilly-Jackson libri, 1998,
ISBN: 88-256-1022-X. 558 pagine.
Va bene qualunque altro manuale di C++
Materiale didattico
Per il materiale di laboratorio fare riferimento alla pagina apposita.
Lezioni:
-
Lezione 0 (6/10/03): notizie sul corso - file
pdf
-
Lezione 1 (6/10/03): Introduzione alla compute graphics - file
pdf
-
Lezione 2 (10/10/03-13/10/03): Architettura di un sistema grafico - file
pdf
-
Lezione 3 (13/10/03): Programmazione grafica: primi passi - file
pdf
-
Lezione 4 (13/10/03 - 17/10/03): Programmazione grafica: disegno e interazione
in 2D - file
pdf
-
Lezione 5 (17/10/03 - 20/10/03 - 7/11/03): Trasformazione Geometriche I
- file
pdf
-
Lezione 6 (7/11/03): Trasformazioni Geometriche II - file
pdf
-
Lezione 6 Esercizio (7/11/03): Trasformazioni rigide 3D - file
lucidi scansiti
-
Lezione 7 (10/11/03): Trasformazioni di modellazione in OpenGL - file
pdf
-
Lezione 8 (14/11/03): Trasformazioni di vista in OpenGL - file
pdf
-
Lezione 9 (24/11/03): Picking - file
pdf
-
Lezione 10 (24/11/03 - 1/12/03 - 5/12/03) - Illuminazione e shading -
file
pdf
-
Lezione 11 (22/12/03) - Rasterizzazione -
file
pdf
Risorse software:
OpenGL
-
La pagina principale www.opengl.org
(notizie utili, documentazione. C'è anche il software open source
di prova, ma non è consigliato)
-
Mesa (versione public domain di OpenGL): http://www.mesa3d.org
(download sw. consigliata)
GLUT
GLUI:
Esami
Per le date degli esami vedere il
web
Regolamento:
-
Il primo progetto (2D) non si recupera e deve essere obbligatoriamente
consegnato entro il 20 febbraio (chi non consegna fa tutto il prossimo
anno).
-
Daremo a giugno, con scadenza a settembre, un testo di recupero SOLO SUL
SECONDO PROGETTO (3D).
-
Per la sessione invernale, si puo' dare l'orale solo se e' gia' stato consegnato
almeno il primo progetto. Per le sessioni successive si puo' dare l'orale
solo se sono stati consegnati entrambi i progetti.
-
Fatto l'orale, il secondo progetto va comunque consegnato entro febbraio
oppure settembre (usufruendo del recupero) pena la perdita dei voti del
primo progetto e dell'orale.
-
Invece i voti dei due progetti rimangono validi a tempo indeterminato (a
discrezione del docente se i tempi diventano molto lunghi....) prima di
dare l'orale
Lo spirito di queste regole, che possono sembrare restrittive, e' che non
abbia senso dare l'orale senza avere fatto pratica con lo sviluppo dei
progetti. Le date degli appelli della sessione invernale saranno messe
piuttosto in avanti appunto per consentire a tutti di completare almeno
la prima parte prima di dare l'esame.
L'estensione della data di consegna oltre il 20/2, come chiesto da alcuni,
e' in contrasto con una delibera presa nel CCS del 13/11/03 che impone
di evitare conflitti tra lo svolgimento di progetti e le lezioni del secondo
semestre.
Pertanto non e' possibile.
FAQ
Q: Ho scelto il curriculum software/sistemi quindi non ho fatto
MC2 e geometria. Posso lo stesso seguire questo corso?
A: Sì. Potrebbe essere necessario studiare un pochino
di più per capire le trasformazioni di coordinate.
Q: Come mi procuro OpenGL/MESA e GLUT?
A: Vedere i link nella sezione materiale didattico.
Q: Posso fare il progetto in un linguaggio diverso da C++ e/o
con un’API diversa da OpenGL e/o con un toolkit diverso da GLUT?
A: NO. Si devono usare tutte queste risorse e nessun altra non
esplicitamente proposta nell’ambito del corso.
Q: Posso sviluppare in ambiente Windows?
A: Sì, purché il progetto poi compili e funzioni
anche in ambiente Linux. Le risorse necessarie a sviluppare sono disponibili
(gratis) anche sotto Windows. Non si accetterà però nulla
che non funzioni sotto Linux.
Q: Le lezioni/labo si sovrappongono con quelle di altri corsi
che seguo. Cosa posso fare?
A: Se il problema è il labo, possiamo cercare di cambiarvi
di turno. In generale: se siete in una situazione “standard” fatecelo presente
e vedremo di modificare gli orari se possibile. Se invece siete in una
situazione particolare (esami indietro, lavoro, …) fatecelo presente lo
stesso, ma non credo potremo farci granché.
Q: Ho fatto un programma e non funziona. Come mai?
A: Quando qualcosa non funziona siate, per favore, precisi.
Cosa fallisce? compilazione, linking, esecuzione. Se fallisce la compilazione
o il linking, non arrendetevi subito: leggete i messaggi del compilatore
riguardo all'errore e cercate di capire perché non compila. Se fallisce
durante l'esecuzione usate il debugger per vedere dove avviene il fallimento
del programma. Se non riuscite da soli, provate a chiedere aiuto ad un
collega. Se anche questo tentativo fallisce, segnatevi dettagliatamente
come avviene il fallimento e, insieme ai colleghi con cui avete provato,
venite a chiederci aiuto. Negli orari di ricevimento! |
Pre-requisiti
Obiettivi
Orario
Testi di Riferimento
Materiale didattico
Laboratorio
Esami
FAQ
|