Daydream

[VR] Google Daydream

Esperienza, coinvolgimento ed emozione a supporto dell’intrattenimento e della formazione, rappresentano i temi su cui è maggiormente focalizzata la Realtà Virtuale [VR]. Dopo le prime sperimentazioni in ambito cinematografico (Heilig, 1960) e militare (Furness, 1986), il Training ed Gaming sono i settori che propongono con più successo una realtà sintetica. Il settore Manifatturiero ha raccolto questi spunti, mostrando nuove soluzioni di progettazione virtuale condivisa di spazi 3D, anche tra persone che si trovano fisicamente in luoghi differenti, percorsi di addestramento di protocolli di comportamento in ambiti speciali (si pensi all’addestramento dei piloti), ed il supporto tecnico remoto in ambito di manutenzione e assistenza guasti.

 

Daydream_Hololens
3D Modeling
Daydream_Training
Training

Cos’è Daydream

Daydream è la piattaforma per la realtà virtuale ad alta qualità presentata al Google I/O 2016, per i dispositivi Android. Daydream rappresenta l’evoluzione di Google Cardboard, l’adattatore VR venduto da Google in un economico kit di assemblaggio. Con Google Cardboard è possibile convertire lo schermo di un comune smartphone a visualizzatore VR, usando cartone, due lenti con focale 45mm, e velcro.

Daydream_Cardboard
Google Cardboard
Daydream
Google Daydream

Le App compatibili creano una doppia visualizzazione verticale dello schermo di due immagini, una per occhio, ed applicano un fattore correttivo a ciascuna immagine, detto distorsione a barile, per compensare la distorsione a cuscino presente nelle lenti. Il risultato è un’immagine stereoscopica. POV, Point Of View, è l’artefatto chiave nella definizione dell’immersività: l’immagine viene presentata dal punto di vista dell’utente, come se stesse guardando direttamente, in prima persona. La visione non è puramente statica e possiamo trasformarci in spettatori attivi: l’immagini davanti ai nostri occhi può modificarsi in funzione dei movimenti del nostro corpo, delle nostre emozioni. La rotazione della testa, l’indicazione delle dita, la gestualità delle mani, diventano strumenti di navigazione ed animazione all’interno dell’ambiente in cui siamo stati proiettati.

Con Daydream, Google offre un prodotto di maggiore qualità, mantenendo un costo contenuto, 109€ su Google Store, arricchendolo di un controller wireless per facilitare l’immissione di comandi da parte del giocatore. Ecco le funzionalità disponibili in Daydream:

  • User head tracking.
  • Side-by-side stereo rendering.
  • Interattività con il sistema attraverso il controller.
  • Configurazione stereo automatica per uno specifico visualizzatore VR.
  • Compesazione della distorsione delle lenti.
  • Marker di allineamento per aiutare l’utente a centrare lo schemo durante l’inserimento dello smarphone nell’adattatore.
  • Compesazione angolare della deriva della velocità giroscopica.

Il Controller Daydream è composto da un touchpad con bottone e altri due bottoni, di cui Home è riservato al sistema. Il sistema inerziale integrato, basato su un accelerometro, un giroscopio e un magnetometro 3D, permette di monitorare fino a 9 DOF, Degree Of Freedom. La radio è Bluetooth Low Energy.

Daydream_Controller

Dispositivi supportati

Il cuore dell’idea di Google è contenuto nell’espressione alta qualità, che potrebbe anche diventare il vero limite di questa soluzione, pretenziosa nella richiesta di requisiti per il nostro smartphone. Apparentemente un controsenso, visto il progetto Google cardboard è nato per trasformare uno smartphone qualunque in un visore virtuale.

I requisiti coinvolgono sia il software, solo Android con versione maggiore o uguale alla 7.1, sia l’hardware. I soli dispositivi attualmente supportati sono 10, visibili nella figura di seguito. I requisiti per le App e per i Dispositivi vengono raggruppabili nelle categorie MUST, STRONGLY RECOMMENDED e SHOULD.

Per testare le performance di Daydream su dispositivi non compatibili, è possibile forzare la compatibilità (System Mod), seguendo quanto riportato a questo link.

Daydream Elements

A supporto degli sviluppatori, Google ha messo a disposizione una collezione di linee guida e di esempi di scenari di realtà virtuale. In particolare, ha definito pattern funzionali utili a rispondere alle nuove sfide fisiologiche, ergonomiche e tecniche che pone la VR, per ottenere comfort nell’utilizzo delle applicazioni e performance nell’impiego di dispositivi mobili. Gli aspetti principali trattati sono i seguenti.

Locomozione

La libertà di movimento in un vasto scenario, la necessità di potersi muovere rapidamente e di focalizzazione sugli oggetti sono riproducibili usando tre concetti chiave.

Teleportation

