Introduzione
Questo progetto è stato creato per il corso di computer Graphics, l'obiettivo di questo progetto è quello di
padroneggiare l'utilizzo di WebGL, un'API JavaScript per il rendering di grafica interattiva 2D e 3D.
Nello specifico il progetto va a simulare una camminata all'interno di un bosco infestato da alcune entità, le
quali (non appena ci avrenno notato) cercheranno di seguirci.
Struttura
I file del progetto sono organizzati come segue:
- assets: cartella che contiene tutte le risorse utilizzate dal codice
- audio: include tutte le tracce audio utilizzate per ricreare i suoni all'interno della
simulazione
- modelsOBJ: include i file .obj che rappresentano le geometrie delle mesh renderizzate, i file
.mtl che contengono le informazioni sui materiali di tali mesh, le immagini utilizzate per
texturizzare tali mesh e le normal map
- skybox: include le immagini utilizzate per texturizzare la skybox
- Controller: cartella che contiene le strutture dati utilizzate per "impartire ordini"
- audioController.js: utilizzato per regolare la riproduzione dei suoni
- engineController.js: utilizzato per gestire gli input e specificare i settaggi verso l'engine
- playerController.js: utilizzato per gestire gli input del giocatore nella simulazione
- Engine: cartella che contiene le strutture dati responsabili della gestione delle mesh e del loro
rendering
- engine.js: classe che si occupa dell'effettivo rendering a schermo delle mesh
- objParser.js: metodi utilizzati per la lettura dei file che rappresentano le mesh
- textureHelpers.js: metodi utilizzati per la creazione delle texture
- Model: cartella che contiene le strutture dati che definiscono la logica della simulazione
- game.js: classe che definisce la dinamica della simulazione (es. comportamento delle entità,
collisioni con gli oggetti, movimenti, ecc.)
- meshTransformers.js: classi utilizzate per gestire le trasformazioni dei riferimenti spaziali
all'interno della simulazione
- utils.js: metodi di utilità per la logica della simulazione
- Index.css: contiene le indicazioni sullo stile dell'interfaccia principale
- Index.html: contiene le indicazioni sulla struttura dell'interfaccia principale e il codice degli shader
program
Tutte le mesh utilizzate sono state scaricate da internet e successivamente modificate in Blender per amalgamarsi
meglio allo stile del progetto, eccezione fatta per "mioTotem", il quale è stato interamente creato in Blender
utilizzando una scansione 3D del mio volto.