Ferguson VR Hackathon - May 6, 2017

Introduc)on to WebVR
VR Setup*
*
Illustra*ons from Mozilla
VR Experiences
New considera-ons for VR app development
Focus on User Experience
- Stereoscopic vision & interpupillary distance (IPD)
- Head tracking & degrees of freedom (DoF)
- Cone of focus & field of view (FOV)
- 3D posi-onal audio
- Latency & frame rate (frames per second / FPS)
Focus on User Comfort
- Eye strain
- Mo-on sickness
Degrees of Freedom, Stereoscopic Vision & Interpupillary Distance*
*
Illustra*ons from Mozilla
Na#ve VR Devices (PC & Console)
HTC Vive (room-scale VR)
Oculus Ri6
Playsta:on VR
Fove
Razer OSVR
Mobile VR Devices (Smartphone)
Samsung Gear VR
Daydream
Cardboard
Hundreds of third-party headsets
VR Programming
• Unreal Engine (C++)
• Unity (C#)
• Source Engine (C++)
• WebVR (JS)
VR Distribu+on
• SteamVR
• Google Play
• Oculus Store
• The Ri8 Arcade
• V "open alterna>ve" to SteamVR
Why WebVR?
• No app store ecosystem, distribu3on via internet
• Mobile & desktop automa3cally supported
• Uses current tools and libraries for JS
• Easy switch between VR & non-VR mode
• Interfacing with hardware through the browser
Progressive Enhancement by Arturo Paracuellos
Virtual Reality on the Web
A Retrospec+ve 1/2
• 1994 VRML - first a0empt to create an internet-based 3D
language. (Mark Pesce presented the Labyrinth demo he
developed with Tony Parisi and Peter Kennard.)
• VRML2 (1997) - added many features (animaMon) and later was
succeeded by X3D
Problem of VRML: plugin-based technology that only came
preinstalled on IE
Virtual Reality on the Web
A Retrospec+ve 2/2
• 2003 OpenGL ES - cross-language and mul9-pla:orm 3D
graphics API.
Hardware accelerated rendering of 3D objects.
• WebGL 1.0 introduced by Mozilla based on OpenGL ES uses
DOM (canvas element)
• X3D introduced X3DOM
Most popular WebGL
Engines today
• Three.js by Ricardo Cabello in 2010
• Babylon.js
• PlayCanvas.js
• Goo Engine
• Scene.js
• Turbulenz
Stackoverflow score growth over 0me by tag comparison
WebGL Framework Comparison
What is WebVR?
WebVR is a experimental Javascript API that
provides interfaces to VR hardware to allow
developers to build compelling, comfortable
VR experiences on the web.
WebVR
WebVR v1.1 Editor’s Dra,, 04/05/17
- deviceOrienta-on
- VRDisplay object handles almost everything
- available on mul-ple pla<orms
..soon..
WebVR (2.0) Editor’s Dra,, 04/17/17
- not backwards compa-ble
- device support
- introduc-on of VRDevice & VRSession to replace VRDisplay
- read Explainer doc!
Goals of WebVR
• Detect available virtual reality devices.
• Query the device’s capabili6es.
• Poll the device’s posi6on and orienta6on.
• Display imagery on the device at the appropriate frame rate.
Non-goals of WebVR
• Define how a virtual reality browser would work.
• Take full advantage of augmented reality devices.
• Build “The Metaverse.”
Check out h*ps://webvr.rocks/ for support updates
WebVR Frameworks
• A-Frame by Mozilla
• ReactVR by Facebook
• ForgeJS by GoPro, Inc., great for 360 photo & video content
• Primrose great for collaboraIve VR web apps
• Janus VR VR browser/editor
• Vizor in-browser VR development, SocialVR
• GLAM (GL And Markup) declaraIve language for 3D web
Demo Comparison A & B
Three.js and WebVR
comparison with
A-Frame
A-Frame
• a 3DML (3D markup language) like X3Dom and GLAM
• DOM-based En>ty-Component System => declara>ve &
extensible (similar to Unity/UE4/PlayCanvas)
The A-Frame Stack:
A-Frame
En#ty-Component System
A-Frame
• En$$es are HTML elements (i.e., <a-entity>)
• Components are HTML a9ributes, set on the en$ty
<body>
<a-scene>
<a-entity geometry="primitive:box" material="color:#c00">
</a-entity>
</a-scene>
</body>
En#ty
• general purpose objects (e.g. create a player, ball, or field)
• they inherently have a posi;on, rota;on and scale in a scene
<a-entity
geometry="primitive:box;
width:0.2;
height:0.3;
depth:0.5;"
material="color:#c00"
position="0 0 -1"
rotation="0 30 30"
material="color:#c00">
</a-entity>
Primi%ves (concise, seman%c building blocks)
<a-entity geometry="primitive:box;
width:0.2;
height:0.3;
depth:0.5;"
material="color:#c00">
</a-entity>
<a-box width="0.2"
height="0.3"
depth="0.5"
material="color:#c00">
</a-box>
Mixins
<a-mixin id="box"
geometry="primitive:box;
width:0.2;
height:0.3;
depth:0.5;"
material="color:#c00">
</a-mixin>
<a-entity mixin="box">
</a-entity>
Custom Components
AFRAME.registerComponent('foo', {
schema: {
bar: {type: 'number'},
baz: {type: 'string'}
},
init: function () {
// Do something when component is plugged in.
},
update: function () {
// Do something when component's data is updated.
}
});
Gaze-Based Control
Gaze-Based Cursor Interac2ons
AFRAME.registerComponent('clickable', {
init: function () {
var el = this.el;
el.addEventListener('mouseenter', function () {
el.setAttribute('color', '#f00');
});
el.addEventListener('mouseleave', function () {
el.setAttribute('color', '#fff');
});
el.addEventListener('click', function () {
el.setAttribute('material', 'src' , 'assets/football.png');
});
}
});
<a-sphere clickable src="assets/basketball.png" radius="0.5" color="#fff"></a-sphere>
<a-camera><a-cursor></a-cursor></a-camera>
A-Frame Component Registry
h"ps://aframe.io/docs/0.5.0/
A-Frame Inspector
[control]+[option]+[i]
Create responsibly!
Resources
* A-Frame Slack
* A-Frame Component Registry
* mozvr.com
* VR Gets Real with WebVR
* WebVR API
* The UX of VR
Get In Touch
@rolanddubois
rolanddubois.com
It’s code *me! Here’s what we’re building:
• github.com/rdub80/Ferguson-VR-Hackathon
• XAMPP, MAMP or $ python -m SimpleHTTPServer
• JSBin
1 of 36

Recommended

Getting Started with Web VR by
Getting Started with Web VR Getting Started with Web VR
Getting Started with Web VR Saurabh Badhwar
198 views34 slides
Web vr creative_vr by
Web vr creative_vrWeb vr creative_vr
Web vr creative_vrOscar Marin Miro
549 views16 slides
【Unite 2017 Tokyo】「日本列島VR」および「HoleLenz」の開発事例ご紹介 by
【Unite 2017 Tokyo】「日本列島VR」および「HoleLenz」の開発事例ご紹介【Unite 2017 Tokyo】「日本列島VR」および「HoleLenz」の開発事例ご紹介
【Unite 2017 Tokyo】「日本列島VR」および「HoleLenz」の開発事例ご紹介Unity Technologies Japan K.K.
3.1K views69 slides
Introduction to The VR Web by
Introduction to The VR WebIntroduction to The VR Web
Introduction to The VR WebLiv Erickson
743 views24 slides
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術 by
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術Unity Technologies Japan K.K.
45.9K views118 slides
Phaser Workshop Internet World 2014 by
Phaser Workshop Internet World 2014Phaser Workshop Internet World 2014
Phaser Workshop Internet World 2014Alvinsight
1K views14 slides

More Related Content

What's hot

Making HTML5 Games with Phaser by
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with PhaserIndieOutpost
6.3K views26 slides
【Unite 2017 Tokyo】Unity UI最適化ガイド 〜ベストプラクティスと新機能 by
【Unite 2017 Tokyo】Unity UI最適化ガイド 〜ベストプラクティスと新機能【Unite 2017 Tokyo】Unity UI最適化ガイド 〜ベストプラクティスと新機能
【Unite 2017 Tokyo】Unity UI最適化ガイド 〜ベストプラクティスと新機能Unity Technologies Japan K.K.
29.4K views32 slides
Scotland JS 2016 Keynote: The VR Web and the Future of the Browser by
Scotland JS 2016 Keynote: The VR Web and the Future of the BrowserScotland JS 2016 Keynote: The VR Web and the Future of the Browser
Scotland JS 2016 Keynote: The VR Web and the Future of the BrowserLiv Erickson
720 views36 slides
Casper Fabricius (Cimmerse): WebVR with A-Frame, React and Redux by
Casper Fabricius (Cimmerse): WebVR with A-Frame, React and ReduxCasper Fabricius (Cimmerse): WebVR with A-Frame, React and Redux
Casper Fabricius (Cimmerse): WebVR with A-Frame, React and ReduxAugmentedWorldExpo
244 views16 slides
The next frontier: WebGL and WebVR by
The next frontier: WebGL and WebVRThe next frontier: WebGL and WebVR
The next frontier: WebGL and WebVRCodemotion
745 views30 slides
【Unite 2017 Tokyo】みんなのスマートフォンでここまでできる〜Kudan ARを使ったモバイルAR/MRの世界 by
【Unite 2017 Tokyo】みんなのスマートフォンでここまでできる〜Kudan ARを使ったモバイルAR/MRの世界【Unite 2017 Tokyo】みんなのスマートフォンでここまでできる〜Kudan ARを使ったモバイルAR/MRの世界
【Unite 2017 Tokyo】みんなのスマートフォンでここまでできる〜Kudan ARを使ったモバイルAR/MRの世界Unity Technologies Japan K.K.
3.7K views31 slides

What's hot(20)

Making HTML5 Games with Phaser by IndieOutpost
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with Phaser
IndieOutpost6.3K views
【Unite 2017 Tokyo】Unity UI最適化ガイド 〜ベストプラクティスと新機能 by Unity Technologies Japan K.K.
【Unite 2017 Tokyo】Unity UI最適化ガイド 〜ベストプラクティスと新機能【Unite 2017 Tokyo】Unity UI最適化ガイド 〜ベストプラクティスと新機能
【Unite 2017 Tokyo】Unity UI最適化ガイド 〜ベストプラクティスと新機能
Scotland JS 2016 Keynote: The VR Web and the Future of the Browser by Liv Erickson
Scotland JS 2016 Keynote: The VR Web and the Future of the BrowserScotland JS 2016 Keynote: The VR Web and the Future of the Browser
Scotland JS 2016 Keynote: The VR Web and the Future of the Browser
Liv Erickson720 views
Casper Fabricius (Cimmerse): WebVR with A-Frame, React and Redux by AugmentedWorldExpo
Casper Fabricius (Cimmerse): WebVR with A-Frame, React and ReduxCasper Fabricius (Cimmerse): WebVR with A-Frame, React and Redux
Casper Fabricius (Cimmerse): WebVR with A-Frame, React and Redux
AugmentedWorldExpo244 views
The next frontier: WebGL and WebVR by Codemotion
The next frontier: WebGL and WebVRThe next frontier: WebGL and WebVR
The next frontier: WebGL and WebVR
Codemotion745 views
【Unite 2017 Tokyo】みんなのスマートフォンでここまでできる〜Kudan ARを使ったモバイルAR/MRの世界 by Unity Technologies Japan K.K.
【Unite 2017 Tokyo】みんなのスマートフォンでここまでできる〜Kudan ARを使ったモバイルAR/MRの世界【Unite 2017 Tokyo】みんなのスマートフォンでここまでできる〜Kudan ARを使ったモバイルAR/MRの世界
【Unite 2017 Tokyo】みんなのスマートフォンでここまでできる〜Kudan ARを使ったモバイルAR/MRの世界
Building Multiplayer Games (w/ Unity) by Noam Gat
Building Multiplayer Games (w/ Unity)Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)
Noam Gat6.2K views
Sergey Gonchar - Fast rendering with Starling by Flash Conference
Sergey Gonchar - Fast rendering with StarlingSergey Gonchar - Fast rendering with Starling
Sergey Gonchar - Fast rendering with Starling
Flash Conference1.6K views
Introduction to WebVR Autodesk Forge 2016 by Tony Parisi
Introduction to WebVR Autodesk Forge 2016Introduction to WebVR Autodesk Forge 2016
Introduction to WebVR Autodesk Forge 2016
Tony Parisi2.4K views
【Unite 2017 Tokyo】Anima2Dについて語るで!2Dアニメーションの未来 by Unite2017Tokyo
【Unite 2017 Tokyo】Anima2Dについて語るで!2Dアニメーションの未来【Unite 2017 Tokyo】Anima2Dについて語るで!2Dアニメーションの未来
【Unite 2017 Tokyo】Anima2Dについて語るで!2Dアニメーションの未来
Unite2017Tokyo4.4K views
Breathing Life in Data Visualizations with Axure by Svetlin Denkov
Breathing Life in Data Visualizations with AxureBreathing Life in Data Visualizations with Axure
Breathing Life in Data Visualizations with Axure
Svetlin Denkov187 views
WebVR, not just Holograms in the web but powerful platform by Windows Developer
WebVR, not just Holograms in the web but powerful platformWebVR, not just Holograms in the web but powerful platform
WebVR, not just Holograms in the web but powerful platform
Windows Developer192 views
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc... by Pablo Farías Navarro
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...
My 10 days with Phaser.js - WarsawJS Meetup #13 by Piotr Kowalski
My 10 days with Phaser.js - WarsawJS Meetup #13My 10 days with Phaser.js - WarsawJS Meetup #13
My 10 days with Phaser.js - WarsawJS Meetup #13
Piotr Kowalski1.2K views
Low Latency Networking on IOS and Android over Cloud by Oguz Bastemur by Codemotion
Low Latency Networking on IOS and Android over Cloud by Oguz BastemurLow Latency Networking on IOS and Android over Cloud by Oguz Bastemur
Low Latency Networking on IOS and Android over Cloud by Oguz Bastemur
Codemotion971 views
Cross Game Dev with Corona by Shawn Grimes
Cross Game Dev with CoronaCross Game Dev with Corona
Cross Game Dev with Corona
Shawn Grimes833 views

