Slide Progetto RV

Progetto di Realtà Virtuale
Sala di comando della USS Enterprise
Netti Alessio – 0124000504
Anno accademico 2013/2014
Introduzione
Lo scopo del progetto è riprodurre l’iconica sala
di comando della nave spaziale USS Enterprise,
tratta dalla celebre serie televisiva Star Trek.
La nave la cui sala di comando è stata riprodotta è
quella presente nella serie originale, da cui sono nati
personaggi cult come Spock, o il capitano Kirk.
In ogni caso, all’interno del progetto sono presenti
sia elementi della serie originale, che elementi tratti dalla successiva serie The Next Generation,
in quanto questa è la preferita dal sottoscritto.
Il Materiale Utilizzato
Al fine di ottenere la maggiore fedeltà possibile nella
riproduzione della sala di comando, sono state utilizzate
soltanto risorse (Audio, Texture o Modelli), tratti dalla serie
originale.
Si fa riferimento in particolare alle texture degli
schermi, che raffigurano riproduzioni del sistema operativo
LCARS introdotto nella serie The Next Generation.
Analogamente, i suoni ambientali udibili nel progetto sono stati effettivamente tratti dalla serie originale.
Tutto ciò è stato possibile grazie alla corposa schiera di fan dell’universo di Star Trek, che col passare degli anni
ha generato una mole incredibile di materiale di qualsiasi tipo, inerente alla serie.
Software Utilizzati
I software utilizzati nel progetto sono i seguenti :
- Blender : per l’esportazione in formato X3D di modelli trovati in rete, e la modifica di modelli creati
personalmente in X3D, al fine di ottenere risultati migliori;
- NotePad++ : per la stesura del codice X3D vero e proprio;
- NetBeans : IDE Java per la stesura degli script realizzati per la parte dinamica del progetto, tramite la libreria
InstantReality.jar.
Il Player X3D di riferimento per il progetto è Octaga Player.
Il progetto viene riprodotto correttamente anche con il software Instant Player, ma presenta dei problemi di
riproduzione dell’audio dovuti alla particolare implementazione.
Problematiche Riscontrate
Sono state riscontrate alcune problematiche nello sviluppo del progetto, risolte in modi differenti. In
particolare :
- Mapping delle Texture su nodi di tipo IndexedFaceSet : il mapping di default genera un fastidioso effetto «a
strisce», e spesso il mapping manuale è impraticabile;
- Formati Audio e Video supportati : da documentazione ufficiale sono supportati MPEG1 per il video, e WAVE
per l’audio. MPEG1 è un formato abbastanza controllabile, ma l’audio WAVE genera spesso file molto grandi;
- Utilizzo del nodo KeySensor : tale nodo si comporta diversamente in ogni Player X3D. In Octaga Player, il
nodo KeySensor non reagisce agli eventi di tastiera, mentre in Instant Player funziona correttamente, ma
preclude l’utilizzo della modalità di navigazione WALK.
Struttura del progetto
Il progetto si struttura in due macro-aree connesse da nodi Anchor. Esse sono :
L’esterno della nave Enterprise, con vista sullo spazio profondo,
e la nave che si muove perpetuamente, mentre tre asteroidi,
periodicamente, attraversano la scena. Il file di avvio è
Enterprise_start.x3d.
Cliccando sulla nave è possibile passare al secondo ambiente.
Modalità di navigazione : FLY, EXAMINE, LOOKAT.
Il secondo ambiente è rappresentato dalla sala di comando
della nave, che presenta un alto grado di interattività
con l’utente. Il file di avvio di tale ambiente è
CommandBridge.x3d.
Interagendo con l’ascensore nell’ingresso della sala, è possibile
tornare al primo ambiente.
Modalità di navigazione : WALK.
Tassonomia del progetto
L’ambiente esterno
Come già accennato, la prima area visibile,
avviato il progetto, è l’esterno della nave
USS Enterprise.
Lo sfondo è stato realizzato mediante
l’utilizzo del nodo Background.
Il modello 3D della nave è stato trovato online,
ed è possibile ammirarne i numerosi dettagli
tramite la modalità di navigazione FLY.
La nave si muove e ruota perpetuamente : la rotazione è ottenuta tramite un OrientationInterpolator, mentre
la traslazione è ottenuta mediante uno script Java che utilizza le funzioni cos e sin di Math per descrivere
una traiettoria ellissoidale.
Vi sono poi tre asteroidi, provenienti dallo stesso modello, ma scalati differentemente tramite nodo Transform,
che di tanto in tanto passano di fianco alla nave : il loro movimento è ottenuto dalla combinazione di un
OrientationInterpolator ed un PositionInterpolator, collegati ad un TimeSensor in loop.
Cliccando sulla nave è possibile accedere al ponte di comando della nave.
La sala di comando
Il secondo ambiente riprodotto nel progetto
è la sala di comando della Enterprise.
In tale ambiente l’unica modalità di navigazione
è WALK, ed il punto di partenza è impostato
tramite un nodo Viewpoint.
Essa si compone di due modelli che riproducono
il soffitto ed il pavimento della sala, mentre
numerosi altri modelli formano un anello e
chiudono le pareti della stessa.
Le numerose console a muro fanno riferimento allo stesso modello, ma sono state texturizzate variamente, per
ottenere schermate diverse. La console sul fondo, invece, implementa un nodo MovieTexture.
I modelli delle sedie e della poltrona del capitano sono stati trovati online, ed opportunamente ritoccati per
correggerne la visualizzazione e la cromatura.
Tutto l’ambiente, infine, è illuminato da 5 PointLight, collocate in corrispondenza dei pallini gialli sul soffitto.
Entrambi gli ambienti presentano suoni di sottofondo legati al motore della nave, in loop.
Parte dinamica I
E’ possibile interagire con l’ascensore della sala. Premendo
il pulsante a lato, le porte si aprono, emettendo un suono, e
richiudendosi automaticamente dopo un tempo predefinito.
Cliccando sul Box nero reso visibile, è possibile tornare
all’esterno della nave, tramite un nodo Anchor.
Per implementare tale comportamento non si è ricorsi a Java,
e sono stati sufficienti un TouchSensor,corredato da
TimeSensor e PositionInterpolator.
Inoltre, una delle console a muro reagisce all’input della
tastiera dell’utente. A schermo, infatti, compare la stringa
digitata da questi, resettabile tramite il tasto /.
Si è utilizzato Java ed i nodi KeySensor e Text, tuttavia
il comportamento della console è strettamente dipendente
dal tipo di Player X3D utilizzato.
Parte dinamica II
Cliccando sui vari oggetti adagiati sul piano della console
video, sono riprodotti suoni o melodie legati alla serie di Star
Trek. Tale comportamento, analogo per i tre oggetti, è stato
ottenuto tramite un nodo TouchSensor, connesso ad un nodo
Audioclip, figlio di un nodo Sound.
Premendo il tasto rosso presente sul bracciolo della
poltrona del capitano, è possibile attivare una particolare
modalità d’emergenza : un beep di pericolo viene riprodotto
in loop, ed una luce rossa ruota illuminando la stanza. Si
può disattivare il tutto premendo di nuovo lo stesso tasto.
Si è utilizzato Java per riprodurre il comportamento binario
dell’interuttore, oltre ai nodi AudioClip, TouchSensor,
Spotlight ed OrientationInterpolator per completare il
tutto.
Parte dinamica III
A lato della console video è presente una sorta di
potenziometro : cliccando su di esso varia l’intensità delle luci
della stanza, con 5 diversi step. Il tutto è regolato da uno script
Java che conserva lo stato dell’interuttore, ed incrementa di
uno step fissato l’angolo di rotazione della manopola, insieme
all’intensità delle luci, in aritmetica modulo. In questo modo, è
possibile spegnere del tutto le luci per apprezzare meglio
l’effetto della modalità d’emergenza.
Sull’altro lato della console è presente un altro interuttore
che, se premuto, causa il ribaltarsi dello schermo verso
l’alto, rivelando una finestra sullo spazio. Da questa è
possibile vedere un asteroide alla deriva, con un androide
malfunzionante in orbita attorno ad esso. Premendo di
nuovo il tasto, lo schermo ritorna nella sua posizione, ed il
chiacchiericcio dell’androide viene interrotto. Il tutto è
regolato da uno script Java che mantiene lo stato
dell’interuttore, ed invia gli opportuni eventi per l’apertura o
chiusura della finestra.