Nuova Laurea in Informatica

Corso Grafica Interattiva (a.a. 2003-2004)

DISI
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