Similar to Ferguson VR Hackathon - May 6, 2017

Build (Web)VR with A-Frame (COSCUP 2019 Taipei) by
Build (Web)VR with A-Frame (COSCUP 2019 Taipei)Build (Web)VR with A-Frame (COSCUP 2019 Taipei)
Build (Web)VR with A-Frame (COSCUP 2019 Taipei)Robert 'Bob' Reyes
464 views53 slides
Building AR and VR Experiences for Web Apps with JavaScript by
Building AR and VR Experiences for Web Apps with JavaScriptBuilding AR and VR Experiences for Web Apps with JavaScript
Building AR and VR Experiences for Web Apps with JavaScriptFITC
1.2K views35 slides
Foundations of the Immersive Web by
Foundations of the Immersive WebFoundations of the Immersive Web
Foundations of the Immersive WebTony Parisi
928 views29 slides
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last! by
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!FITC
9.2K views45 slides
Immersed in the Web by
Immersed in the WebImmersed in the Web
Immersed in the WebLuis Diego González-Zúñiga, PhD
364 views42 slides
Introduction to WebGL - 1st WebGL meetup Amsterdam by
Introduction to WebGL - 1st WebGL meetup AmsterdamIntroduction to WebGL - 1st WebGL meetup Amsterdam
Introduction to WebGL - 1st WebGL meetup AmsterdamThreeDee Media
1K views19 slides

