SlideShare a Scribd company logo
DEVELOPING VR IN UNITY
ADITYO PRATOMO - LABTEK INDIE
DEVELOPING VR IN UNITY
ABOUT ME
▸ Chief Technology Officer at
Labtek Indie
▸ Chief Academic Officer at
Froyo Framework
▸ Certified Unity Developer
#20167UCD724
▸ Loves to tinker with tech
DEVELOPING VR IN UNITY
VR IN LABTEK INDIE
It’s Strange (2015)
Oculus Rift & Leap Motion, developed in Unity
https://irunsiregar.itch.io/its-strange
https://www.youtube.com/watch?v=oTii7SSfyLM
DEVELOPING VR IN UNITY
VR IN LABTEK INDIE
Combat League (2016)
Oculus Rift, developed in Unreal Engine
https://www.youtube.com/watch?v=1sHrSOe8JM8
DEVELOPING VR IN UNITY
VR IN LABTEK INDIE
99 Names (2015)
Web VR, developed in JS with ThreeJS
99names.adityo.net
DEVELOPING VR IN UNITY
VR IN LABTEK INDIE
Mixed Reality Experiment
Google Cardboard devloped in Unity with Vuforia SDK
http://www.adityo.net/?p=1146
DEVELOPING VR IN UNITY
WHAT I’LL TALK
▸ VR Tech Overview
▸ Desktop VR vs Mobile VR
▸ VR in Unity
▸ Interaction in VR
▸ Towards Better VR Experience
▸ Future Prediction
NOW IS THE TIME TO START MAKING SOMETHING IN VR, EVEN IF
YOU DON'T PLAN ON LAUNCHING IT. IT IS A REALLY GOOD IDEA
TO START EXPERIMENTING AND SEE WHAT YOU CAN LEARN.
EVEN IF YOU'RE NOT GOING TO LAUNCH SOMETHING, IT IS GOOD
TO HAVE EXPERIENCE IN VIRTUAL REALITY SO THAT IF IT MAKES
SENSE FOR YOU TO GET INTO IT, YOU'RE ABLE TO
Palmer Luckey (Co-founder of Oculus)
DEVELOPING VR IN UNITY
DEVELOPING VR IN UNITY
VR TECH OVERVIEW
▸ VR is a tech that creates new perception of reality in the
mind of its users
▸ Achieved through the use of HMD (Head Mounted
Display) that tricks its user into thinking he/she is in a
different place
▸ Closely related to AR, but not similar nor has hierarchical
relation
DEVELOPING VR IN UNITY
VR TECH OVERVIEW
DEVELOPING VR IN UNITY
VR TECH OVERVIEW
1. Lens
‣ Emulating depth via focal point adjustment
2. Display
‣ Stereo rendering
‣ FOV emulates real life view
3. Tracking Technology
‣ Tracking head movement
‣ Uses gyro and accelerometer in smartphone
4. 3D Audio
‣ Immersive 3D audio
DEVELOPING VR IN UNITY
CURRENT VR PLATFORMS
PC
ANDROID
CONSOLE
OCULUS RIFT HTC VIVE
GOOGLE VR
(CARDBOARD & DAYDREAM)
SAMSUNG
GEAR VR
PS VR
OSVR
DEVELOPING VR IN UNITY
DESKTOP VR VS MOBILE VR: FROM THE TECH SIDE
▸ Desktop VR requires more horse power, but has potential
for many kind of interaction and contents
▸ Mobile VR experience is hampered by the device’s spec
▸ Desktop VR can do positional tracking
▸ Mobile VR can only do head positional tracking
▸ Batteries vs Cable
▸ Both do VR content rendering in roughly the same way
DEVELOPING VR IN UNITY
DESKTOP VR VS MOBILE VR: FROM THE BUSINESS SIDE
▸ Mobile VR has lower entry barrier, mid-high end Android
phone is sufficient
▸ Desktop VR requires high end gaming rig
▸ Mobile VR has way larger potential market than Desktop
▸ Desktop VR will interests hardcore gamer
▸ Mobile VR will interests budget-oriented gadget
enthusiasts
DEVELOPING VR IN UNITY
DESKTOP VR VS MOBILE VR
▸ Mobile VR will help promoting VR to the masses
▸ Desktop VR will help pushing the boundaries, tech wise
▸ Both is ready for mass development, NOW!
DEVELOPING VR IN UNITY
WHY DEVELOP VR NOW?
▸ Relatively new tech
▸ Still no best practice sets in stone
▸ Experiments are highly appreciated
▸ Big or small developers, everybody are still finding its feet
▸ YOU can make the difference
DEVELOPING VR IN UNITY
VR IN UNITY PC
OCULUS RIFT HTC VIVE OSVR
OCULUS RIFT DK2 / CV1
WIN 7+
UNITY 5.X
DEVELOPING VR IN UNITY
VR IN UNITY PC
OCULUS RIFT HTC VIVE OSVR
HTC VIVE
WIN 7+
UNITY 5.X
DEVELOPING VR IN UNITY
VR IN UNITY PC
OCULUS RIFT HTC VIVE OSVR
OSVR HMD
WIN 7+
UNITY 5.X
DEVELOPING VR IN UNITY
VR IN UNITY ANDROID
GOOGLE VR
(CARDBOARD & DAYDREAM)
SAMSUNG
GEAR VR
ANDROID VR HMD
ANDROID 5.1 +
UNITY 5.X
GOOGLE CARDBOARD SDK
NEXUS 6 (DAYDREAM)
DEVELOPING VR IN UNITY
VR IN UNITY ANDROID
GOOGLE VR
(CARDBOARD & DAYDREAM)
SAMSUNG
GEAR VR
ANDROID VR HMD
ANDROID 5.1 +
UNITY 5.X
VUFORIA SDK
DEVELOPING VR IN UNITY
VR IN UNITY ANDROID
GOOGLE VR
(CARDBOARD & DAYDREAM)
SAMSUNG
GEAR VR
ANDROID 5.1 +
UNITY 5.X
SAMSUNG GALAXY S7
SAMSUNG GEAR VR
DEVELOPING VR IN UNITY
VR IN UNITY: GENERAL ARCHITECTURE
▸ Default camera is replaced
by vendor-specific VR camera
(usually comes as prefab)
▸ VR Camera will render the
game scene to be VR-ready
▸ Other game objects are used
as usual
GAME SCENE
VR CAMERA
OTHER GAME OBJECTS
DEVELOPING VR IN UNITY
VR IN UNITY: TIPS FOR THE FIRST TIMER
▸ Most of the time, you’ll wrestle with setting up specific
environment
▸ Oculus: Get the latest SDK and fulfil the requirements,
use Rift DK2 at least, don’t use laptop
▸ Android: setup Android SDK properly, Google and
Vuforia SDKs are generally easy to set up
DEVELOPING VR IN UNITY
VR IN UNITY
▸ After replacing the Main Camera object with the vendor-
specific, AR Camera prefab, you’re done.
▸ EASY!
▸ Demo…
WHAT ELSE TO
DO?
if getting VR to up and run is easy, then
LET’S TALK ABOUT
INTERACTION
DEVELOPING VR IN UNITY
INTERACTION IN VR
▸ With headset strapped on, it’s hard to look around
▸ Mouse + keyboard, won’t be the best way to interact
DEVELOPING VR IN UNITY
INTERACTION IN VR
LOOK
AROUND
GAMEPAD
INTERACTION
GAZE
INTERACTION
NATURAL INTERACTION (AVAILABLE NOW)
OCULUS
TOUCH
VIVE
CONTROLLER
GOOGLE
DAYDREAM
LEAP
MOTION
EXPERIMENTAL INTERACTION (DIY)
VOICE
CONTROLLER
CUSTOM ELECTRONIC
(ARDUINO / RPI / ETC)
?
easy to develop,
minimal interaction
harder to develop,
rich interaction
DEVELOPING VR IN UNITY
INTERACTION IN VR: LOOK AROUND
▸ The most basic thing you can do inside VR
▸ Replacing traditional FPS camera, controlled by mouse,
with your head
▸ Results in a natural, immersive experience
▸ Used in many VR videos
▸ Minimum interaction, but can still produces excellent
experience
DEVELOPING VR IN UNITY
360 PHOTOS / VIDEOS IN UNITY
▸ Generally speaking, here are the steps:
▸ Obtain 360 photo/video
▸ Make a skybox using sphere/cube
▸ Use the photo/video as the texture for the skybox
DEVELOPING VR IN UNITY
360 PHOTOS / VIDEOS IN UNITY
DEVELOPING VR IN UNITY
360 PHOTOS / VIDEOS IN UNITY
▸ Plugin:
▸ Easy Movie Texture (https://www.assetstore.unity3d.com/en/#!/
content/10032)
▸ Discussions:
▸ http://bernieroehl.com/360stereoinunity/
▸ http://forum.unity3d.com/threads/projecting-a-360-degree-vr-
video-on-a-sphere.376522/
▸ http://talesfromtherift.com/use-a-360-degree-panorama-as-a-
skybox/
DEVELOPING VR IN UNITY
GAZE INTERACTION
▸ Using eye as an input
▸ Activating an object by looking at it for a certain period
▸ (Optional) use Gaze Reticle to help user find it’s view’s
crosshair
DEVELOPING VR IN UNITY
GAZE INTERACTION
DEVELOPING VR IN UNITY
GAZE INTERACTION
▸ Google Cardboard SDK:
▸ Use GvrGaze script
▸ Drag the script from Assets/GoogleVR/Scripts/UI/
GvrGaze onto to the camera
▸ Implement IGvrGazePointer and
IGvrGazeResponder to the interactive object
▸ Vuforia SDK uses Google’s Gaze
DEVELOPING VR IN UNITY
NATURAL INTERACTION WITH LEAP MOTION
▸ Leap Motion offers the
ability to track hand
gestures
▸ It can be sticked in front of
Oculus/Vive to enable user
to see his/her hands
▸ Thus, enables a natural
interaction using hands,
while inside VR
DEVELOPING VR IN UNITY
NATURAL INTERACTION WITH LEAP MOTION
DEVELOPING VR WITH UNITY
NATURAL INTERACTION WITH LEAP MOTION
▸ Download and Import the Leap Motion Core Assets
Unity Package
▸ Use the LeapOVRPlayerController Prefab from the
Leap Motion + OVR directory as the main VR Camera
▸ The hand will be added to the screen and acts as a 3D
objects, just like the others (with colliders too!)
DEVELOPING VR IN UNITY
EXPERIMENTAL INTERACTION: VOICE CONTROL
▸ Use voice to give input to the VR world
▸ Closely tied to the deployment platform
▸ iOS, Android, Windows, Mac, has its own voice
recognition system
▸ Unity 5.4 can natively do voice recognition in Windows
(https://developer.microsoft.com/en-us/windows/
holographic/voice_input_in_unity)
DEVELOPING VR IN UNITY
EXPERIMENTAL INTERACTION: VOICE CONTROL
▸ Unity-only solution:
▸ Ispikit: https://github.com/ispikit/ispikit-unity
▸ Word Detection: https://www.assetstore.unity3d.com/en/#!/
content/4518
▸ Unity + other:
▸ Read Serial in Unity
▸ Do voice recognition in other using Python/NodeJS/etc and
send serial from there
DEVELOPING VR IN UNITY
EXPERIMENTAL INTERACTION: CUSTOM ELECTRONIC
▸ If you have something different, why not make it yourself
▸ Use Arduino / Raspberry Pi / etc. to read from certain
sensor and send its data to Unity
▸ Vital to create haptic feedback and experimenting with
different kinds of interaction
▸ Make one of a kind immersive experience
DEVELOPING VR IN UNITY
EXPERIMENTAL INTERACTION: CUSTOM ELECTRONIC
DEVELOPING VR IN UNITY
EXPERIMENTAL INTERACTION: CUSTOM ELECTRONIC
▸ Use Unity to receive Serial data
▸ Android & Microcontroller Bluetooth: https://
www.assetstore.unity3d.com/en/#!/content/16467
▸ SimpleSerialPort: https://www.assetstore.unity3d.com/en/#!/
content/53594
▸ Attach sensors to Arduino/Raspberry Pi/other
▸ Send data via Serial/Bluetooth
▸ Watch out for latency!
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Simulation sickness is VR’s biggest enemy
▸ Cause: brain is tricked to feel movement, while static
▸ When that trick is broken, nausea attacks, users opt out
from the experience (and probably won’t come back)
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Technical causes:
▸ Latency (maximum should be 20ms)
▸ Many research has gone into how to solve this issue
▸ Many solutions, but none has quite hits the mark
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Hardware design solution:
▸ More comfortable lens
▸ More comfortable HMD when strapped on
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Content design:
▸ Adding nose and feet
▸ Shows a fixed reference point in a frame
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Game design - movement:
▸ In-game movement have more latency potential than
standing still
▸ objects are continuously and dynamically rendered in real-
time
▸ more processing power
▸ To move around, use teleport
▸ Teleport can be done with gaze interaction, no controller is
required
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
Keep Talking and Nobody Explodes
www.keeptalkinggame.com
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Game design - movement:
▸ To move around:
▸ use teleport
▸ use pre-determined route
▸ Teleport can be done with gaze interaction, no controller is
required
▸ Pre-determined route will ease us in optimizing assets
▸ Don’t add unnecessary vertical movement
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
Teleport:
https://developer.oculus.com/blog/introducing-the-
oculus-sample-framework-for-unity-5/
INMIND VR:
https://developer.oculus.com/blog/introducing-the-
oculus-sample-framework-for-unity-5/
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Game design - camera view:
▸ It’s natural to have first person view, but it’s easier to
result in simulation sickness
▸ To reduce that, use third person view, it will still have
good experience
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
Chronos:
www.chronosvr.com
Colosse:
colossevr.tumblr.com
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Tech tips:
▸ Use low poly objects, with high-res textures to
compensate
▸ Toon-shading is okay, photorealistic can probably
causes latency
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
Job Simulator:
www.jobsimulatorgame.com
Land’s End:
www.landsendgame.com
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
▸ Tech tips:
▸ Use as many static object as possible (uses least RAM)
▸ Use LOD, culling and batching to prevent rendering too
many object at the same time
▸ Use as many baked lighting as possible
▸ https://unity3d.com/learn/tutorials/topics/virtual-reality/
optimisation-vr-unity
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE
▸ Experience design:
▸ Design experience from the ground up, don’t just adapt
already available 3D game to VR
▸ VR is now best experienced in short but meaningful time
(5-20 minutes)
▸ Design focal point, because the user can look into any
direction
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE
▸ UI design:
▸ Make sure the user can see the UI at any time
▸ Go for “no-UI” style, embed the required information in
the objects, just like in normal life
▸ Enable the player to look around, even when in pause
mode
DEVELOPING VR IN UNITY
TOWARDS BETTER VR EXPERIENCE
DEVELOPING VR IN UNITY
FUTURE PREDICTION
▸ Lower cost of desktop VR
▸ WebVR
▸ VR beyond entertainment
AT THE SAME TIME, I'D SAY DEVELOPERS SHOULD BE REALISTIC. DON'T
BELIEVE THE MOST OPTIMISTIC THINGS THE ANALYSTS SAY. ESPECIALLY
WHEN THOSE ANALYSTS DON'T ACTUALLY KNOW ANYTHING ABOUT VR.
IT'S GOING TO TAKE TIME FOR VIRTUAL REALITY TO BECOME TRULY
MASS MARKET AND SUCCESSFUL, SO PEOPLE SHOULD SCALE THEIR
EFFORTS APPROPRIATELY.
Palmer Luckey (Co-founder of Oculus)
DEVELOPING VR IN UNITY
THANK YOUdidit@labtekindie.com
@kotakmakan

