[email protected] - @giannirg
Presence in VR: ImmotionRoomGianni Rosa Gallina & Antony Vitillo
Torino, 23 Settembre 2016
[email protected] - @SkarredGhost
Sponsor
Dr. Gianni ROSA GALLINAHead of division e Software Architect
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
@giannirg
Chi siamo
Dr. Antony VITILLOPR e Chief R&D Developer
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 InformaticaPolitecnico di Torino, 2007
@SkarredGhost
Chi siamo
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 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
• Si fa la build per PC o Mobile
Sviluppare per la VR
Peculiarità dello sviluppo in VR:
• UX da reinventare
• I classici HUD sono sconsigliati
• La VR introduce dei nuovi meccanismi
di input
• Assenza di standard
• 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 l’interazione dell’utente deve essere
ripensata
• 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 collider su
mani e piedi
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
@immotionar @giannirg @SkarredGhost