Similar to Ferguson VR Hackathon - May 6, 2017(20)

Build (Web)VR with A-Frame (COSCUP 2019 Taipei) by Robert 'Bob' Reyes
Build (Web)VR with A-Frame (COSCUP 2019 Taipei)Build (Web)VR with A-Frame (COSCUP 2019 Taipei)
Build (Web)VR with A-Frame (COSCUP 2019 Taipei)
Robert 'Bob' Reyes464 views
Building AR and VR Experiences for Web Apps with JavaScript by FITC
Building AR and VR Experiences for Web Apps with JavaScriptBuilding AR and VR Experiences for Web Apps with JavaScript
Building AR and VR Experiences for Web Apps with JavaScript
FITC1.2K views
Foundations of the Immersive Web by Tony Parisi
Foundations of the Immersive WebFoundations of the Immersive Web
Foundations of the Immersive Web
Tony Parisi928 views
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last! by FITC
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!
FITC9.2K views
Introduction to WebGL - 1st WebGL meetup Amsterdam by ThreeDee Media
Introduction to WebGL - 1st WebGL meetup AmsterdamIntroduction to WebGL - 1st WebGL meetup Amsterdam
Introduction to WebGL - 1st WebGL meetup Amsterdam
ThreeDee Media 1K views
sdc-2016-gvrf-and-io_public by Rick Lau
sdc-2016-gvrf-and-io_publicsdc-2016-gvrf-and-io_public
sdc-2016-gvrf-and-io_public
Rick Lau289 views
Leaving Flatland: Getting Started with WebGL- SXSW 2012 by philogb
Leaving Flatland: Getting Started with WebGL- SXSW 2012Leaving Flatland: Getting Started with WebGL- SXSW 2012
Leaving Flatland: Getting Started with WebGL- SXSW 2012
philogb11.6K views
Prototyping in aframe by Kumar Ahir
Prototyping in aframePrototyping in aframe
Prototyping in aframe
Kumar Ahir308 views
Windows Phone 7 and Windows Azure – A Match Made in the Cloud by Michael Collier
Windows Phone 7 and Windows Azure – A Match Made in the CloudWindows Phone 7 and Windows Azure – A Match Made in the Cloud
Windows Phone 7 and Windows Azure – A Match Made in the Cloud
Michael Collier2.3K views
Byte Conf React Native 2018 by Pulkit Kakkar
Byte Conf React Native 2018Byte Conf React Native 2018
Byte Conf React Native 2018
Pulkit Kakkar225 views
Building VR Applications For Google Cardboard by Mark Billinghurst
Building VR Applications For Google CardboardBuilding VR Applications For Google Cardboard
Building VR Applications For Google Cardboard
Mark Billinghurst12.2K views
HTML5 Intoduction for Web Developers by Sascha Corti
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
Sascha Corti1.1K views
Mixed reality for Windows 10 by Jiri Danihelka
Mixed reality for Windows 10Mixed reality for Windows 10
Mixed reality for Windows 10
Jiri Danihelka130 views