Movimento rapido in un vasto ambiente. Un evento di click sul Touchpad sul Controller permette di visualizzare attraverso un arco la rotta e destinazione di teletrasporto. La destinazione può essere raggiunta tramite un volo del personaggio, per evitare che l’utente si trovi improvvisamente in un nuovo luogo, provando disorientamento.

TeleportGif

Tunneling

Riduzione del campo di vista dell’utente e sostituzione dell’ambiente circostante con una griglia, anche durante il movimento. Questo permette di seguire una scena ridotta senza essere distratti dall’ambiente circostante.

Tunnel1

Chase Camera

Il movimento della camera è pilotato dalle azioni dell’utente. La destinazione del movimento del personaggio è definita da puntamento e click. La visualizzazione del personaggio non è affetta dal Tunneling, rimanendo sempre visibile, anche su aree coperte dalla griglia.

CC1

Interazione con gli Oggetti

Il Controller permette di svolgere funzioni di interazione con l’ambiente, oltre a quelle di puntamento. Aprire porte e cassetti scorrevoli, sollevare e posizionare oggetti con differenti pesi, definendo la loro fisica, è il supporto fornito da Daydream.

Daydream crea una virtualizzazione del Controller in oggetti, per specializzarne il comportamento:

  • Spada (modificatore di orientamento):
  • Pistola (puntatore e selezionatore).
  • Palla (lanciatore di oggetti)
  • Personalizzatore (modificatore in tempo reale delle proprietà del Controller).

Controller Model

Menù e Controlli Virtuali

A seconda del contesto in cui si vuole mostrare all’utente il menù, in fase di configurazione o durante la scena di gioco, il Controller può essere interprete di differenti gestualità. Elaborate modalità di visualizzazione vengono introdotte per opzioni particolarmente ricche. Di seguito diverse tipologie di menù proposti da Daydream.

Click Menu

Mostra un menù radiale, contestuale, a seguito di un evento di click.

CM1

Swipe Menu

Permette un rapido accesso alle opzioni attraverso l’inclinazione del controller.

SwipeMenu

Menu a Costellazione

Introduce una navigazione gerarchica, sfruttando diversi menù radiali.

Demo

Le piattaforme per cui Daydream fornisce supporto comprendono lo sviluppo nativo su Android, iOS e lo sviluppo cross su piattaforme Unity, Unreal e Web.

Per Unity sono disponibili a questo link le seguenti scene.

GvrDemo: semplice gioco VR in cui si cerca e seleziona un cubo
KeyboardDemo: immissione di input da Keyboard su un UI canvas
PermissionsDemo: gestione di un flusso di richiesta di permessi all’utente
VideoDemo: tecniche di playback, o streaming remoto, di un video stereo, oppure a 360º

Daydream Renderer

Per realizzare App VR ad alta risoluzione è necessario un display ad elevato numero di pixel, che abbia la capacità di refresh di almeno 60 fps, e che disegni ogni elemento due volte. Questo pone molto carico di lavoro a livello GPU, CPU, e data bus. Daydream Renderer permette di ovviare ad alcuni problemi comuni:

  • trasferisce buona parte della computazione delle luci dagli shader pixel agli shader vertex (una tipica applicazione Daydream ha un numero di pixel circa 10 volte maggiore dei vertici).
  • Non ridisegna oggetti per ogni alterazione luminosa, in modo da ridurre significativamente il numero totale di chiamate alla funzione di disegno.
  • Ottimizza gli shader per limitare il numero di texture look-ups ad un massimo di due, impedendo lo stallo della shader pipeline.
  • Permette ad alcuni effetti post-process, senza un ulteriore passaggio di rendering, il calcolo per la fine del pixel shader.

Un template di Rendering che ottiene buone performance anche in ambiente mobile si trova a questo link.

A supporto del Debug è presente il Daydream Performance HUD, un visualizzatore delle performance in overlay allo schermo, e le GAPID, un Graphic API Debugger .

PHUD

Controller API

A livello applicativo sono disponibili due bottoni Touchpad, e App Button; Home Button è mantenuto riservato dal sistema mentre con Touchpad è possibile anche fare tracking della posizione posizione del dito.  Eventi di click e di transizione di stato sono disponibili registrandosi agli eventi: IsTouching, TouchDown, TouchUp, TouchPos. Maggiori dettagli sono mostrati qui.

Il protocollo radio, BLE, espone un servizio di notifica periodica dello stato dei bottoni e del valore della unità inerziale. Per abilitare lo stream della radio è sufficiente settare al valore 1 il servizio UUID 00000001–1000–1000–8000–00805f9b34fb. I dati di tutti gli elementi sono mascherati all’interno di un pacchetto di 20 byte.

Controller Emulator

Nel caso uno smartphone voglia essere impiegato come Controller è disponibile una App da installare in emulazione su terminale Android. In questo modo è possibile introdurre più Controller nella scena.