More Related Content

PDF
Creating a Virtual Reality in Unity - by Unity Evangelist Kelvin Lo
PDF
Introduction to mixed reality (XR)
PDF
Building VR Applications For Google Cardboard
PDF
Easy Virtual Reality
PDF
Developing VR Experiences with Unity
PPTX
Mini workshop on ar vr using unity3 d
PDF
The Next Generation of Human Computer Interaction
PPTX
Augmented World Expo 2013 Mobile AR SDK Comparison and Tutorial
Creating a Virtual Reality in Unity - by Unity Evangelist Kelvin Lo
Introduction to mixed reality (XR)
Building VR Applications For Google Cardboard
Easy Virtual Reality
Developing VR Experiences with Unity
Mini workshop on ar vr using unity3 d
The Next Generation of Human Computer Interaction
Augmented World Expo 2013 Mobile AR SDK Comparison and Tutorial

What's hot (20)

PDF
COMP 4010 - Lecture 7: Introduction to Augmented Reality
PPTX
Augmented World Expo 2014 Wearable SDK Overview
PDF
Mobile AR Lecture 5 - Location Based AR
PPTX
Mini workshop on ar vr using unity3 d
PDF
COMP 4010 - Lecture 7: Introduction to Augmented Reality
PDF
VSMM 2016 Keynote: Using AR and VR to create Empathic Experiences
PDF
COMP 4010 - Lecture10: Mobile AR
PDF
COMP 4010 Lecture6 - Virtual Reality Input Devices
PDF
COMP 4010: Lecture8 - AR Technology
PDF
Getting started with Unity and AR/VR for the .NET developer - October 2020
PPTX
VR and Gamification Trend & Application in Sports
PPT
Virtual Reality - Get in the Game
PDF
2016 AR Summer School - Lecture 5
PDF
2016 AR Summer School Lecture2
PDF
Mobile AR Lecture1-introduction
PDF
COMP 4010 - Lecture 8 AR Technology
PDF
How to create powerfully interactive & collaborative VR applications - Sébast...
PPTX
Developing Virtual Reality Application using Google Cardboard
PDF
Immersive Virtual Reality
PDF
Ubiquitous Computer Vision in IoT
COMP 4010 - Lecture 7: Introduction to Augmented Reality
Augmented World Expo 2014 Wearable SDK Overview
Mobile AR Lecture 5 - Location Based AR
Mini workshop on ar vr using unity3 d
COMP 4010 - Lecture 7: Introduction to Augmented Reality
VSMM 2016 Keynote: Using AR and VR to create Empathic Experiences
COMP 4010 - Lecture10: Mobile AR
COMP 4010 Lecture6 - Virtual Reality Input Devices
COMP 4010: Lecture8 - AR Technology
Getting started with Unity and AR/VR for the .NET developer - October 2020
VR and Gamification Trend & Application in Sports
Virtual Reality - Get in the Game
2016 AR Summer School - Lecture 5
2016 AR Summer School Lecture2
Mobile AR Lecture1-introduction
COMP 4010 - Lecture 8 AR Technology
How to create powerfully interactive & collaborative VR applications - Sébast...
Developing Virtual Reality Application using Google Cardboard
Immersive Virtual Reality
Ubiquitous Computer Vision in IoT
Ad