Recently uploaded

231121 SP slides - PAS workshop November 2023.pdf by
231121 SP slides - PAS workshop November 2023.pdf231121 SP slides - PAS workshop November 2023.pdf
231121 SP slides - PAS workshop November 2023.pdfPAS_Team
156 views15 slides
Timeahead Agency Pitch Deck.pdf by
Timeahead Agency Pitch Deck.pdfTimeahead Agency Pitch Deck.pdf
Timeahead Agency Pitch Deck.pdfHabib-ur- Rehman
9 views13 slides
OSMC 2023 | Will ChatGPT Take Over My Job? by Philipp Krenn by
OSMC 2023 | Will ChatGPT Take Over My Job? by Philipp KrennOSMC 2023 | Will ChatGPT Take Over My Job? by Philipp Krenn
OSMC 2023 | Will ChatGPT Take Over My Job? by Philipp KrennNETWAYS
22 views25 slides
New Microsoft Word Document.docx by
New Microsoft Word Document.docxNew Microsoft Word Document.docx
New Microsoft Word Document.docxapomahendranagarmudd
8 views11 slides
SOA PPT ON SEA TURTLES.pptx by
SOA PPT ON SEA TURTLES.pptxSOA PPT ON SEA TURTLES.pptx
SOA PPT ON SEA TURTLES.pptxEuniceOseiYeboah
9 views18 slides
Post-event report intro session-1.docx by
Post-event report intro session-1.docxPost-event report intro session-1.docx
Post-event report intro session-1.docxRohitRathi59
12 views2 slides

