Torino, 23 Settembre 2016
Presence in VR: ImmotionRoom
Gianni Rosa Gallina & Antony Vitillo
[email protected] - @giannirg
[email protected] - @SkarredGhost
Sponsor
Chi siamo
Dr. Gianni ROSA GALLINA
[email protected]
Head of division e Software Architect
@giannirg
 NUI Designer (Microsoft Kinect, Leap Motion, Intel RealSense)
 VR Developer (Oculus Rift, Gear VR, Google Cardboard, Unity 3D)
•
Software Architect e Senior Developer in BEPS Engineering




Tecnologie Windows Embedded (sviluppo di sistema/applicazioni)
IoT: integrazione Cloud ed Embedded con servizi Microsoft Azure
Progettazione app per mobile/tablet (Windows / WinPhone / Xamarin)
Big Data & Analytics
•
Autore Pluralsight
•
Laurea Magistrale in Ingegneria Informatica (Applicazioni Multimediali)
Politecnico di Torino, 2009
Chi siamo
Dr. Antony VITILLO
PR e Chief R&D Developer




[email protected]
@SkarredGhost
Esperto di Computer Vision e Body Tracking
NUI Designer (Microsoft Kinect, Leap Motion, Intel RealSense)
VR Developer (Oculus Rift, GearVR, Google Cardboard, Unity 3D)
Sviluppatore/designer di giochi per Windows/Windows Phone
•
Consulente
•
Blogger
•
Laurea in Ingegneria Informatica
Politecnico di Torino, 2007
Agenda
•
Come sviluppare esperienze in realtà virtuale
Unity3D
Oculus SDK
Peculiarità
•
Problemi della realtà virtuale classica
Presence
Motion sickness
•
ImmotionRoom
Descrizione
SDK
Demo
Sviluppare per la VR
“How to start developing for virtual reality?” è una delle domande più
richieste su reddit
Per sviluppare per la realtà virtuale servono le stesse competenze (o
quasi) dello sviluppo di qualsiasi gioco (per mobile, per PC, etc…)
• Conoscenza di game engine (Unity3D, Unreal Engine, CryEngine, etc…)
• Capacità di programmare (C# / C++)
• Reperibilità di elementi multimediali (modelli 3D, suoni, etc…)
Sviluppare per la VR
Unity3D è il game engine più usato
• Semplice da utilizzare
• Forse il migliore per prototipare
• Supporta nativamente la VR (e non solo)
• Grande community
Potrebbe non essere il migliore per
l’applicazione di interesse
•
UE4 e CryEngine hanno prestazioni grafiche migliori
Tutti i nomi, immagini, prodotti, marchi registrati citati sono di proprietà dei rispettivi proprietari.
Sviluppare per la VR
Andiamo a conoscere Unity…
Sviluppare per la VR
Riassumendo:
• Ogni elemento di gioco è un GameObject
•
•
•
•
Questo oggetto ha dei comportamenti, che sono i behaviour
I behaviour possono essere di qualunque tipo
L’unico behaviour di default è la Transform
Lo sviluppatore può (e deve) implementarsi i propri behaviour
mediante scripting (C#)
• Si possono salvare degli elementi di gioco come Prefab
per uso futuro
• Si possono salvare interi progetti come Package
Sviluppare per la VR
Per sviluppare per un particolare visore bisogna scaricare l’SDK (e il runtime) dal
sito del produttore
•
•
Tutti offrono anche un package per sviluppare mediante Unity
Ogni package ha le sue peculiarità, ma sono molto simili
Andremo ora a sviluppare in Unity mediante il plugin di Oculus
•
•
È quello presente sul mercato da più tempo
Permette di sviluppare sia per PC (Oculus Rift) che per mobile (GearVR)
Tutti i nomi, immagini, prodotti, marchi registrati citati sono di proprietà dei rispettivi proprietari.
Sviluppare per la VR
Andiamo a sviluppare una demo in VR…
Sviluppare per la VR
Riassumendo:
•
Si scarica l’integrazione con Unity dal sito di Oculus
(https://developer3.oculus.com/downloads/)
•
•
•
È consigliabile l’uso delle Oculus Utilities for Unity 5
•
Si fa la build per PC o Mobile
Si scarica il package e poi lo si importa all’interno di Unity
Basta sostituire la camera o il player controller standard con
il corrispettivo VR
Sviluppare per la VR
Peculiarità dello sviluppo in VR:
• UX da reinventare
•
•
I classici HUD sono sconsigliati
•
Assenza di standard
La VR introduce dei nuovi meccanismi
di input
• Alto FPS (90 Hz)
•
•
Bisogna tornare ad ottimizzare le scene
Criticità soprattutto per visori mobile
• Presence e virtual sickness
Come interagire o muoversi in VR?
Mal di «virtuale» (Motion Sickness)
Strategie da adottare
•
•
•
•
•
•
•
•
•
•
Attenzione a cosa e quando si mangia
Ambiente tranquillo
Configurare il profilo utente
Configurare i visori per uso confortevole
Stare seduti
Iniziare lentamente
Prendere il proprio tempo
Fare pause
Imparare a riconoscere i sintomi
Smettere immediatamente
Consigli per le app VR
•
•
•
•
•
•
Ridurre movimenti automatici
Accelerazioni brevi e non frequenti
Solo movimenti di camera controllati dall’utente
Eliminare il dondolio della testa in prima persona
Ridurre i movimenti laterali o all’indietro
Evitare scale o pattern ripetitivi
Possibili soluzioni
Tutti i nomi, immagini, prodotti, marchi registrati citati sono di proprietà dei rispettivi proprietari.
ImmotionRoom
Soluzione completa per poter vivere la realtà virtuale
con tutto il proprio corpo.
Unisce tecnologie diverse:
• Sensori per rilevare la posa del giocatore
•
Anche non indossati, come Kinect
• Visori per fornire la realtà virtuale
ImmotionRoom
Il funzionamento è il seguente:
•
Una stanza viene attrezzata con sensori (ad es. Microsoft Kinect) e
configurata
•
•
Viene lanciata l’esperienza di realtà virtuale
Gli utenti, indossando semplicemente il visore
(nel caso delle Kinect), vivono l’esperienza VR
con tutto il proprio avatar
•
•
•
Vedono il proprio corpo
Interagiscono con mani e piedi
Si muovono senza nausea camminando sul posto
ImmotionRoom
Permette di risolvere molti dei problemi appena enunciati:
• Presence aumentata dalla presenza dell’avatar
• Motion sickness ridotta dal room-scale e dal walk-scale
ImmotionRoom
Funzionalità:
•
•
•
•
•
•
•
•
•
Tracciatura multi-corpo a 360°
Camminata naturale sul posto + tracking posizionale a
livello stanza
Interazioni naturali con mani/piedi
Avatar personalizzabile
Compatibilità cross-device
• Visori: Oculus Rift, Gear VR, Razer OSVR,
Google Cardboard
• Sensori: Kinect v2; Kinect v1 e VicoVR (in
prossimi update)
Compatibilità cross-platform
• Windows/Android
Plugin per Unity 3D
Setup Plug-and-Play
• Wired e/o Wireless
• App di configurazione per PC/mobile
Open by design
ImmotionRoom SDK
Beta scaricabile dal sito di Immotionar
•
•
Viene fornito il runtime da installare sulle varie machine
•
Astrae l’esperienza dal tipo di sensore utilizzato
Unity plugin per poter sviluppare esperienze VR
•
•
•
•
Stessa filosofia drag-and-drop degli altri package VR
Semplice da utilizzare, con molti parametri di configurazione
Fornisce dati di basso o alto livello
Compatibile con tutti i più noti visori
•
•
Lo sviluppatore può aggiungere il supporto per nuovi device
Può anche essere utilizzato senza la realtà virtuale
ImmotionRoom SDK
Andiamo a sviluppare una piccolo demo…
ImmotionRoom SDK
Riassumendo:
• Per
implementare ImmotionRoom nel proprio
gioco, basta sostituire il player controller standard
con quello di ImmotionRoom
Ovviamente
ripensata
l’interazione
dell’utente
deve
essere
• Si
può cambiare l’avatar a proprio piacimento
andando a cambiare gli script relativi all’avateering
• Si può accedere ai dati di basso livello
• Gestione interazione utente mediante
mani e piedi
collider su
ImmotionRoom SDK
Andiamo a vedere una demo che stiamo sviluppando…
ImmotionRoom SDK
Grazie per la vostra attenzione!
Se avete domande…
Contatti
Web
http://www.immotionar.com
Email
[email protected]
[email protected]
[email protected]
@immotionar @giannirg @SkarredGhost