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