Recently uploaded(20)

231121 SP slides - PAS workshop November 2023.pdf by PAS_Team
231121 SP slides - PAS workshop November 2023.pdf231121 SP slides - PAS workshop November 2023.pdf
231121 SP slides - PAS workshop November 2023.pdf
PAS_Team156 views
OSMC 2023 | Will ChatGPT Take Over My Job? by Philipp Krenn by NETWAYS
OSMC 2023 | Will ChatGPT Take Over My Job? by Philipp KrennOSMC 2023 | Will ChatGPT Take Over My Job? by Philipp Krenn
OSMC 2023 | Will ChatGPT Take Over My Job? by Philipp Krenn
NETWAYS22 views
Post-event report intro session-1.docx by RohitRathi59
Post-event report intro session-1.docxPost-event report intro session-1.docx
Post-event report intro session-1.docx
RohitRathi5912 views
OSMC 2023 | IGNITE: Metrics, Margins, Mutiny – How to make your SREs (not) ru... by NETWAYS
OSMC 2023 | IGNITE: Metrics, Margins, Mutiny – How to make your SREs (not) ru...OSMC 2023 | IGNITE: Metrics, Margins, Mutiny – How to make your SREs (not) ru...
OSMC 2023 | IGNITE: Metrics, Margins, Mutiny – How to make your SREs (not) ru...
NETWAYS8 views
Helko van den Brom - VSL by Dutch Power
Helko van den Brom - VSLHelko van den Brom - VSL
Helko van den Brom - VSL
Dutch Power86 views
Synthetic Biology.pptx by ShubNoor4
Synthetic Biology.pptxSynthetic Biology.pptx
Synthetic Biology.pptx
ShubNoor45 views
Managing Github via Terrafom.pdf by micharaeck
Managing Github via Terrafom.pdfManaging Github via Terrafom.pdf
Managing Github via Terrafom.pdf
micharaeck5 views
Roozbeh Torkzadeh - TU Eindhoven by Dutch Power
Roozbeh Torkzadeh - TU EindhovenRoozbeh Torkzadeh - TU Eindhoven
Roozbeh Torkzadeh - TU Eindhoven
Dutch Power84 views
Gym Members Community.pptx by nasserbf1987
Gym Members Community.pptxGym Members Community.pptx
Gym Members Community.pptx
nasserbf19876 views
BLogSite (Web Programming) (1).pdf by Fiverr
BLogSite (Web Programming) (1).pdfBLogSite (Web Programming) (1).pdf
BLogSite (Web Programming) (1).pdf
Fiverr11 views
Christan van Dorst - Hyteps by Dutch Power
Christan van Dorst - HytepsChristan van Dorst - Hyteps
Christan van Dorst - Hyteps
Dutch Power87 views

