Nell'arena dei dispositivi HMD per la realtà virtuale entra un nuovo importante giocatore. Si tratta dell'iniziativa Open Source Virtual Reality, un visore quindi a codice aperto sia nella sua parte hardware che software. Un interessante progetto che con buona probabilità abbasserà i costi e soprattutto darà modo, con il contributo di appassionati ed esperti di crescere e migliorarsi. Il progetto è capeggiato da Razer, ma tra gli aderenti, a sorpresa, anche il nostro amato HighFidelity:
Senza dimenticare comunque che tutti gli schemi dell'Oculus DK1 sono scaricabili su github:
Avrete sicuramente notato quanto si parli molto spesso di un'applicazione in referimento solo e soltanto alla sua interfaccia grafica. Siamo focalizzati su cosa venga mostrato a video, ma non pensiamo all'enorme quantità di algoritmi, protocolli, standard siano necessari per l'elaborazione di quei pixel mostrati. Spesso ci si lamenta dell'etichetta sbagliata o del colore non correttamente abbinato, nel mondo della grafica 3D viene troppo spesso preso come metro di qualità il fotorealismo delle immagini. É indubbio che la resa grafica sia un elemento importante per il successo di un software, tuttavia non sempre é l' elemento essenziale per il corretto funzionamento di un'applicazione, si tratta solo della famosa "punta dell' Iceberg". Soprattutto nelle applicazioni VR la velocità di aggiornamento delle immagini è fondamentale per una corretta fruizione ed interazione. Certamente l'uso di sistemi grafici per la resa fotorealistica contribuisce al senso di "presenza" così importante nella VR, ma può diventare un ostacolo insormontabile qualora si voglia condividere la creazione e modifica di oggetti tra più utenti.
Le immagini precedenti sono esempi di funzionamento del motore CryEngine 3 di Crytek create da sviluppatori indipendenti che hanno avuto molto successo e fatto discutere in rete. Tuttavia non sono utilizzabili nell'ambito di mondi virtuali massivi sandbox a meno di ricorrere ad alcuni "trucchi" per la condivisione dell'ambiente simulato. Ed anche per i sistemi VR siamo al limite delle possibilità considerando che lo stesso sviluppatore afferma che la demo gira a circa 55-60 FPS (e le linee guida di Oculus consigliano 75 FPS). Non ci addentriamo poi negli innumerevoli problemi relativi alla condivisione via Internet e ci limitiamo, per ora, a riportare un link (affronteremo questo problema in futuri post):
Credo che questa bellissima immagine (probabilmente un quadro di cui non sono riuscito in nessun modo ad identificare l'autore e la provenienza dell'immagine) rappresenti molto bene la paura che molti hanno nei confronti della Realtà Virtuale. Ma potete esserne certi non faremo questa fine: rannicchiati in un angolo, vestiti di cenci, sporchi ed immersi o, sarebbe meglio dire, persi nella Virtual Reality. Potremmo ipotizzare che questa sia la naturale reazione di chi non conosce questo tipo di tecnologie. Dobbiamo però ricrederci, anche esperti del settore avanzano dubbi ed incertezze, come testimonia una nota di uno sviluppatore su Github che ha fatto molto discutere:
And having an immersive virtual environment - hey, MMORPGs even without VR get people to sink lots of time into them, and if anything that's probably gonna be more pronounced in the VR version - that is set up to, ultimately, generate ad revenue (and hence prioritize the needs of the advertisers over the desires of its users) is just an inherently gross concept to me.
Il breve scritto riporta alcune parti di una discussione tra colleghi. I due sviluppatori sono entusiasti della tecnologia, ma allo stesso tempo preoccupati delle possibili conseguenze.
La realtà fortunatamente è ben diversa da quanto percepito ed ipotizzato. I "padri fondatori" di questo vero e proprio nuovo paradigma di interfacciamento ai computer non hanno mai pensato alla VR come ad una mera copia della Realtà che ci circonda. La VR é a tutti gli effetti un potenziamento della Realtà come la percepiamo. I sensi umani sono limitati ed imprecisi, ma nulla vieta di ricreare un mondo in VR in cui "vedere" le onde elettromagnetiche e percepire i profumi in forma di colori. Le opportunità superano di gran lunga i possibili pericoli che accompagno comunque ogni strumento che l'essere umano inventa ed usa. Certamente i mondi virtuali non immersivi hanno dimostrato la possibilità (se pur minima) di dipendenze anche molto gravi, ma non possiamo per questo lasciarci sfuggire l'occasione di creare una vera e propria rivoluzione nel campo dell'interazione uomo-elaboratore che potrà condurci verso nuove ed incredibili prospettive.
E alla fine il sogno è diventato realtà. Da anni desideravo che qualcuno realizzasse quanto ho potuto leggere in libri come Snow Crash e Ready Player One, in film come il Tredicesimo piano ed il Tagliaerbe ed ecco che Philip Rosendale crea e sviluppa HighFidelity.
Ma vediamo nel dettaglio come funziona la piattaforma di HighFidelity. Possiamo definirla a tutti gli effetti come una Shared Virtual Reality Application ovvero una piattaforma in grado di condividere "oggetti" ma anche "agenti" intesi come Avatar via Internet. Il sistema di comunicazione è prevalentemente peer to peer, ma esiste anche una comunicazione client - server soprattutto per l'autenticazione dei diversi "agent" sulla piattaforma e la condivisione/commercializzazione di oggetti di ogni tipo.
Il diagramma di seguito illustra nel dettaglio l'architettura presente e futura della piattaforma:
L'intera sistema può essere programmato, tramite apposite API, con un sistema di scripiting interno basato su Javascript. La scelta di Javascript è stata riconosciuta da molti sviluppatori come molto indicata, vista l'enorme diffusione del linguaggio ed il riutilizzo di molte librerie e codice già scritte e pronte all'uso. Anche AltVR ad esempio ha annunciato questa scelta segno che si è imparato dalle precedenti esperienze, prima fra tutte quelle di Second Life in cui è stato sviluppato un'apposito linguaggio definito LSL. Questo è stato letto da molti come un errore di molti sviluppatori che tendono "a reinventare la ruota" non basandosi ed avvantaggiandosi di linguaggi di programmazione già molto utilizzati e rodati.
Il client, scritto in C++, è fortemente basato sulle librerie grafiche OpenGL e non a caso usa la libreria GLUT e per l'esattezza la sua versione opensource freeglut. L'interfaccia grafica è basata sulle ottime e note librerie QT che permettono lo sviluppo di applicazioni cross-platform (quindi per Windows, Mac OSX e Linux). La scelta delle OpenGL, delle QT, oltre al sistema di creazione/compilazione CMAKE è pensato per essere profondamente multi-piattaforma nell'intero ciclo di sviluppo.
Per la parte di grafica 3D non è stato utilizzato alcun motore grafico predefinito, ma, da quello che ho potuto capire, si è deciso di programmare direttamente a basso livello usando le OpenGL. Il motivo di questa preferenza è dovuto alla volontà di avere un occhio di riguardo alle performance. Stiamo infatti parlando di sistema VR che deve quindi garantire un numero di Frame per secondo molto alto (i documenti di OculusVR parlano da almeno 60 FPS per un buona fruizione in ambito VR). Non a caso il sistema implementa un gigantesco motore Voxel condiviso. Un suggerimento, questo, nato nel 2011 da John Carmack che, in una famosa intervista, ha parlato di questo tipologia di motori grafici 3D come gl'unici in grado di garantire tutte le performance per un sistema massivo condiviso. L'esperienza di Philip Rosendal in questo ambito è nota a tutti, Second Life si basava sul concetto di Prim non molto dissimile da quello implementato nei motori voxel. Le potenzialità sono enormi e gli sviluppatori hanno davanti a loro l'esempio ben conosciuto di un sistema Voxel come Minecraft. Ritornano mente le parole di Iribe quando parlava di una piattaforma che dovesse reggere non milioni di utenti, ma miliardi. E' necessario quindi fare delle scelte architetturali particolari proprio per soddisfare i requisiti di velocità e condivisione massiva delle informazioni.
Per il sistema di chat interno ci si è avvalso del protocollo XMPP basato sulla libreria QXMPP (XMPP conosciuta anche come Jabber è stata alla base del sistema di chat di Google e Facebook).
Il client porta con se poi tutte le librerie per l'interfacciamento con OculusVR, sistemi di input come Leap Motion e Razer Hydra. E' veramente sbalorditivo osservare due avatar giocare in tempo reale in VR a Morra Cinese (siamo ben oltre Second Life signori ;-):
Ulteriore punto di forza del progetto é il rilascio sotto licenza Open Source di buona parte dell'intera piattaforma. L'intero codice sorgente è visitabile (e compilabile) al seguente indirizzo: https://github.com/highfidelity/hifi
HighFidelity si candida quindi a tutti gli effetti ad essere il vero Metaverse da lungo atteso. Sarà fondamentale aver quanto prima una descrizione dettagliata del protocollo di comunicazione usato così da poter sviluppare librerie in altri linguaggi per accedere a High Fidelity. La "chicca" finale riguarda la moneta virtuale che il sistema utilizzerà. La scelta non è stata ancora fatta, ma si vocifera a gran voce che potrebbe essere il tanto discusso ed amato Bitcoin.
Secondo quanto riportato dal blog New Worlds Notes il 2015 non sarà l'anno di lancio della versione consumer dell'Oculus Rift. Sono tuttavia in sviluppo ben tre diverse piattaforme per la condivisione di Realtà Virtuale che non è possibile non pensare al 2015 come all'anno della riscossa della VR (Virtual Reality). Soprattutto High Fidelity può essere considerato come il precursore del Metaverso tante volte agognato e sognato. Ne vedremo comunque delle belle....
Internet non è soltanto una semplice rete di comunicazione, non è un semplice canale in cui far scorrere bit. Assomiglia molto di più ad un Bazar pieno di cose interessanti e soprattutto da scoprire. In un angolo nascosto, magari sotto un po' di polvere è possibile trovare l'idea geniale, la tecnologia particolare, l'ingrediente di cui si ha bisogno per creare la propria particolare ed insostituibile "creazione". Uscendo magari dai soliti circuiti e siti prestabiliti ecco aprirci le pagine Web di un progetto software condiviso da un'università ed ecco l'idea di prendere quel pezzo, quell'altro pezzettino da un altro sito e via così fino a comporre il proprio puzzle mentale. Quale era il nostro obiettivo? Realizzare un Mondo Virtuale condiviso che abbia tutti i requisiti di una vera realtà immersiva. E cosa offre il mercato? Quali sono le nostre possibilità? Molte in realtà, visto che come ho già detto il MayaVerse già esiste se pur spezzettao nei sui componenti fondamentali. Ma andiamo con ordine e vediamo di cosa abbiamo bisogno per poter realizzare il tutto.
Per prima cosa abbiamo bisogno di un Motore 3D, ovvero sia di un sistema software in grado di gestire tutto il sistema di rappresentazione all'interno di un computer. L'ideale sarebbe avere un 3D Engine quanto più possibile Open Source e cross-platform in modo da essere adattabile a diverse piattaforme hardware e software (un classico Windows, Linux e Mac...). Le possibilità sono molte, ma in questi giorni stavo leggendo il rilascio di un motore grafico di recente costruzione interamente Open Source e costruito con il mio amato linguaggio C#: http://deltaengine.net/Features.html
Da quello che si legge sarà completamente gratuito per la pittaforma Windows e quindi potrebbe essere un ottimo inizio (per le altre ci sarà da attendere i relativi prezzi...). Ok, abbiamo l'ambiente tridimensionale e tutto qulle che ci serve per "disegnare" attraverso un computer con apposito hardware ora ci serve un sistema per fare in modo di "catturare" accuratamente l'interazione del nostro utente con l'ambiente e creare un proficuo feedback con esso. Sembra una cosa banale da fare, ma è la vera essenza di un sistema virtuale. Se ci pensate attentamente in ogni istante i nostri differenti sistemi percettivi interagiscono con l'ambiente in un continuo ciclo di modifica e percezione. Come giustamente hanno dimostrato molti studi di psicologia cognitiva gli utenti parlano di "immersività" quando interpretano la realtà ricreata al computer come consistente, logica ed interattiva. Volendo banalizzare ci sentiamo "immersi" ad esempio perchè se vediamo un oggetto rappresentato riusciamo a muoverlo e se lo spostiamo questo cade secondo quanto ci aspeteremmo nella "normale" realtà. Questi sono solo alcuni degli elementi fondamentali come attentamente analizzato in: http://www.psychologyofgames.com/2010/07/27/the-psychology-of-immersion-in-video-games/ http://www.psychologyofgames.com/2010/09/24/motion-controls-and-presence/
Certamente una dei primi dispotivi necessari per il raggiungimento di questo obiettievo è l'adozione di un dispositivo di output definito genericamente un "Visore". Ovvero un casco in grado di riprodurre con due piccoli monitor l'ambiente tridimensionale generato al computer. Questi visori tuttavia non sono soltato un "paio di piccoli televisori" per i duoi occhi, ma montano altri dispositi che rilevano il posizionamento, ad esempio, della testa o riproducono attraverso delle micro casse audio stereo fino a dare una rappresentazione "stereoscopica" della visione. Ne esistono di tutti i tipi, ma facendo una piccola ricerca sono riuscito a trovarne un modello relativamente poco costoso (sui 1500 $ da quello che vedo...) di cui viene rilasciato un ampio supporto con lil relativa ambiente SDK pronto per essere interfacciato in vario modo con codice C# e quindi in buona misura facilmente integrabile con il precedente motore grafico 3D.
Siamo quindi giunti ad avere un sistema per la rappresentazione tridimensionale ed un visore in grado di rappresentare il tutto ad un possibile utente (senza parlare di alcuni piccoli dettagli...manca ancora infatti il software per "unire ed integrare" tutto quanto ;-), un piccolo dettaglio...), quello di cui si ha veramente bisogno tuttavia è la possibilità di tracciarne tutti i movimenti . Immaginiamo di allargare le braccia e saltare, vorremmo che i nostro Avatar faccia lo stesso o si muova di conseguenza. Questo apparente sogno è stato reso in parte realtà dall'ormai mitico Kinect (ex Project Natal...): si tratta di un sistema equipaggiato da varie telecamere che proiettando un reticolo infrarosso intercetta in tempo reale i cambimenti riuscendo così a ricostruire una mappa tridimensionale dei movimenti dell'utente inquadrato. Dopo appena un mese dalla commercializzazione già uno dei blogger che contribuiscono a Terranova aveva segnalato la possibilità di utilizzarlo in Mondi Virtuali. Ipotesi che appare quasi una naturale estensione di questa piccola, ma gigantesca invenzione. Il rilascio delle librerie per potersi interfacciare con il Kinect ha fatto il resto creando di conseguenza scenari incredibili. Ancora di più se ben due università si mettono all'opera e rilasciano un particolare sistema in grado di tracciare ed interpretare i dati provenienti dal dispotivo ricostruendo la posizione dei vostri arti e del corpo nello spazio. Il tutto è stato magistralmente riassunto in questo post su Programmazione.it:
Tutto finito? ;_) Ovviamente no, c'e' ancora tanto da fare, da sviluppare e da testare, il nostro è soltanto un discorso teorico od almeno pensavamo che lo fosse.... Piccoli dettagli come l'utilizzo di standard aperti per l'interscambio tra mondi virtuali della rappresentazione tridimensionale degli oggetti con un apposito formato... Dettagli, imporanti, ma il risultato direte voi? Il risultato, qual'è??
Sognare come si sa non costa nulla. Ed ecco allora immaginiamo per una volta di aver vinto il Superenalotto e di poter così avere a disposizione un capitale non indifferente, diciamo sui 100 milioni di Euro. Che ci facciamo? Viaggetto? Una casa nuova, una macchina potente? Qualche sfizio è doveroso levarselo, ma se il vero sfizio fosse invece poter finalmente creare qualcosa per puro divertimento. Creare un'applicazione, un servizio senza l'assillo dei tempi e delle scarse risorse, senza l'incertezza del cliente perchè nessuno ovviamente è miglior cliente di se stessi. Ed allora partiamo nella consapevolezza che Internet stessa è come un immenso supermercato da cui poter trarre informazioni e tecnologie utili allo sviluppo di quanto sognato. Ovvero:
E quindi inziamo a fare compere con la precisa idea di creare un' abiente immersivo a Realtà Virtuale (IVR) altamente configurabile e condivisibile via Internet. Guardiamo per un attimo alla letteratura CyberPunk ed a libri come SnowCrash o Ready Player One. Non parlano di un sistema in grado tasferire informazioni tramite interfaccie come mouse, tastiera e video. Ma di un complesso sistema che "permea" tutti i sensi dell'utene e ricrea uno spazio tridimensionale generato al computer in cui è possibile interaggire con oggetti (creandoli, spostandoli e modificandoli ad esempio), ma anche con altri utenti attraverso la loro rappresentazione definita "Avatar". In realtà questi libri (ricordo che Mondi Virtuali come Active World e Second Life sono stati creato proprio su "ispirazione" del Metaverso di Neal Stephenson nel già citato SnowCrash) si spingono oltre descrivendo realtà virtuali completamente indistinguibili da quella "reale". In sostanza il dettaglio, la definizione delle immagini e le sensazioni avute sono le stesse che ogni giorno abbiamo interagendo con la macchina del caffè o la tazza di the bollente. Solitamente a questa definizione tutte le menti corrono all'immagine del "mito della caverna" ed al famoso paradosso del "cervello nella vasca", rilfessioni quanto mai suggestive ma che lasciamo ai filosofi. Quello che si è scoperto è che in verità non serve una definzione ed un realismo nella riproduzione virtuale degli oggetti tale da "confondere" la mente umana, quanto un' interazione dei sensi quanto più simile a quanto avviene normalmente. Ed è questa la sostaziale differenza! Nei mondi virtuali odierni come World of Wordcraft, AION e Secondlife (mondi la cui complessità tecnica è davvero molto alta) possiamo vedere un personaggio in terza persona (il vostro Avatar) che si muove all'interno di uno spazio ricreato al computer. Siete un cavaliere medievale ed ecco vedete una foresta davanti a voi in cui si muovono del lupi famelici, ma alla fine quello che dovete fare è muovervi con il mouse per indirizzare il vostro personaggio (che vedete di spalle) e che si muove sul vostro scherrmo. Tutto questo in gempo reale ed utilizzando Internet per condividere la stessa simulazione con centinaia ed alle volte migliaia di altri utenti con i loro personaggi. E' tutto molto suggestivo ed è risaputo come sia già sufficiente per catturare centinaia di utenti in ore ed ore di gioco. Ma cosa accadrebbe se foste voi, con il vostro corpo a muovere la spada che uccide il lupo?Cosa potreste immaginare nello "stringere" un cubo di legno creato dal computer, ma che voi potete spostare su di un tavolo non attraverso un mouse od una tastiera, ma con le vostre stesse mani. E' quello che viene definito "effetto WOW", che tante volte ci è stato promesso durante gli studi e le ricerche a livello accademico, ma che non si è concretizzato per essendo un perfetto paradigma di ricerca che ha dato numerosi e diversi frutti. Eppure le tecnolgie e le conoscenze per arrivare a tutto questo ci sono e nell'ultimo tempo sono anche aumentate. Si è riaccesa la grande fiamma della Virtual Reality.