Viewers also liked (20)

PDF
Unity vr jam_kelvin_1127
PPTX
Getting Started with C/C# Game Development Part 1
PPTX
Introduction to wave engine
PDF
沖縄まで踊りに来たぜ!VR/AR/MR最前線
PDF
VR/AR/MRってなんですか?
PDF
Virtual Reality met HTC Vive
PPTX
Gaze detection with Virtual Reality and Unity 3d
PDF
Unity L01 - Game Development
PPTX
EA: Optimization of mobile Unity application
PDF
Designing for all the Rs (VR/AR/SR/MR/HR/etc...)
PPTX
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015
PPTX
Unity Optimization Tips, Tricks and Tools
PPTX
Unity - Game Engine
PPTX
Developing for Room-Scale VR Using Unity3d
PDF
COMP 4026 - Lecture 1
PDF
Mobile AR Lecture6 - Introduction to Unity 3D
PDF
The Basics of Unity - The Game Engine
PDF
Virtual Reality: Are You Ready? - SMPS Presentation Boaz Ashkenazy
PDF
The Spoon: VR Outlook in Hong Kong - September 2016
PDF
Building AR and VR Experiences
Unity vr jam_kelvin_1127
Getting Started with C/C# Game Development Part 1
Introduction to wave engine
沖縄まで踊りに来たぜ!VR/AR/MR最前線
VR/AR/MRってなんですか?
Virtual Reality met HTC Vive
Gaze detection with Virtual Reality and Unity 3d
Unity L01 - Game Development
EA: Optimization of mobile Unity application
Designing for all the Rs (VR/AR/SR/MR/HR/etc...)
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015
Unity Optimization Tips, Tricks and Tools
Unity - Game Engine
Developing for Room-Scale VR Using Unity3d
COMP 4026 - Lecture 1
Mobile AR Lecture6 - Introduction to Unity 3D
The Basics of Unity - The Game Engine
Virtual Reality: Are You Ready? - SMPS Presentation Boaz Ashkenazy
The Spoon: VR Outlook in Hong Kong - September 2016
Building AR and VR Experiences
Ad

