Corso di

Interazione Uomo-Macchina: Interfacce Grafiche



Esercitazione di laboratorio

Data di consegna: 29 maggio 1998

Modalita' di lavoro: a gruppi.
I gruppi possono non essere gli stessi delle esercitazioni guidate (sono permesse suddivisioni, migrazioni), i gruppi non possono essere composti da piu' di tre persone), raccomando di segnalarmi le variazioni.
E' possibile farla a casa, anche per conto proprio (non in gruppo), anche in questo caso segnalatemi la cosa.



Lavoro da svolgere

Realizzare un'interfaccia grafica per un'applicazione che visualizza e manipola files contenenti scene formate da oggetti solidi in 3D.

Ogni file contiene una scena OpenGL composta da uno o piu' oggetti solidi, ognuno specificato da:

Il numero di oggetti contenuti e' indicato in testa al file. I vertici di un oggetto sono definiti in un sistema di coordinate (coordinate di modellazione) locale all'oggetto in questione. Il punto di aggancio stabilisce dove e' collocata l'origine del sistema di riferimento locale rispetto al sistema di coordinate globale dell'intera scena.

La sintassi precisa del file e' data dalla seguente grammatica:

I separatori nel file possono essere spazi bianchi, tabulazioni, ritorni a capo, in numero qualsiasi e anche mischiati fra loro.

L'applicazione permette di:

Operazioni disponibili sugli oggetti: Note:
Il file contiene solo la geometria di un oggetto. La posizione del punto di aggancio per un oggetto e' contenuta nel file. Proprieta' grafiche come la modalita' di visualizzazione e il colore non sono contenute nel file: quando un oggetto viene letto, gli vengono attribuiti dei valori iniziali di default.
Per poter compiere operazioni su un singolo oggetto, occorre un meccanismo che permetta all'utente di selezionare un oggetto. Il modo piu' semplice e' dare ad ogni oggetto un "nome" e permettere all'utente di selezionare il nome dell'oggetto su cui vuole compiere le operazioni. E' importantissimo dare all'utente un feedback che gli mostri visivamente quale oggetto ha selezionato (per es. evidenziandolo con un colore piu' intenso, visualizzandone il bounding box, etc.).
Anche per l'operazione di traslazione del punto di ancoraggio, e' importante che l'utente abbia un feedback che gli mostri che cosa sta per fare (per es. visualizzare il vettore di traslazione applicato nel punto).

Operazioni grafiche sulla scena:

La scena deve essere inizialmente visualizzata in 3D con trasformazioni di vista e proiezione tali che la scena sia completamente visibile e non troppo "lontana" rispetto all'osservatore. Poiche' e' prevista la possibilita' di visualizzare oggetti in modalita' solid, dovranno anche usate una o piu' luci per l'illuminazione.

Materiale fornito

Vengono forniti alcuni file di input come esempio, e uno "scheletro" di programma, che implementa gia' le parti relative a: Il sorgente e' start.c, il makefile e' il solito.
Trovate qui la spiegazione di come e' organizzato il codice.

Raccomandazioni

Questo e' un progetto di interfacce grafiche. Pertanto, sara' tenuto conto non solo del fatto che tutte le funzioni richieste siano presenti nell'interfaccia sviluppata, ma anche e di quanto facile e gradevole risulta l'uso dell'interfaccia stessa per l'utente.

Materiale da consegnare