Costruzione di Interfacce aa 04/05

docente: Paolo Cignoni
email: p.cignoni 'at' isti.cnr.it(iniziate sempre il soggetto delle vostre mail con il tag [CI])

(tutti gli altri indirizzi che trovate in giro (con o senza 'p.' , @iei.pi.cnr.it etc, puntano sempre allo stesso indirizzo...)

Orario
Materiale Didattico
Lucidi
FAQ
Progetto


Obiettivi

Concetti e le tecniche di base per la progettazione di applicazioni grafiche tridimensionali interattive.

Descrizione

Il corso introduce alle problematiche relative alla progettazione e realizzazione di applicazioni interattive che facciano uso di grafica tridimensionale. Vengono fornite le basi teoriche e algoritmiche per la modellazione geometrica e il rendering di scene tridimensionali e gli strumenti per realizzare sistemi basati su OpenGL in ambiente Windows.

Esame

Per il primo e secondo appello 04/05 è possibile fare un progetto più breve, con specifiche più  precise e da completare e consegnare in un tempo limitato. Altrimenti l'esame del corso è progettuale e si svolge, come gli altri anni, secondo le modalità riportate nella sezione Progetto.

Compitini : risultati

Primo appello aa 04/05: specifiche del progetto breve e risultati

Secondo appello aa 04/05: specifiche del progetto breve e  risultati


Programma



Orario

Ricevimento, su appuntamento, preferibilmente il lun/mer/ven in tarda mattinata, nel mio ufficio presso l'ISTI all'area di ricerca CNR, o per chi non vuole spostarsi, dopo la lezione nei lab del polo didattico marzotto.



Giorno

Aula

dalle

alle

Lun

A

14:00

16:00

Mer

A

14:00

16:00

Ven

A

16:00

18:00



Forum

http://it.groups.yahoo.com/group/CostruzioneDiInterfacce/

Per tutte le domande riguardanti i temi del corso ho messo su un forum su yahoo. Vi chiedo di mandare le vostre domande li' dove le risposte potranno essere consultate anche da altri. Usate il mio indirizzo di email solo per ricevimenti e discussioni di progetti. Ovviamente nel forum potete anche rispondere a quesiti posti da altri studenti, nel qual caso, terro' in buona considerazione il fatto. Quando sollevate un problema nel forum e poi lo risolvete da soli e' buona educazione dire a tutti come avete fatto.

Riferimenti bibliografici

Grafica

C++



Materiale Didattico

Software

Come studenti del corso dovreste aver diritto ad una licenza studenti di Windows XP Professional e di Visual Studio .Net 2003.

Per la distribuzione del software di Visual.Studio .Net dovete contattare direttamente gli operatori. Dovrebbe essere necessario che abbiate attivato l'account per CI. Maggiori info a proposito della distribuizione del software cui avete diritto le trovate a http://www.cli.di.unipi.it/services.php

OpenGL

La pagina principale OpenGL.org

SDL

La pagina principale libsdl.org

Le librerie da scaricarsi ed installarsi a casa sono quelle che trovate a http://www.libsdl.org/download-1.2.php

in particolare vi servono le developement libraries. Il package con i sorgenti puo essere utile giusto per curiosita' e quello chiamato 'runtime libraries' contiene solo le dll, che chiaramente non vi bastano per compilare.

Archivi di modelli 3d da utilizzare liberamente



Librerie varie:



Lucidi

FAQ

Q: Come faccio ad iscrivermi e ad avere l'estensione dell'account per questo corso?
A: Mandatemi una mail, ascii, con soggetto "[CI] account" (senza virgolette :) contenente soltanto una riga con, nell'ordine, cognome nome matricola login, nient'altro e separati da spazi.

Q: Come faccio ad iscrivermi al forum del corso?
A: clicca qui.

Q: Ho sentito parlare di Compitino come funziona?
A: Test a risposte multiple. Vale 5 punti da sommare a quelli che si ottengono con la valutazione del progetto. Chi non fa o rifiuta il compitino, oltre alla discussione del progetto, deve sostenere un esame orale. Esempio di compitino

Q: Ho fatto il corso di CI l'anno scorso, che progetto devo fare?
A: Visto che il contenuto del corso e le specifiche dell'esame standard e' rimasto praticamente invariato non penso ci siano problemi.

Q: Ho fatto il compitino di CI l'anno scorso lo devo rifare?
A: Solo se lo desiderate (e.g. per prendere un voto migliore)

Q: Ho fatto il corso di CI l'anno scorso, voglio consegnare il progetto entro il primo appello devo rifare il compitino?
A: Solo se lo desiderate (e.g. per prendere un voto migliore)

Q: Quale era la soluzione del compitino di quest'anno?
A: 1,2,3,1,2, 3,2,3,1, 1,2,3,1,1,3, 1,2,1,2,3

Q: Possiamo fare il progetto da soli?
A: NO, e' la dimensione di gruppo minima per un progetto e di due o tre studenti. Il max e' 4.

Q:Posso fare il progetto in: Java || C# || Delphi || linguaggio != C++ ?
A: No, il progetto deve essere in C++ e usare OpenGL

Q: Come faccio per avere/installare XP .Net?
A: Dagli operatori del centro di calcolo.

Q: Posso usare un'ide diversa da .net (e.g. .net 2002, Visual Studio 6.0 Eclipse, Kdev ecc)?
A: Si' ma tenete conto che io distribuisco il src garantendo che compili su .net 2003.

Q: Ho fatto un programma e non funziona. Come mai?
A: Quando qualcosa non funziona siate, per favore, precisi. Cercate sempre di sapermi dire cosa fallisce: Compilazione, linking o durante l'esecuzione.
Se fallisce la compilazione o il linking, non arrendetevi subito. Leggete l'help del visual studio riguardo all'errore e cercate di capire perché non compila. Provate sempre a compilare il progetto che non funziona sulla macchina di un vostro collega.
Se fallisce durante l'esecuzione usate il debugger per vedere dove avviene il fallimento del programma. Se non riuscite ad uscirne fuori da soli, provate a chiedere aiuto ad un collega. Se anche questo tentativo fallisce, segnatevi il più dettagliatamente possibile come avviene il fallimento (messaggi di errore ecc), e insieme ai colleghi con cui avete provato, venite a chiedermi aiuto.

 

Il Progetto

Il progetto finale di Costruzione di Interfacce ha come oggetto la realizzazione di due applicazioni e una pagina web di descrizione del progetto. Le due applicazioni devono essere scritte in C++ e devono sfruttare OpenGL per il rendering tridimensionale e in pratica costituiscono un semplice gioco a livelli e l'editor necessario per costruire i livelli. 

Le due applicazioni quindi si integrano a vicenda, la prima applicazione, detta game editor, ha un'interfaccia più complessa, che deve essere realizzata in QT, ed ha come finalità la creazione di livelli che dovranno essere utilizzati dalla seconda applicazione detta game player e che e' un videogioco  dalla struttura ragionevolmente semplice in cui gli elementi del gioco sono 3D. Nota, non e' necessario che il gioco sia inerentemente tridimensionale, pacman in cui gli elementi sono 3d, ma che si svolge come sempre su di un piano va bene. Certo se il gioco e' inerentemente 3D non guasta. Puo' esservi richiesto esplicitamente se il gruppo e' di 3 o 4 persone.  

Normalmente capiterà che il game editor sia di gran lunga la più complessa delle due applicazioni, e deve condividere con il player il codice per visualizzare in opengl i livelli in una modalita preview. Ovviamente l'editor userà opengl per mostrare il documento durante l'editing e QT per le parti di interfaccia fuori dal contesto opengl. L'editor deve permettere di visualizzare e modificare l'area di gioco permettendo di aggiungere, selezionare, modificare, e cancellare elementi del gioco come ad esempio ostacoli o nemici. La selezione degli elementi deve avvenire per semplice click sugli oggetti in questione. I livelli cosi' costruiti devono poter essere salvati e ricaricati dall'editor. I file salvati devono essere in formato xml. Si puo' assumere che il piano di gioco sia discretizzato in una griglia di dimensione fissabile dall'utente e che gli elementi del gioco possano essere piazzati solo in posizioni discrete.

Il player sara' un’applicazione fullscreen basata su SDL che dopo qualche schermata di intro permette semplicemente di giocare in sequenza i livelli creati. 

Ricordatevi che il vostro ruolo è quello di progettare e realizzare un'applicazione e non quello di disegnare/modellare oggetti e icone. Anche se è divertente non perdete troppo tempo a disegnare i modelli 3d del progetto, prendeteli pure dalla rete.   

La scelta del progetto è ragionevolmente libera (purché ovviamente rispecchi quanto detto sopra), comunque prima di mettervi a delineare con precisione le specifiche del vostro progetto è meglio che veniate a fare due parole con me, al termine della lezione, per sapere se, a grandi linee, il progetto è ben proporzionato. In mancanza di idee potete scegliere uno degli Esempi di Progetto. In ogni caso quando iniziate il progetto mandatemi una mail con:

Il progetto viene consegnato masterizzato su CD che rimane al docente. Il CD contenente il progetto deve contenere un documento hmtl che descrive l'applicazione con: 

La documentazione minima consiste in un documento html con una descrizione del progetto e un breve tutorial step-by-step di una tipica sessione d'uso del sistema. Il progetto deve essere realizzato in gruppo (da due a quattro persone), ovviamente più il gruppo è numeroso più mi aspetto sia consistente il progetto.

Non mettete installatori automatici. Lo zip con il codice e' sufficiente.

Esempi di Progetto:

Labirinto: Simulazione di un antico gioco da bar anni 60/70. Il giocatore deve attraversare con una pallina un labirinto che è sparso di trabocchetti (buche, calamite, colla, ghiaccio). Il giocatore controlla la pallina cambiando, con il mouse, l'inclinazione del piano del labirinto. L'editor permette di costruire il labirinto e di piazzare i vari trabocchetti, e di configurare l'apparenza visiva (colore texture ecc) degli elementi del gioco.

Pacman-Like: Gioco di labirinto con palline da raccogliere e nemici che inseguono (con ben scarsa IA), vari bonus e varianti. Al solito l'editor permette di costruire il labirinto piazzare le palline da raccogliere, i bonus, le posizioni di partenza dei nemici, ecc


last modified on 2/2/05