Similar to Developing VR in Unity (20)

PDF
Developing AR and VR Experiences with Unity
PPTX
[DevDay2018] Developing for VR/AR with Unity - By: Tu Phan and VR/AR Team, De...
PDF
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
PDF
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
PPTX
VR Devices and Methods of Development
PPTX
Building the Matrix: Your First VR App (SVCC 2016)
PPTX
Eyes Wide Open - Amir Ebrahimi
PDF
SAE AR/VR - The challenges of creating a VR application with Unity
PPTX
Unity Basics and Mobile VR
PPTX
Introduction to DaydreamVR from DevFestDC 2017
PDF
Virtual Reality: Learn to Maximize Present and Future Creative Possibilities!
PPTX
Introduction to daydream for AnDevCon DC - 2017
PPTX
Intro to VR with Unreal Engine
PPTX
Developing Games For VR - Lessons Learned
PDF
Let’s get real: An introduction to AR, VR, MR, XR and more
PPTX
Mobile VR, Programming, Rendering
PDF
Cardboard VR: Building Low Cost VR Experiences
PDF
STEM Camp Virtual Reality
PPTX
Getting started with immersive technologies
PPTX
Virtual reality
Developing AR and VR Experiences with Unity
[DevDay2018] Developing for VR/AR with Unity - By: Tu Phan and VR/AR Team, De...
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
VR Devices and Methods of Development
Building the Matrix: Your First VR App (SVCC 2016)
Eyes Wide Open - Amir Ebrahimi
SAE AR/VR - The challenges of creating a VR application with Unity
Unity Basics and Mobile VR
Introduction to DaydreamVR from DevFestDC 2017
Virtual Reality: Learn to Maximize Present and Future Creative Possibilities!
Introduction to daydream for AnDevCon DC - 2017
Intro to VR with Unreal Engine
Developing Games For VR - Lessons Learned
Let’s get real: An introduction to AR, VR, MR, XR and more
Mobile VR, Programming, Rendering
Cardboard VR: Building Low Cost VR Experiences
STEM Camp Virtual Reality
Getting started with immersive technologies
Virtual reality