Ferguson VR Hackathon - May 6, 2017

  • 3. VR Experiences New considera-ons for VR app development Focus on User Experience - Stereoscopic vision & interpupillary distance (IPD) - Head tracking & degrees of freedom (DoF) - Cone of focus & field of view (FOV) - 3D posi-onal audio - Latency & frame rate (frames per second / FPS) Focus on User Comfort - Eye strain - Mo-on sickness
  • 4. Degrees of Freedom, Stereoscopic Vision & Interpupillary Distance* * Illustra*ons from Mozilla
  • 5. Na#ve VR Devices (PC & Console) HTC Vive (room-scale VR) Oculus Ri6 Playsta:on VR Fove Razer OSVR
  • 6. Mobile VR Devices (Smartphone) Samsung Gear VR Daydream Cardboard Hundreds of third-party headsets
  • 7. VR Programming • Unreal Engine (C++) • Unity (C#) • Source Engine (C++) • WebVR (JS)
  • 8. VR Distribu+on • SteamVR • Google Play • Oculus Store • The Ri8 Arcade • V "open alterna>ve" to SteamVR
  • 9. Why WebVR? • No app store ecosystem, distribu3on via internet • Mobile & desktop automa3cally supported • Uses current tools and libraries for JS • Easy switch between VR & non-VR mode • Interfacing with hardware through the browser
  • 10. Progressive Enhancement by Arturo Paracuellos
  • 11. Virtual Reality on the Web A Retrospec+ve 1/2 • 1994 VRML - first a0empt to create an internet-based 3D language. (Mark Pesce presented the Labyrinth demo he developed with Tony Parisi and Peter Kennard.) • VRML2 (1997) - added many features (animaMon) and later was succeeded by X3D Problem of VRML: plugin-based technology that only came preinstalled on IE
  • 12. Virtual Reality on the Web A Retrospec+ve 2/2 • 2003 OpenGL ES - cross-language and mul9-pla:orm 3D graphics API. Hardware accelerated rendering of 3D objects. • WebGL 1.0 introduced by Mozilla based on OpenGL ES uses DOM (canvas element) • X3D introduced X3DOM
  • 13. Most popular WebGL Engines today • Three.js by Ricardo Cabello in 2010 • Babylon.js • PlayCanvas.js • Goo Engine • Scene.js • Turbulenz
  • 14. Stackoverflow score growth over 0me by tag comparison WebGL Framework Comparison
  • 15. What is WebVR? WebVR is a experimental Javascript API that provides interfaces to VR hardware to allow developers to build compelling, comfortable VR experiences on the web.
  • 16. WebVR WebVR v1.1 Editor’s Dra,, 04/05/17 - deviceOrienta-on - VRDisplay object handles almost everything - available on mul-ple pla<orms ..soon.. WebVR (2.0) Editor’s Dra,, 04/17/17 - not backwards compa-ble - device support - introduc-on of VRDevice & VRSession to replace VRDisplay - read Explainer doc!
  • 17. Goals of WebVR • Detect available virtual reality devices. • Query the device’s capabili6es. • Poll the device’s posi6on and orienta6on. • Display imagery on the device at the appropriate frame rate.
  • 18. Non-goals of WebVR • Define how a virtual reality browser would work. • Take full advantage of augmented reality devices. • Build “The Metaverse.” Check out h*ps://webvr.rocks/ for support updates
  • 19. WebVR Frameworks • A-Frame by Mozilla • ReactVR by Facebook • ForgeJS by GoPro, Inc., great for 360 photo & video content • Primrose great for collaboraIve VR web apps • Janus VR VR browser/editor • Vizor in-browser VR development, SocialVR • GLAM (GL And Markup) declaraIve language for 3D web
  • 22. A-Frame • a 3DML (3D markup language) like X3Dom and GLAM • DOM-based En>ty-Component System => declara>ve & extensible (similar to Unity/UE4/PlayCanvas) The A-Frame Stack:
  • 24. A-Frame • En$$es are HTML elements (i.e., <a-entity>) • Components are HTML a9ributes, set on the en$ty <body> <a-scene> <a-entity geometry="primitive:box" material="color:#c00"> </a-entity> </a-scene> </body>
  • 25. En#ty • general purpose objects (e.g. create a player, ball, or field) • they inherently have a posi;on, rota;on and scale in a scene <a-entity geometry="primitive:box; width:0.2; height:0.3; depth:0.5;" material="color:#c00" position="0 0 -1" rotation="0 30 30" material="color:#c00"> </a-entity>
  • 26. Primi%ves (concise, seman%c building blocks) <a-entity geometry="primitive:box; width:0.2; height:0.3; depth:0.5;" material="color:#c00"> </a-entity> <a-box width="0.2" height="0.3" depth="0.5" material="color:#c00"> </a-box>
  • 28. Custom Components AFRAME.registerComponent('foo', { schema: { bar: {type: 'number'}, baz: {type: 'string'} }, init: function () { // Do something when component is plugged in. }, update: function () { // Do something when component's data is updated. } });
  • 30. Gaze-Based Cursor Interac2ons AFRAME.registerComponent('clickable', { init: function () { var el = this.el; el.addEventListener('mouseenter', function () { el.setAttribute('color', '#f00'); }); el.addEventListener('mouseleave', function () { el.setAttribute('color', '#fff'); }); el.addEventListener('click', function () { el.setAttribute('material', 'src' , 'assets/football.png'); }); } }); <a-sphere clickable src="assets/basketball.png" radius="0.5" color="#fff"></a-sphere> <a-camera><a-cursor></a-cursor></a-camera>
  • 35. Resources * A-Frame Slack * A-Frame Component Registry * mozvr.com * VR Gets Real with WebVR * WebVR API * The UX of VR Get In Touch @rolanddubois rolanddubois.com
  • 36. It’s code *me! Here’s what we’re building: • github.com/rdub80/Ferguson-VR-Hackathon • XAMPP, MAMP or $ python -m SimpleHTTPServer • JSBin