Costruzione di Interfacce aa 04/05 docente: Paolo
Cignoni |
Orario
|
Concetti e le tecniche di base per la progettazione di applicazioni grafiche tridimensionali interattive.
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.
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
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 |
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.
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
La pagina principale OpenGL.org
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.
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 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.
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