More from Adityo Pratomo (11)

PDF
Managing Infrastructure as a Product - Introduction to Platform Engineering
PDF
Designing with Code
PDF
Developing Serverless Microservice in Rust
PPTX
Let The Machine Helps
PDF
Introducing Rust
PPTX
Empowering Users: UX Lesson from Game Design
PDF
Prototyping GNOME UI for Gestural Input
PDF
Coding as Intersection of Art and Technology
PPTX
Interactive Data Visualization with Tangible User Interface
PDF
Adityo Pratomo - Grounding Presentation PDF
KEY
Adityo Pratomo - Grounding Assignment
Managing Infrastructure as a Product - Introduction to Platform Engineering
Designing with Code
Developing Serverless Microservice in Rust
Let The Machine Helps
Introducing Rust
Empowering Users: UX Lesson from Game Design
Prototyping GNOME UI for Gestural Input
Coding as Intersection of Art and Technology
Interactive Data Visualization with Tangible User Interface
Adityo Pratomo - Grounding Presentation PDF
Adityo Pratomo - Grounding Assignment

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPT
Teaching material agriculture food technology
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Encapsulation theory and applications.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
cuic standard and advanced reporting.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
KodekX | Application Modernization Development
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Teaching material agriculture food technology
Digital-Transformation-Roadmap-for-Companies.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Electronic commerce courselecture one. Pdf
Encapsulation_ Review paper, used for researhc scholars
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Chapter 3 Spatial Domain Image Processing.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Encapsulation theory and applications.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
cuic standard and advanced reporting.pdf
20250228 LYD VKU AI Blended-Learning.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
KodekX | Application Modernization Development

