Circa 3 anni fa avevo provato il plugin di QGis Qgis2ThreeJS per fare DEM stereoscopici da usare Google CardBoard ma poi avevo lasciato li' la cosa perche' non riuscivo ad avere l'interazione per girare il modello. Adesso ho trovato la soluzione ed e' molto piu' banale di quanto potessi immaginare...un mouse bluetooth. Basta accoppiare il mouse al telefono, inserire il telefono in un CardBoard o DayDream e si puo' visualizzare il modello da piu' punti di vista
Per fare il progetto QGis si deve utilizzare il plugin nel ramo sperimentale
Visto che l'esperimento con gli anaglifi era riuscito ma non nel modo ottimale ho provato a migliorare, questa volta usando un vero stereoscopio,ovvero Google Cardboard, anche se dal costo decisamente economico (uno stereoscopio da tavolo per foto aeree costa sopra il migliaio di euro)
Sul telefono ho montato una semplice pagina web sul telefono Android che scalava e centrava i due fotogrammi precedentemente registrati a mano (in versioni successive sarebbe comodo avere la possibilita' di spostare uno dei fotogrammi via telecomando bluetooh per centrare le immagini guardando nel visore)
Con questo sistema la visualizzazione 3D e' decisamente buona e molto piu' simile a quella del vero stereovisore per foto aeree rispetto a quella anaglifica
Ho sempre avuto una passione sfrenata per i simulatori di volo dai tempi di MS-DOS (anche se di fatto tocco terra in modo rude il 99% delle volte). In questo post ho voluto provare la possibilita' di creare un simulatore di volo in realta' virtuale con un costo decisamente abbordabile (una decina di euro per l'app piu' una 20-30 euro per un visore 3D di plastica ed un cavo USB piuttosto lungo. il telefono deve avere accelerometri e giroscopi) utilizzando Google CardBoard e Flight Simulator X
Per ottenere una visualizzazione stereoscopica (anche se non e' una vera stereoscopia perche' il gioco non la prevede, e' una duplicazione dello stesso schermo sui due oculari) ho provato sia TrinusVR che KinoVR, due applicazioni di realta' virtuale per Android con una parte server su Windows
E' importante segnalare che, nonostante siano disponibili collegamenti via WiFi e USB Tethering, la prima opzione e' fortemente sconsigliata per il ritardo che si genera sul segnale video.
Un altro aspetto che si puo' aggiungere per rendere piu' realistica la simulazione e' il cambio di visuale a seconda di come e' orientata la destra, cioe' se si guarda a destra anche la visione del gioco si sposta sulla destra e cosi' via. Per fare cio' ho utilizzato OpenTrack che pero' ha funzionato solo su KinoVR e non su TrinusVR
Nella prima schermata di OpenTrack si deve impostare il protocollo a Microsoft FSX SimConnect
Poi si va nelle Opzione e si configura l'output come segue invertendo gli assi
Infine si calibra la cuva di risposta degli assi di Yaw, Pitch e Roll
Al termine delle modifiche si preme Start
Si apre quindi Kino Console/VR Settings.
Si flagga Use Opentrack to headtracking, disable mouse acceleration e Enable image Duplication
A questo punto si collega il cavo USB e dal telefono Android si abilita USB Tethering e si disabilita la connessione di rete WiFi. Il telefono cerca il server sul PC. Il programma e' un po' instabile ed a volte richiede piuttosto tempo per stabilire la connessione. Al termine si clicca sull'icona e si inserisce la password per perfezionare il collegamento
Photosphere sono immagini a 360° sul piano orizzontale e +/- 90° sul piano verticale.
Non sono una novita' in senso assoluto perche' e' ormai una decina d'anni che si vedono a giro ma cio' che ora e' interessante e' la possibilta' di poterle realizzare con dei comuni smartphone che effettuano in automatico la ricucitura delle varie immagini e la compensazione dei colori
L'applicazione Fotocamera di Google permette questa possibilita' (o meglio lo permette solo su alcuni telefoni, per esempio su MotoG Google Edition non e' disponibile l'opzione che invece e' presente su Nexus 4...ed entrambi i telefoni condividono praticamente lo stesso software)
Per avere una visione panoramica si devono eseguire foto girando su se stessi con 5 angoli di inclinazione rispetto all'orizzontale e seguendo le indicazioni dei punti blu che compaiono sullo schermo
Per vedere l'immagine si puo' utilizzare anche l'apposita applicazione ed un visore Cardboard in modo da avere un poco di realta' virtuale
Questa e' l'immagine dentro Google Maps ma si puo' ottenere la visualizzazione via browser web anche utilizzando delle librerie JS come questa, di semplicissimo utliizzo
Cardboard SDK for Unity
Dopo aver installato Unity si lancia l'applicazione creando un nuovo progetto.
Si cancella dal progetto la camera di default e si scarica lo Unity Package dell' SDK Cardboard.
Una volta effettuato il download, tenendo aperto Unity, si fa doppio click sullo Unity package e si attiva l'importazione. Si importa tutto tranne il ramo Legacy
A questo punto da Assets/Cardboard/Prefabs si trascina sulla Hierarchy il componente Carboard Main per creare nel progetto la camera stereoscopica per Cardboard
Importare Modelli 3D
Si trascina il modello 3d (in formato 3DS o FBX) dentro la cartella Assets
Si scala il modello
Si crea una nuova cartella Texture dentro Assets e si copiano le texture trascinandole
a questo punto si deve collegare il modello 3d alla texture
si deve modificare lo Shader portandolo da Standard a Legacy Shader/Bumped Diffuse
si aprono due finestre Base e NormalMap. Si devono trascinare le due immagini (Base e' la pelle del modello mentre NormalMap e' la mappa delle normali dei vettori dei modello e di solito si mostra come immagine azzurra o nera)
Joystick XBox 360 USB su Mac e Unity
Un altro problema con cui mi sono dovuto confrontare e' stato quello di interfacciare il Joystick Microsoft XBox 360 USB su Mac con Unity
Per prima cosa si deve installare il driver prelevandolo da questo indirizzo
In seguito si deve aggiungere al progetto XBoxCtrlInput
Interazione utente
Per aggiungere l'interazione utente devono essere definiti gli script collegati con i GameObject. Cio' si fa cliccando un oggetto in Hierarchy e poi andando su Inspector ed Add Component/New Script in C#
per esempio per muovere la camera i pulsanti A,B,X ed Y del mouse si puo' aggiungere questo script
Per finire si deve mandare in esecuzione su Android usando il comando Build&Run.
Per compilare un progetto verso Android e' necessario il solo Android SDK e Unity fa tutto per conto suo.
Su IOS invece Unity crea solo un progetto ma non lo compila, deve essere compilato separatamente all'interno XCode (con la versione attulamente in uso non sono riuscito a compilare su XCode per un errore nelle impostazioni del progetto)
La Nintendo 3DS e' un giocattolo (indicativamente bambini piccoli a vedere il parco giochi) ma e' anche un oggetto per la presenza di uno schermo in auto stereoscopia
E' anche interessante la presenza di una coppia di fotocamere che permette di realizzare stereocoppie in modo semplice e con una geometria non modificabile. Aggiornando il firmware e' possibile, oltre alle stereocoppie, realizzare anche video stereo
I dati sono salvati nella SD Card del dispositivo e sono in formato MJPG (estensione del file .AVI). Per visualizzare i video su Youtube si deve prima installare il codec MPJPG da SourceForge
Dopo l'installazione si apre VFW Configuratione e si abilita il Decoder MJPEG portandolo a libavcodec
Si installa quindi Stereo Movie Maker e si apre il file .avi precedentemente salvato
non c'e' bisogno di allineare le due semimeta' dello schermo perche' sono gia' sincronizzate
Si salva il file mettendo il flag in Side-by-Side e definendo il codec di compressione (questa ultima fase e' in po' a prove per trovare quello giusto)
Effettuando l'upload su Youtube viene riconosciuto il formato ma si puo' comunque indicare che si tratta di un filmato 3D. In Youtube versione desktop il filmato viene visualizzato come anaglifo (da visualizzare con gli occhialini a lenti rosse e blu) mentre su Android lo schermo viene diviso in due meta' per poter essere visualizzato con Google Cardboard
Lo stesso risultato si puo' ottenere con ffmpeg ma e' piu' macchinoso
In vena di sperimentazione mi sono comprato la Google CardBoard
Si tratta di un esperimento presentato da Google per convertire un comune telefono (vedremo poi non poi cosi' comune) in un visore tridimensionale (come Oculus Rift) dal basso costo
Il kit puo' essere autoprodotto con del cartone (Google fornisce le istruzioni) ma non e' cosi' semplice perche' servono due lentine di una lunghezza focale ben determinata. Il kit ufficiale si trova sui 25 euro ma ho trovato su TinyDeal una offerta ad un paio di euro (spese di spedizione comprese, basta saper aspettare)
Come si vede il kit non e' gran che come precisione ed sono dovuto ricorrere al nastro adesivo per tenere tutto insieme. Il telefono deve essere inserito all'interno dell'alloggiamento (ATTENZIONE!!! puo' scivolare lateralmente quindi puo' cadere durante l'uso e' trattenuto dalle mani ma in altri casi no)
Come si vede dalla foto lo schermo del telefono viene diviso in due settori (uno per ogni occhio) per la visione stereoscopica
questo e' l'aspetto montato
Primo avviso: essendo fatto di cartone ed appoggiandosi sulla fronte, inevitabilmente il sudore della fronte sporca la parte interna (vedi foto sottostante) anche dopo un solo utilizzo
Secondo avviso: non tutti i telefoni sono adatti. Google certifica come funzionanti Nexus 5, Nexus 4 (alcuni utenti lamentano che non funziona perfettamente) e pochi altri. Sul mio Moto G 2013 l'esperienza 3D e' ottima ma NON funziona la funzione click con il magnete (posto sulla sinistra del visore) ed e' necessario avere un telefono con giroscopi (per esempio nei demo si deve inclinare il visore per scorrere a destra e sinistra e sul Moto G 2013 non funziona)
Terzo avviso: il visore puo' funzionare anche con IPhone. Ho provato con le applicazioni 3D compatibili con il 4S ma lo schermo e' decisamente troppo piccolo. Probabilmente si deve utilizzare IPhone 5
Oltre alle applicazioni su PlayStore sono molto carine le applicazioni 3D che si trovano su Chrome Experiment