The WebVR API
How to design and build virtual reality directly using HTML, CSS, JavaScript
Dr. Pete Markiewicz - Febuary 15, 2017
Scope of the Talk
1. Virtual Reality landscape 2016.
2. The Case for WebVR.
3. Designing for WebVR.
4. WebVR Development.
5. Community.
6. Resources.
About the Author
Dr. Pete Markiewicz worked as a research scientist at UCLA and elsewhere until mid-1993.
Co-founded an early Internet music download & sales service, “Indiespace” in April 1994.
Author of books on the Internet, US Generations, & Tech.
Taught 1000s of students in Web, Graphic Design, Ux and Web Development since 2001.
Focus: WebVR (JavaScript) and Web-VR hybrid experiences.
The Virtual Reality Landscape
Where is VR in 2016?
We’re About get 4 New Media…
Virtual,Augmented and “Mixed” reality move design from graphic design principles to 3D design principles.
Voice-only “Oracle” systems (e.g. Amazon Echo) �eliminate visual design and replace it with �Ai conversations.
2000
2010
2020
Oracles
VR, AR, Mixed
Definitions
Virtual Reality – Create complete, exclusive virtual world via headsets
Augmented Reality – Add useful Ui elements to the real world, converting it to an interactive system.
Mixed Reality – Place virtual world elements seamlessly into real-world scenes to form a hybrid reality.
VR Milestones in 2018
2017 total VR market - about 4 billion.�
12% of consumers will buy VR devices this year.
VR products and demos at Best Buy (but NOT the Apple Store).
Android software and hardware gets built-in VR support.
WebXR API (VR and AR created in web pages via HTML, CSS, JavaScript) standard goes live in desktop and mobile.
WebVR Frameworks (e.g. Google’s new Draco library for compressing streaming VR)
Where are these New Techs Going?
VR will be in “Enlighten-�ment” zone in 2017!
Current VR limitations include...
Hardware cheap to expensive but with low distribution.
User Experience, VR works least well for fast-paced games it is being applied to.
Distribution, you can’t run a native VR app through the web, making consumer conversion difficult.
The “Mac” Problem
No Macintosh in production has a good �enough video card to run an Oculus or �HTC Vive experience
iOS has Ux features that “wreck” VR scenes �in the browser.
Apple is saying “we have 200 people working on the problem” – a bad sign…
Gamer early adopters still scoff at the Mac.
Growth Predictions
Typical research reports
Growth predicted to be lower �than in Jan 2016.
Why? Needs expensive new �hardware.
Why? No distribution model
for content (unlike the web).
Why? No data model
(unlike the web).
Why? No Social Network
(unlike the web).
Why? Content, nobody knows �how to build mass-market VR.
VR Investment in 2016
The Problem with Predictions…
Current studies tend to assume the dominant use of VR will be games via current game channels (Steam/Valve).
Assume high-end hardware will be necessary to participate.
Studies typically don’t even mention web-based solutions.
So, should I, or my Company get Involved?
Can’t I just wait until VR goes mainstream, or leave it to the gamers?
Uh,…You Need to be There!
There’s a strong case for you to begin work in VR, AR, Mixed Reality
Too often, VR is seen as “about games”
“…Only a few X-Treme (barfing) gamers will ever use VR on the Internet…”
But VR , AR, Mixed Reality are Their Own Medium…
Not like the web
Not like a game
Not like a movie
Most like a…book?
VR is a “Long Form” Medium
Feature | | VR | Web | Mobile | |
1. | Engagement | > | Immersive, user is surrounded by media. | Casual, media only occupies part of the field of view. | Similar to web. |
2. | Distraction | > | Low, self-contained worlds focus attention locally | High, hyperlinks encourage constant exploring instead of focus. | Medium, small screen limits choice to exit. |
3. | Space and Time | > | Temporal, experience unfolds in space and time. | Spatial, information presented in flat layout. | Similar to web |
4. | Presence | > | High, you feel “you’re there”. | Low, you are reading or looking at an event from outside. | Lower than web or VR. |
5. | Interaction | > | Literal, you reach out to grab something | Abstract, you move a mouse to position a cursor. | Literal, you touch a control to use the control. |
6. | Social | > | Low, current system have limited social networking | High, interface maps to real social networks. | Similar to web. |
VR Requires Attention (the opposite of web-clicking)
It takes about 30 seconds to orient inside a VR world.
It takes at least 5 minutes to fully appreciate the value of the VR world.
An emotional “message” via VR takes 5-20 minutes to relay.
In other words, VR requires the focus of a good book.
VR Experience = “The Empathy Machine”
Extremely strong emotional engagement with content (unlike the web, but like great books).
Users are willing to “keep exploring” or watching (less desire to click somewhere else).
Stronger “sense of having been somewhere” (the 4th wall of movies is in VR than web, TV).
Human empathy seems to require high-rez�depictions of events.
VR has more “emotional bandwidth” than �the Web.
VR Enables…
Empathic connection with remote scenes (experience like a knowing ‘ghost’).
Fake body enhancements (fake limbs, body-switching).
Therapy, situation and avoidance.
Acting out real-world behaviors with the �body, instead of just in the head.
Examining a complex systems all at once.
Non-Gaming VR Applications
Task organization (3d operating systems).
Real Estate & Big-ticket items (preview)
Therapy including aversion, role-playing.
Exercise/Training better than the TVs at the gym.
Mediation since the medium works best sloooowwww.
Authoring tools, who will use Maya3d when they can sculpt� by hand in VR?
Well, how do I get in?…
What I know is HTML, CSS, JavaScript, Ux, Ui, Node, ReactJS… not game engines!
HELP ME SPOCK!
The Case for WebVR
Why web-based VR is as important as native apps
WebVR Answers the VR Problem With…
Universal Hardware, since WebVR can run directly in current desktop and smartphone web browsers.
Distribution, since WebVR runs as part of a web page.
Data model, since existing cloud services, Ajax, Fetch work directly with WebVR apps.
Social network, since existing social sites �can be “skinned” with a WebVR UI.
Content, since much of existing web Ux theory�maps into VR and AR spaces.
WebVR Features
NO PLUGINS this is not Flash…
JavaScript API similar to existing device APIs (e.g. Media API).
Device-independent so you don’t need to work in a custom SDK.
Leverages existing WebGL construct VR and AR experiences that lead to more sustainable behavior outside the virtual world.
High-level libraries allow developing 3D apps in a useful framework.
Web-based Authoring apps allow (almost) free tools for 3d development of VR scenes and experiences.
Primary Development APIs
WebGL API enables fast 3D drawing
WebVR API links to VR devices, or defaults to browser window creating stereo images..
Audio API neededs, since sound is a major cue in VR.
Gamepad API supports haptic devices in VR.
Media API for embedded video, hybrid/AR.
Browser Support
Google Chrome Mobile
Samsung Internet Browser (great!)
Firefox 55
Microsoft Edge (windows mixed reality)
Safari (coming soon)
THREE.JS and WebVR
THREE.JS a complete �feature set for 3D �application creation.
A framework, rather than a game engine.
Originally a Flash AS3 library, ported to JavaScript in 2009.
A HUGE community of designers and developers supporting the project.
Supports Oculus, Vive hardware, selecting objects in VR.
Babylon.JS and WebVR
Babylon.js is a game engine written in WebGL.
Provides full support for game development (several titles have been converted into Babylon from native code).
Uses camera (WebVR camera and DeviceOrientation camera) to enable VR scenes.
A large community of designers and developers supporting the project, but few WebVR examples (yet).
VR support currently in state of rapid flux.
PrimroseVR - http://primrosevr.com
A framework based on THREE.js
Built-in “room” model for creating and navigating between multiple rooms.
Fast, can use directly for App development
Declarative WebVR Libraries (Markup)
Use XML Tags to represent objects in 3D and/or VR space.
Easy to learn as a VR experience.
Easily embedded in existing websites as a 3D background scene.
A-Frame
A Mozilla project built on THREE.js.
Uses XML style markup to create �3D scenes.
Optimized for WebVR use.
Component model allows behaviors to �be attached to 3D objects.
Good choice for rapid 3D WebVR �prototyping.
<a-scene fog="type: linear; color: #AAB; far: 30; near: 0">
<a-assets>
<img id="highlight1" src="../../assets/img/radial-highlight.png">
<img id="shadow3" src="../../assets/img/radial-shadow-3.png">
</a-assets>
<a-entity position="0 0 -10">
<!-- Ground Highlight -->
<a-image position="0 -.2 5" src="#highlight1" rotation="-90 0 0"
scale="30 30 30"></a-image></a-entity></a-scene>
X3 DOM
Open-source framework based on WebGL.��Manipulate the 3D content by only adding, removing, or changing DOM elements.��Supports most of the HTML events �(like "onclick") on 3D objects.
<x3d width='500px' height='400px'>� <scene>
<shape>
<appearance>
<material diffuseColor='1 0 0'>
</material>
</appearance>
<box>
</box>
</shape>
</scene>
</x3d>
ReactVR
Developed by Facebook for their Oculus platform
Exploits existing ReactJS framework
Uses ‘signed distance field’ fonts for greater clarity
class WelcomeToVR extends React.Component { render() { �// Displays "hello" text on top of a loaded 360 panorama image. �// Text is 0.8 meters in size and is centered three meters in front of you. �return ( � <View> � <Pano source={asset('chess-world.jpg')}/>� <Text style={{ fontSize: 0.8, layoutOrigin: [0.5, 0.5], transform: [{translate: [0, 0, -3]}], }}> hello� </Text>� </View> �); } }; AppRegistry.registerComponent('WelcomeToVR', () => WelcomeToVR);
X3D (Successor to VRML)
Web 3D Consortium
Formed to handle shortcomings in VRML, the original VR modeling language for the web
In development since 1999(!)
More complex than other 3d markup languages
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "http://www.web3d.org/specifications/x3d-3.3.dtd"> <X3D profile='Immersive' version='3.3' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' http://www.web3d.org/specifications/x3d-3.3.xsd '> <head>
<meta name='title' content='CircleFishPositionInterpolator.x3d'/>
<meta name='description' content='Run-time modification of a fishes position using PositionInterpolator.'/>
<meta name='creator' content='Ildeniz Duman'/>
<meta name='created' content='1 June 1998'/>
<meta name='modified' content='5 July 2014'/>
<meta name='identifier' content=' http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter07-EventAnimationInterpolation/CircleFishPositionInterpolator.x3d '/>
<meta name='generator' content='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='license' content=' ../license.html'/>
</head>
Transpiles From Other Dev Environments
Unity 5 – can transpile code from native Unity to JavaScript using ASM.JS. Working examples available.
Unreal4 – support for ASM.JS. No good examples yet.
Note: resulting code files are HUGE (~90 megs) compared to native JavaScript coding (~1 megs).
The Promise of WebAssembly
An assembly-language for web browsers
Executes inside JavaScript virtual machine (with same permissions)with near-native speed in execution
Will make Unity and Unreal ‘transpiles’ more quickly, but native WebVR even faster!
Inclusive Design in WebVR
A11Y & WebXR - Roland Dubois
https://docs.google.com/presentation/d/1_mpJ1kOHxR1De-0z8G-Qfg8sKNC1DUCTvYw3IkYDyCI/edit?usp=sharing
Top WebVR Experiences (to date)
Puzzle Rain�https://mozvr.com/puzzle-rain/fallback.html
Awesome WebVR�https://github.com/dziemid/awesome-WebVR
Awesome A-Frame�https://github.com/aframevr/awesome-aframe
Some WebVR Pioneers
Brandon Jones/ Tojiro (Chrome WebVR implementator)�http://www.tomorrowtodaylabs.com/
Boris Sumus (Google, created WebVR Polyfill & Boilerplate) �http://smus.com/
Sean McBeth (Notion Theory, Creator of PrimroseVR framework)�http://www.seanmcbeth.com/ ��Diego Marcos (Mozilla WebVR, A-Frame)�https://github.com/dmarcos
Arturo Paracuellos (Master of WebVR experience & game design)�http://unboring.net�https://blog.mozvr.com/puzzle-rain/
Designing in WebVR
The full-full stack…
How do I remake my existing web/app workflow for WebVR?
Apply Ux and Ui principles already learned from the early history of consumer VR.
VR Hardware in 2016
Smartphone VR uses iOS or Android �devices with low-cost headsets (80%).
Headset VR uses a dedicated desktop �or laptop to render higher-quality�gaze-directed (15%).
Roomscale VR provides tethers, or �mounts the VR device on the user �for greater exploration (5%)
No current Macintosh is powerful enough
To do Headset or Roomscale!
Levels of Interaction
Passive – viewing, but only able to move head
Gaze – select objects by looking at them
Haptic – use a hardware sensor represent hands or other parts of the body to select objects
Full-Body – use sensors to determine the position of the entire body in the scene.
Haptics
Typically hand-held.
Have additional controls �(triggers, buttons).
Existing gamepads are often repurposed�into VR.
Gloves NOT in widespread use.
Need virtual display of haptic �inside VR to be effective.
Responsive VR Breakpoints
Design for low-end haptics, also gaze-only selection, no room-scale.
<= 80deg view,�Head Motions only
90-100deg view, plus hardware �button select on headset
110deg view, plus handheld
haptic devices
> 120deg view, full-body, �room-scale interaction
Google Cardboard
GearVR, Google Daydream
Oculus Rift, Rift Touch
HTC Vive
How do I Author (Traditional)?
Clara.io - http://clara.io
Vizor.io - http://vizor.io
PlayCanvas - http://playcanvas.com
ProntoVR - http://prontovr.com
Mettle - http://www.mettle.com/
How do I Author in VR Itself?
Google Tilt Brush - https://www.tiltbrush.com
Quill (Oculus Story Studio) - https://www.oculus.com/experiences/rift/1118609381580656/
Pantheon VR - https://www.pantheonvr.com/
Gravity Sketch - https://www.gravitysketch.com/
Ux in VR Pioneers
Adrienne Hunter (founder, Tomorrow Today Labs)�http://www.tomorrowtodaylabs.com/
Mike Alger (VR designer, Google, Mountain View, CA) �http://mikealger.com/
Timoni West (Ux designer at Unity3d)�http://blog.timoni.org/
Josh Carpenter (Ux in VR for Mozilla/Firefox)�https://www.youtube.com/watch?v=ZOaOYTOpwyM
Jason Jerald (NextGen Interactions, 1st VR design book)�http://www.thevrbook.net/
Arturo Paracuellos (Unboring.net)�https://blog.mozvr.com/puzzle-rain/
Web to VR Transitions
The WebVR API allows VR to be embedded naturally into web pages.
No real models for transitioning from a web page into VR, or vice-versa.
Embedding 3D HTML elements (A-Frame, X3DOM) may provide a Ui gateway into full VR experiences
You could the one to work this out!
Apparent Fields of View (FOV)
Field of View: 100deg, 60deg up, 40deg down.
Rotation: 55 degrees of head.
Resolution: minimum 960px per eye, 0.1 degrees per pixel.
Source: Mike Alger
Cylinder Ux Model (Josh Carpenter)
Low-Resolution
High-Resolution (Cinema 4D)
User Behavior in VR Space
User Perception in VR Space
Reference: https://blog.mozvr.com/quick-vr-prototypes/
Useful Ui Zones in VR (Mike Alger)
Touch Ui Zone
“No-no” Zone
Content Zone
A Note on Text
Text renders poorly in 3D compared to 2D.
Animated text can be used effectively (banners, or in-place replacement).
Audio can effectively replace text-based cues.
Static text should be a last resort.
New Grid Systems will be required.
Prototyping Techniques
“Spherical Grayboxing” – create grey polygons to substitute for Ui objects on gridded spheres (Alex Chu)
“Cylinder” – Flat 960px Illustrator template, edited, and wrapped around user model at 0.5m (Josh Carpenter)
A 2D VR Template
Sample Cylinder Grid System (Josh Carpenter)
Quick VR Prototypes in Illustrator (Josh Carpenter)
Reference: https://blog.mozvr.com/quick-vr-prototypes/
Affordances
Hardware buttons on the device.
Circular flat overlay menus or icons.
Local maps embedded in world.
Text input fields (hard).
Object gestures (the object makes a recognizable motion, like sign language).
Objects which look like the thing they manipulate.
Virtual copies of physical haptic devices in the scene.
Triggers
Prolonged gaze – object can expand or change appearance when stared at for a few seconds.
No Button “clicks” – when “touched”, the experience is more like putting finger into a container of water).
Audio Cues – sound changes on motion, selection.
Feedback
Hardware buttons on headset can provide tactile triggers.
Object moves (instead of scene moving).
New object appears in scene.
Scene dissolves (must be slow or will be nauseating).
Audio changes (intensity or type of sound).
Openings (a path, door, gateway).
Experience Metaphors
Curved walls – like a convention installation
Theater in the Round – events happen all around you
The Cave – similar to games, roomscale only
Disabled user (yes) – your limitations match VR limitations
The Workbench – pick and place tools, post-it notes, etc.
The Ghost’s Dream – you’re embedded in a world that can’t see you
‘Gone Fishing – the world flows by in a leisurely way
Object Roles (Jonathan Ravasz)
The ground/land – allows faster orientation to the scene
The sky – gives a sense of scale
Audio fadeins – introduce a change gently
Context reticle – show user where they gaze is going.
Objects – define paths for exploring
Talking objects – �provide detail usually from text
Anti-Patterns (Timoni West)
Moving the user when they aren’t moving (a common error in 360 video).
Static text (use animated text or audio).
Teleports or sudden scene shifts.
No time for orientation when scene changes.
No tracking feedback (users need to see constant motion related to their own.
Sudden motion of an object towards the user (especially dropping down from the sky to the head).
The 2D to 3D Challenge
WebVR access typically starts with a flat, 2d desktop or mobile screen.
Current models don’t include the transition between 2D web and 3D VR as part of the “customer journey”
More work needed to improve Ui and Ux for transitions into and out of VR
Discussion at: https://www.youtube.com/watch?v=78F_HNWuqbw
WebVR Development
It’s not a web page anymore…
Your Road to VR
Get a headset, of Samsung Gear VR/ Google Daydream or higher.
Explore some commercially-produced worlds (Steam community).
Learn something about audio design (it’s important).
Read “Ux in VR” blogs.
Practice long-form storytelling (again).
Start coding in JS or Declarative VR.
I voted for Trump!
Where’s your headset?”…
You’re in Print design, it’s 1994 and somebody is talking about the World Wide Web…
I’m Soooo Excited!
Your Choices
HTC Vive ($700), only system with true “room-scale” VR.
Oculus Rift ($500) most popular, better egronomics.
Samsung Gear VR (~$100) good quality, use existing Note or Edge phone
Google Daydream (~$100) similar to GearVR, but with Google Pixel phone.
Google Cardboard (~$10) with any smartphone (even iOS, lower quality of experiences).
You Need a (Windows) Workstation for High-End
Nvidia GTX 1070 or 1080 video card.
8 gigs or more of RAM.
Lots of USB, HDMI DisplayPort connectors.
Solid-state (SSD) hard drive.
Expect to spend ~$1500 or more for computer.
WebVR Support/Accessibility
| Browser | Support | Comments |
| Samsung Internet Browser | Strong | Has supported WebVR since early 2016. Specific to Samsung Galaxy smartphones. |
| Google Chrome | Very Strong | Chromium supports most recent WebVR API, in Mobile Chrome in 2017. Oculus/Vive supported. |
| Mozilla Firefox / Servo | Very Strong | Nightly builds support WebVR now. No Oculus/Vive Support (yet). Servo Browser will support WebVR. |
| Microsoft Edge | Very Strong | WebVR native promised in 2017. MSFT actively developing W3C spec. |
| Oculus Carmel | Very Strong | Custom VR browser, plus ReactVR framework from Facebook. Oculus support guaranteed. |
| Safari | None | Little interest from Apple, no support promised. Missing support for other APIs (e.g. GamePad). |
| Opera | None | No support announced. |
WebVR Polyfill & Boilerplate
Developed by Boris Sumus at Google.
Installs support for WebVR API in most browsers.
Works best with mobile, even Mobile Safari.
Can’t “fire” the device drivers for Vive, Oculus.
WebVR Boilerplate gives a starting �application using the THREE.js library.
Start Coding – 1 (Direct)
if (navigator.getVRDisplays) {� // Enumerate the VRDisplays� navigator.getVRDisplays().then(function (displays) {� if (!displays.length) {� VRSamplesUtil.addInfo("WebVR supported, but no VRDisplays found.");� return;� }� for (var i = 0; i < displays.length; ++i) {� document.body.appendChild(buildVRElement(displays[i]));� } � }� );� window.addEventListener("vrdisplayconnect", eventFired, false);� window.addEventListener("vrdisplaydisconnect", eventFired, false);� window.addEventListener("vrdisplayactivate", eventFired, false);� window.addEventListener("vrdisplaydeactivate", eventFired, false);� window.addEventListener("vrdisplayblur", eventFired, false);� window.addEventListener("vrdisplayfocus", eventFired, false);�} else {� VRSamplesUtil.addError("Your browser does not support WebVR. See <a href='http://webvr.info'>webvr.info</a> for assistance.");�}
Start Coding – 2 (Declarative)
<html>�<head>�<meta charset="utf-8">�<title>Hello, World! • A-Frame</title>�<meta name="description" content="Hello, World! • A-Frame">�<script src="../../../dist/aframe.js"></script>�</head>�<body>�<a-scene>� <a-sphere position="0 1.25 -1" radius="1.25" color="#EF2D5E"></a-sphere>� <a-box position="-1 0.5 1" rotation="0 45 0" width="1" height="1" depth="1" color="#4CC3D9"></a-box>� <a-cylinder position="1 0.75 1" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>� <a-plane rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>� <a-sky color="#ECECEC"></a-sky>� <a-entity position="0 0 3.8">� <a-camera></a-camera>� </a-entity>�</a-scene>�</body></html>
More WebVR Code
Toji Reference Examples in vanilla WebGL
WebVR Boilerplate
https://github.com/borismus/webvr-boilerplate
Author WebVR to “Native” Apps
Your Next Steps
Let’s make WebVR happen!
Learn more about WebVR
WebVR Slack Channel the best place to find WebVR developers�http://webvr.slack.com
THREE.JS WebVR as a VR experience.
Babylon.JS WebVR in a scene arousing emotional empathy with people/animals suffering the consequences of bad choices.
Ux in VR several blogs cover this topic.� - Ux in VR Blog (Adrienne Hunter)� http://www.tomorrowtodaylabs.com/
Support LA WebVR Meetup!
Speakers for future projects. All topics covered here.
Venues to hold our meetings.
Sponsors so we can put on more elaborate events supporting WebVR and VR in general.
Projects submit your created project to the WebVR�community, share code, collaborate.
Get Consulting, Designers, Devs, Training
1. …That is one thing I do for companies!
- VR Strategy.�� - VR Ux design.
- VR and WebVR API training.
2. Check the WebVR Slack Channel.� http://webvr.slack.com
I’m Waiting For You….
Oo0h.
Exit…
1. Audience Introductions and recognition
2. Sign up for WebVR Meetup work
3. Networking
4. Explore WebVR with headsets (if you can get one!)
References
WebVR�https://webvr.info/
MozVR�https://mozvr.com/
Firefox Nightly�https://nightly.mozilla.org/
Chromium Downloads�https://webvr.info/get-chrome/
WebVR Slack Channel�http://webvr.slack.com
References
Is the Web VR Ready?�http://https://iswebvrready.org/
WebVR Coming to Mozilla Servo Browser – �https://blog.mozvr.com/webvr-coming-to-servo-part-1/
Unity to WebVR�https://github.com/gtk2k/Unity-WebVR-Assets?files=1
Unity to WebVR Template�https://github.com/Boondogl/Unity-WebVR-Template
PrimroseVR (JS frameworks for building VR experiences)�https://www.primrosevr.com/
References
Toji Reference Examples in vanilla WebGL�https://webvr.info/samples/
WebVR Boilerplate �https://github.com/borismus/webvr-boilerplate
A-Frame Hello, World�https://aframe.io/examples/showcase/helloworld/
A-Frame Blog�https://aframe.io/blog/
X3DOM WebVR Example�http://www.x3dom.org/x3dom-with-leap-and-oculus-rift-2-via-webvr/
Oculus Rift sample WebVR Code�https://larsxschneider.github.io/webvr-examples/threejs.html
References
Puzzle Rain: a Ux in VR study:�http://unboring.net/cases/puzzlerain.html
Ux in VR Patterns (and anti-patterns)�https://medium.com/@timoni/ux-pointers-for-vr-design-dd52b718e19#.o7srbtvrv
Interaction Design Practices in VR – �https://uxdesign.cc/design-practices-in-virtual-reality-f900f5935826#.n1uahs3if
VR, the Empathy Machine�http://www.opensourcemechanic.com/blog/2015/11/vr-empathy-machine-links-un-dignitaries-with-syrian-refugees/
References
Ux Design in VR�http://aperturesciencellc.com/vr/VisualDesignMethodsforVR_MikeAlger.pdf
The VR Book: Human-Centered Design�http://www.thevrbook.net/
Oculus Best Practice�https://developer.oculus.com/documentation/intro-vr/latest/concepts/bp_intro/
Unreal Engine best Practice�https://docs.unrealengine.com/latest/INT/Platforms/VR/ContentSetup/index.html
References
VR Investments in 2016�http://www.gamasutra.com/blogs/TimMerel/20170208/291012/Record_23_billion_VRAR_investment_in_2016.php
VR Predictions for 2017�http://nymediacenter.com/2017/01/hear-it-from-the-experts-2017-vr-trends/
5 Tools that let you pain in VR�http://www.digitalartsonline.co.uk/features/illustration/5-tools-that-let-you-paint-in-vr/