Developing VR in Unity

  • 1. DEVELOPING VR IN UNITY ADITYO PRATOMO - LABTEK INDIE
  • 2. DEVELOPING VR IN UNITY ABOUT ME ▸ Chief Technology Officer at Labtek Indie ▸ Chief Academic Officer at Froyo Framework ▸ Certified Unity Developer #20167UCD724 ▸ Loves to tinker with tech
  • 3. DEVELOPING VR IN UNITY VR IN LABTEK INDIE It’s Strange (2015) Oculus Rift & Leap Motion, developed in Unity https://irunsiregar.itch.io/its-strange https://www.youtube.com/watch?v=oTii7SSfyLM
  • 4. DEVELOPING VR IN UNITY VR IN LABTEK INDIE Combat League (2016) Oculus Rift, developed in Unreal Engine https://www.youtube.com/watch?v=1sHrSOe8JM8
  • 5. DEVELOPING VR IN UNITY VR IN LABTEK INDIE 99 Names (2015) Web VR, developed in JS with ThreeJS 99names.adityo.net
  • 6. DEVELOPING VR IN UNITY VR IN LABTEK INDIE Mixed Reality Experiment Google Cardboard devloped in Unity with Vuforia SDK http://www.adityo.net/?p=1146
  • 7. DEVELOPING VR IN UNITY WHAT I’LL TALK ▸ VR Tech Overview ▸ Desktop VR vs Mobile VR ▸ VR in Unity ▸ Interaction in VR ▸ Towards Better VR Experience ▸ Future Prediction
  • 8. NOW IS THE TIME TO START MAKING SOMETHING IN VR, EVEN IF YOU DON'T PLAN ON LAUNCHING IT. IT IS A REALLY GOOD IDEA TO START EXPERIMENTING AND SEE WHAT YOU CAN LEARN. EVEN IF YOU'RE NOT GOING TO LAUNCH SOMETHING, IT IS GOOD TO HAVE EXPERIENCE IN VIRTUAL REALITY SO THAT IF IT MAKES SENSE FOR YOU TO GET INTO IT, YOU'RE ABLE TO Palmer Luckey (Co-founder of Oculus) DEVELOPING VR IN UNITY
  • 9. DEVELOPING VR IN UNITY VR TECH OVERVIEW ▸ VR is a tech that creates new perception of reality in the mind of its users ▸ Achieved through the use of HMD (Head Mounted Display) that tricks its user into thinking he/she is in a different place ▸ Closely related to AR, but not similar nor has hierarchical relation
  • 10. DEVELOPING VR IN UNITY VR TECH OVERVIEW
  • 11. DEVELOPING VR IN UNITY VR TECH OVERVIEW 1. Lens ‣ Emulating depth via focal point adjustment 2. Display ‣ Stereo rendering ‣ FOV emulates real life view 3. Tracking Technology ‣ Tracking head movement ‣ Uses gyro and accelerometer in smartphone 4. 3D Audio ‣ Immersive 3D audio
  • 12. DEVELOPING VR IN UNITY CURRENT VR PLATFORMS PC ANDROID CONSOLE OCULUS RIFT HTC VIVE GOOGLE VR (CARDBOARD & DAYDREAM) SAMSUNG GEAR VR PS VR OSVR
  • 13. DEVELOPING VR IN UNITY DESKTOP VR VS MOBILE VR: FROM THE TECH SIDE ▸ Desktop VR requires more horse power, but has potential for many kind of interaction and contents ▸ Mobile VR experience is hampered by the device’s spec ▸ Desktop VR can do positional tracking ▸ Mobile VR can only do head positional tracking ▸ Batteries vs Cable ▸ Both do VR content rendering in roughly the same way
  • 14. DEVELOPING VR IN UNITY DESKTOP VR VS MOBILE VR: FROM THE BUSINESS SIDE ▸ Mobile VR has lower entry barrier, mid-high end Android phone is sufficient ▸ Desktop VR requires high end gaming rig ▸ Mobile VR has way larger potential market than Desktop ▸ Desktop VR will interests hardcore gamer ▸ Mobile VR will interests budget-oriented gadget enthusiasts
  • 15. DEVELOPING VR IN UNITY DESKTOP VR VS MOBILE VR ▸ Mobile VR will help promoting VR to the masses ▸ Desktop VR will help pushing the boundaries, tech wise ▸ Both is ready for mass development, NOW!
  • 16. DEVELOPING VR IN UNITY WHY DEVELOP VR NOW? ▸ Relatively new tech ▸ Still no best practice sets in stone ▸ Experiments are highly appreciated ▸ Big or small developers, everybody are still finding its feet ▸ YOU can make the difference
  • 17. DEVELOPING VR IN UNITY VR IN UNITY PC OCULUS RIFT HTC VIVE OSVR OCULUS RIFT DK2 / CV1 WIN 7+ UNITY 5.X
  • 18. DEVELOPING VR IN UNITY VR IN UNITY PC OCULUS RIFT HTC VIVE OSVR HTC VIVE WIN 7+ UNITY 5.X
  • 19. DEVELOPING VR IN UNITY VR IN UNITY PC OCULUS RIFT HTC VIVE OSVR OSVR HMD WIN 7+ UNITY 5.X
  • 20. DEVELOPING VR IN UNITY VR IN UNITY ANDROID GOOGLE VR (CARDBOARD & DAYDREAM) SAMSUNG GEAR VR ANDROID VR HMD ANDROID 5.1 + UNITY 5.X GOOGLE CARDBOARD SDK NEXUS 6 (DAYDREAM)
  • 21. DEVELOPING VR IN UNITY VR IN UNITY ANDROID GOOGLE VR (CARDBOARD & DAYDREAM) SAMSUNG GEAR VR ANDROID VR HMD ANDROID 5.1 + UNITY 5.X VUFORIA SDK
  • 22. DEVELOPING VR IN UNITY VR IN UNITY ANDROID GOOGLE VR (CARDBOARD & DAYDREAM) SAMSUNG GEAR VR ANDROID 5.1 + UNITY 5.X SAMSUNG GALAXY S7 SAMSUNG GEAR VR
  • 23. DEVELOPING VR IN UNITY VR IN UNITY: GENERAL ARCHITECTURE ▸ Default camera is replaced by vendor-specific VR camera (usually comes as prefab) ▸ VR Camera will render the game scene to be VR-ready ▸ Other game objects are used as usual GAME SCENE VR CAMERA OTHER GAME OBJECTS
  • 24. DEVELOPING VR IN UNITY VR IN UNITY: TIPS FOR THE FIRST TIMER ▸ Most of the time, you’ll wrestle with setting up specific environment ▸ Oculus: Get the latest SDK and fulfil the requirements, use Rift DK2 at least, don’t use laptop ▸ Android: setup Android SDK properly, Google and Vuforia SDKs are generally easy to set up
  • 25. DEVELOPING VR IN UNITY VR IN UNITY ▸ After replacing the Main Camera object with the vendor- specific, AR Camera prefab, you’re done. ▸ EASY! ▸ Demo…
  • 26. WHAT ELSE TO DO? if getting VR to up and run is easy, then
  • 28. DEVELOPING VR IN UNITY INTERACTION IN VR ▸ With headset strapped on, it’s hard to look around ▸ Mouse + keyboard, won’t be the best way to interact
  • 29. DEVELOPING VR IN UNITY INTERACTION IN VR LOOK AROUND GAMEPAD INTERACTION GAZE INTERACTION NATURAL INTERACTION (AVAILABLE NOW) OCULUS TOUCH VIVE CONTROLLER GOOGLE DAYDREAM LEAP MOTION EXPERIMENTAL INTERACTION (DIY) VOICE CONTROLLER CUSTOM ELECTRONIC (ARDUINO / RPI / ETC) ? easy to develop, minimal interaction harder to develop, rich interaction
  • 30. DEVELOPING VR IN UNITY INTERACTION IN VR: LOOK AROUND ▸ The most basic thing you can do inside VR ▸ Replacing traditional FPS camera, controlled by mouse, with your head ▸ Results in a natural, immersive experience ▸ Used in many VR videos ▸ Minimum interaction, but can still produces excellent experience
  • 31. DEVELOPING VR IN UNITY 360 PHOTOS / VIDEOS IN UNITY ▸ Generally speaking, here are the steps: ▸ Obtain 360 photo/video ▸ Make a skybox using sphere/cube ▸ Use the photo/video as the texture for the skybox
  • 32. DEVELOPING VR IN UNITY 360 PHOTOS / VIDEOS IN UNITY
  • 33. DEVELOPING VR IN UNITY 360 PHOTOS / VIDEOS IN UNITY ▸ Plugin: ▸ Easy Movie Texture (https://www.assetstore.unity3d.com/en/#!/ content/10032) ▸ Discussions: ▸ http://bernieroehl.com/360stereoinunity/ ▸ http://forum.unity3d.com/threads/projecting-a-360-degree-vr- video-on-a-sphere.376522/ ▸ http://talesfromtherift.com/use-a-360-degree-panorama-as-a- skybox/
  • 34. DEVELOPING VR IN UNITY GAZE INTERACTION ▸ Using eye as an input ▸ Activating an object by looking at it for a certain period ▸ (Optional) use Gaze Reticle to help user find it’s view’s crosshair
  • 35. DEVELOPING VR IN UNITY GAZE INTERACTION
  • 36. DEVELOPING VR IN UNITY GAZE INTERACTION ▸ Google Cardboard SDK: ▸ Use GvrGaze script ▸ Drag the script from Assets/GoogleVR/Scripts/UI/ GvrGaze onto to the camera ▸ Implement IGvrGazePointer and IGvrGazeResponder to the interactive object ▸ Vuforia SDK uses Google’s Gaze
  • 37. DEVELOPING VR IN UNITY NATURAL INTERACTION WITH LEAP MOTION ▸ Leap Motion offers the ability to track hand gestures ▸ It can be sticked in front of Oculus/Vive to enable user to see his/her hands ▸ Thus, enables a natural interaction using hands, while inside VR
  • 38. DEVELOPING VR IN UNITY NATURAL INTERACTION WITH LEAP MOTION
  • 39. DEVELOPING VR WITH UNITY NATURAL INTERACTION WITH LEAP MOTION ▸ Download and Import the Leap Motion Core Assets Unity Package ▸ Use the LeapOVRPlayerController Prefab from the Leap Motion + OVR directory as the main VR Camera ▸ The hand will be added to the screen and acts as a 3D objects, just like the others (with colliders too!)
  • 40. DEVELOPING VR IN UNITY EXPERIMENTAL INTERACTION: VOICE CONTROL ▸ Use voice to give input to the VR world ▸ Closely tied to the deployment platform ▸ iOS, Android, Windows, Mac, has its own voice recognition system ▸ Unity 5.4 can natively do voice recognition in Windows (https://developer.microsoft.com/en-us/windows/ holographic/voice_input_in_unity)
  • 41. DEVELOPING VR IN UNITY EXPERIMENTAL INTERACTION: VOICE CONTROL ▸ Unity-only solution: ▸ Ispikit: https://github.com/ispikit/ispikit-unity ▸ Word Detection: https://www.assetstore.unity3d.com/en/#!/ content/4518 ▸ Unity + other: ▸ Read Serial in Unity ▸ Do voice recognition in other using Python/NodeJS/etc and send serial from there
  • 42. DEVELOPING VR IN UNITY EXPERIMENTAL INTERACTION: CUSTOM ELECTRONIC ▸ If you have something different, why not make it yourself ▸ Use Arduino / Raspberry Pi / etc. to read from certain sensor and send its data to Unity ▸ Vital to create haptic feedback and experimenting with different kinds of interaction ▸ Make one of a kind immersive experience
  • 43. DEVELOPING VR IN UNITY EXPERIMENTAL INTERACTION: CUSTOM ELECTRONIC
  • 44. DEVELOPING VR IN UNITY EXPERIMENTAL INTERACTION: CUSTOM ELECTRONIC ▸ Use Unity to receive Serial data ▸ Android & Microcontroller Bluetooth: https:// www.assetstore.unity3d.com/en/#!/content/16467 ▸ SimpleSerialPort: https://www.assetstore.unity3d.com/en/#!/ content/53594 ▸ Attach sensors to Arduino/Raspberry Pi/other ▸ Send data via Serial/Bluetooth ▸ Watch out for latency!
  • 45. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Simulation sickness is VR’s biggest enemy ▸ Cause: brain is tricked to feel movement, while static ▸ When that trick is broken, nausea attacks, users opt out from the experience (and probably won’t come back)
  • 46. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Technical causes: ▸ Latency (maximum should be 20ms) ▸ Many research has gone into how to solve this issue ▸ Many solutions, but none has quite hits the mark
  • 47. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Hardware design solution: ▸ More comfortable lens ▸ More comfortable HMD when strapped on
  • 48. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Content design: ▸ Adding nose and feet ▸ Shows a fixed reference point in a frame
  • 49. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Game design - movement: ▸ In-game movement have more latency potential than standing still ▸ objects are continuously and dynamically rendered in real- time ▸ more processing power ▸ To move around, use teleport ▸ Teleport can be done with gaze interaction, no controller is required
  • 50. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS Keep Talking and Nobody Explodes www.keeptalkinggame.com
  • 51. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Game design - movement: ▸ To move around: ▸ use teleport ▸ use pre-determined route ▸ Teleport can be done with gaze interaction, no controller is required ▸ Pre-determined route will ease us in optimizing assets ▸ Don’t add unnecessary vertical movement
  • 52. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS Teleport: https://developer.oculus.com/blog/introducing-the- oculus-sample-framework-for-unity-5/ INMIND VR: https://developer.oculus.com/blog/introducing-the- oculus-sample-framework-for-unity-5/
  • 53. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Game design - camera view: ▸ It’s natural to have first person view, but it’s easier to result in simulation sickness ▸ To reduce that, use third person view, it will still have good experience
  • 54. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS Chronos: www.chronosvr.com Colosse: colossevr.tumblr.com
  • 55. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Tech tips: ▸ Use low poly objects, with high-res textures to compensate ▸ Toon-shading is okay, photorealistic can probably causes latency
  • 56. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS Job Simulator: www.jobsimulatorgame.com Land’s End: www.landsendgame.com
  • 57. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS ▸ Tech tips: ▸ Use as many static object as possible (uses least RAM) ▸ Use LOD, culling and batching to prevent rendering too many object at the same time ▸ Use as many baked lighting as possible ▸ https://unity3d.com/learn/tutorials/topics/virtual-reality/ optimisation-vr-unity
  • 58. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE: REMOVING SIMULATION SICKNESS
  • 59. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE ▸ Experience design: ▸ Design experience from the ground up, don’t just adapt already available 3D game to VR ▸ VR is now best experienced in short but meaningful time (5-20 minutes) ▸ Design focal point, because the user can look into any direction
  • 60. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE ▸ UI design: ▸ Make sure the user can see the UI at any time ▸ Go for “no-UI” style, embed the required information in the objects, just like in normal life ▸ Enable the player to look around, even when in pause mode
  • 61. DEVELOPING VR IN UNITY TOWARDS BETTER VR EXPERIENCE
  • 62. DEVELOPING VR IN UNITY FUTURE PREDICTION ▸ Lower cost of desktop VR ▸ WebVR ▸ VR beyond entertainment
  • 63. AT THE SAME TIME, I'D SAY DEVELOPERS SHOULD BE REALISTIC. DON'T BELIEVE THE MOST OPTIMISTIC THINGS THE ANALYSTS SAY. ESPECIALLY WHEN THOSE ANALYSTS DON'T ACTUALLY KNOW ANYTHING ABOUT VR. IT'S GOING TO TAKE TIME FOR VIRTUAL REALITY TO BECOME TRULY MASS MARKET AND SUCCESSFUL, SO PEOPLE SHOULD SCALE THEIR EFFORTS APPROPRIATELY. Palmer Luckey (Co-founder of Oculus) DEVELOPING VR IN UNITY