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 e GLUT in ambiente Linux
Orario
- Lunedì 9-11 Aula 710
- Giovedì 9-11 e 11-13 Laboratorio SW1
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:
Tesio 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 (21/10/02): notizie sul corso - file
pdf
- Lezione 1 (21/10/02): Introduzione alla compute graphics - file
pdf
- Lezione 2 (23/10/02): Architettura di un sistema grafico - file
pdf
- Lezione 3 (23/10/02 - 25/10/02): Programmazione grafica: primi passi
- file
pdf
- Lezione 4 (28/10/02): Programmazione grafica: disegno e interazione
in 2D - file
pdf
- Lezione 5 (4/11/02): Trasformazione Geometriche I - file
pdf
- Lezione 6 (7/11/02): Trasformazioni Geometriche II - file
pdf
- Lezione 6 Esercizio (7/11/02 - 18/11/02): Trasformazioni rigide 3D -
file
lucidi scansiti
- Lezione 7 (18/11/02): Trasformazioni di modellazione in OpenGL - file
pdf
- Lezione 8 (21/11/02 - 2/12/02): Trasformazioni di vista in OpenGL - file
pdf
- Lezione 9 (2/12/02): Picking - file
pdf
- Lezione 10 (2/12/02 - 9/12/02 - 16/12/02) - Illuminazione e shading
- file
pdf
- Lezione 11 (16/12/02) - Rasterizzazione - file
pdf
- Lezione 10 (13/1/03) - Clipping e HSR - 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
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
FAQ
|