Nuova Laurea in Informatica

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

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 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