Grafica (C.d.S. Magistrale in Informatica)
Fondamenti di Computer Graphics (C.d.S. Magistrale in Ingegneria Informatica)
Grafica (C.d.S. Magistrale in Matematica)

Progetto A.A.2017/18 assegnato il 27/04/2018

Obiettivo

Sviluppare un "3D GAME" usando OpenGL (GL, GLU, GLEW + GLUT o SDL2) e linguaggio C/C++ in almeno uno dei seguenti ambiente: PC/Linux, MacOs, Windows-Mingw.

Gruppi di lavoro

Il progetto e' individuale.

Testo

Si progetti ed implementi un videogioco 3D interattivo composto da almeno un oggetto principale di tipo mesh poligonale caricato da file. Si definisca un'opportuna scenografia colorando/illuminando e texturando gli oggetti della scena. Sono banditi i videogioco denominati ''sparatutto'' e ''labirinti'' e caldeggiati i videogiochi "automotive 3D games" (per esempio "3D Racing Games", ma con veicoli differenti da un'auto)!!

Richieste grafiche obbligatorie

  • geometria 3D e vista (gli oggetti devono essere visualizzati in proiezione prospettica);
  • input utente (si gestisca l'interazione 3D usando sia la tastiera che il mouse e opzionalmente un joypad);
  • illuminazione e sfumatura (gli oggetti 3D devono essere illuminati da almeno una luce);
  • texture mapping, sia dando le coordinate texture, che generandole in modo automatico (almeno due oggetti 3D devono avere una texture applicata e almeno una deve essere una foto personale)
  • navigazione nella scena (il giocatore deve avere un indicatore visuale (mappa) di dov'e' e dove puo' andare);
  • pannello di controllo su schermo (si preveda un pannello di controllo in cui usando testo e grafica 2D si visualizzino le funzioni utente, lo scoreboard, ecc.);
  • advanced rendering (opzionale)(da menu' si preveda l'attivazione/disattivazione di almeno una tecnica di resa avanzata realizzabile in opengl come per esempio: ombre, trasparenze, riflessioni, bump-mapping, ecc.)

    Elementi di Giudizio

    Elementi qualificanti il progetto saranno l'originalita' delle scelte (tipo di gioco, oggetti, scenografia, texture, ecc.) e la funzionalita' dal punto di vista grafico del codice realizzato. Si rammenti che il progetto e' sulla grafica 3D e non sui videogiochi!

    Consegna

    Si richiede di consegnare un archivio cognome.tgz (tarato e zippato) contenente due cartelle:
  • la prima si chiami "project" e contenga il codice sorgente e il Makefile per uno dei seguenti ambienti: Linux, MacOs, Windows-Mingw insieme ad un file README contenente le informazioni di installazione ed esecuzione;
  • la seconda si chiami "doc" e contenga una relazione in html sul progetto realizzato (descrizione del videogioco e suo utilizzo, spiegazione delle scelte effettuate, funzionalita' OpenGL utilizzate, particolarita').
    L'archivio contenente il progetto puo' essere consegnato per e-mail come allegato o indicando da dove scaricarlo almeno 10 giorni prima dell'appello d'esame; nell'e-mail si indichi chiaramente per quale ambiente e' stato sviluppato.
    Per il progetto si stimano necessarie almeno 40 ore di lavoro.

    Avvertenza 1

    Non e' vietato "guardare" codice esistente, anzi si caldeggia di farlo, ma per imparare e non per plagiare! Se trovate qualcosa di carino che funziona, ma non capite perche', non lo usate; vi potrebbe essere chiesto di spiegarlo.

    Avvertenza 2

    Non si possono usare librerie aggiuntive a quelle indicate nelle specifiche, pena la non accettazione del progetto; si puo' invece riutilizzare tutto quello che e' stato messo a disposizione durante il corso (per esempio la libreria glm per il caricamento di file mesh .obj, ecc.).

    Avvertenza 3

    Prima di consegnare il progetto si suggerisce di eseguirlo anche su una differente macchina (stesso ambiente). In sede d'esame e' possibile mostrare il progetto sulla macchina su cui e' stato sviluppato.