SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
WebVR 
Vladimir Vukicevic 
Mozilla
Why WebVR? 
Web is a highly connected environment 
The “Metaverse” is a VR-rich concept 
.. we’re already very close! It’s just 2D!
WhyWebVR? 
In practical terms, VR will succeed or fail based on 
content and how easy it is to access that content. 
There is no easier or more ubiquitous content 
delivery mechanism than the Web. 
It had better be able to deliver VR.
VR Basics 
Quick Overview of VR
Immersion 
Sensory Immersion 
(Focus on Visual Immersion) 
Input Immersion
Visual Immersion
Per-Eye Rendering
Device-Specific Distortion
Input Immersion
WebVR Overview 
What is WebVR? 
What does WebVR enable?
WebVR 
Render Web Content in VR 
Access to devices being used for Virtual Reality 
Device-agnostic VR in browser 
Focus on Head-Mounted Displays (HMDs) 
and Sensor devices
Web Content in VR 
Focus on Visual Immersion 
Provide Input, But Up to App to Handle 
Support both WebGL and HTML/CSS Content 
Goals: 
Allow High-End Experiences with VR in the browser 
(asm.js, Emscripten, game engines, etc.) 
Allow Web Experiences with VR 
(responsive sites, CSS 3D, VR browsing, etc.)
Device-agnostic VR 
Challenge: Unify varied devices 
Provide consistent API
Device-agnostic VR 
Even worse situation in sensors!
WebVR API 
Nuts & Bolts
Basic Interface 
Call getVRDevices(), which returns a Promise: 
navigator.getVRDevices().then(vrDeviceCallback) 
The callback receives a list of all available VR devices: 
function vrDeviceCallback(vrDevices) 
{ 
… 
}
VR Devices 
For every device: 
hardwareUnitId 
Unique identifier per hardware device 
deviceId 
Unique identifier for specific sensor/device on hardware 
deviceName 
User-readable name identifying the sensor
VR Devices 
For example, with an Oculus Rift connected, getVRDevices() will return a list with... 
(1)HMDVRDevice 
a)hardwareDeviceId: oculus-1 
b)deviceId: 12345 
c)deviceName: “Oculus Rift HMD” 
(1)SensorVRDevice 
a)hardwareDeviceId: oculus-1 
b)deviceId: abcde 
c)deviceName: “Oculus Rift Sensor” 
Same hardware Device ID
VR Devices: HMDs 
HMDs have configuration and data for rendering 
setFieldOfView(left, right, zNear, zFar) 
Configure the field of view that rendering will use 
getRecommendedEyeFieldOfView(whichEye) 
getMaximumEyeFieldOfView(whichEye) 
getCurrentEyeFieldOfView(whichEye) 
Get the recommended and maximum FOV that this 
device can render
Configuring HMDs 
hmd.setFieldOfView( 
{ upDegrees: 65, 
downDegrees: 65, 
leftDegrees: 65, 
rightDegrees: 45 }, 
… 
); 
Human eye field of view (Wikipedia) 
60°upwards 
75°downwards 
95°away from nose 
60°towards nose 
Viewing parameters are needed for proper 
distortion and WebGL rendering 
Vertical FOV 
Horizontal FOV 
Left Degrees 
Right Degrees 
Up Degrees 
Down Degrees 
Asymmetrical Projection
VR Devices: HMDs 
getEyeTranslation(whichEye) 
Get the eye translation offset for the given eye 
getRecommendedEyeRenderRect(whichEye) 
Get the render rectangle where content for the given 
eye should go
Configuring HMDs 
hmd.getRecommendedEyeRenderRect(“left”) 
Mainly useful for WebGL, defines where and how big the eye’s scene should be rendered. 
WebGL Canvas 
Left Eye Render Rect
VR Devices: Sensors 
getState(timeOffset = 0.0) 
Get the state of this sensor, at the given optional time offset. 
Returns a dictionary containing position, orientation, as well as 
linear and angular velocity and acceleration. 
zeroSensor() 
Reset the sensor, making the current state the zero position
Getting State 
hmdSensor.getState() 
Obtain the current state of the sensor. 
Call per frame. 
Future: a particular per-frame state may be provided 
Helps the browser know exactly what state was used to render 
For proper WebGL + CSS sync 
For Oculus Timewarp rendering 
{ 
orientation: {w:0, x:0, y:0, z:0}, 
angularAcceleration: {x:0, y:0, z:0}, 
angularVelocity: {x:0, y:0, z:0}, 
position: {x:0, y:0, z:0}, 
linearAcceleration: {x:0, y:0, z:0}, 
linearVelocity: {x:0, y:0, z:0}, 
timeStamp: 0 
}
Entering VR Mode 
requestFullScreen call is extended to take an options dictionary 
One option specifies the VR Display to go fullscreen on; 
also activates VR Rendering 
var container = document.getElementById(“container”); 
container.mozRequestFullScreen({ vrDisplay: hmd }); 
Fullscreen is the onlyway to enter VR Mode
WebVR and WebGL
WebVR with WebGL 
Most similar to traditional 3D/VR development 
App code does all rendering 
Final presentation steps done by browser 
Quick integration with existing WebGL content and engines
Relevant WebVR API 
HMD: setFieldOfView() 
Browser needs to know exact FOV settings 
that content is rendering with 
HMD: getRecommendedEyeRenderRect() 
Browser needs to know where the left/right eye 
content is present 
Sensors: getState() 
Content rendering should take into account 
position/orientation of HMD, and any other 
sensors that are supported
Engine Integration 
Natural extension to WebGL Content 
e.g.: multiple WebVR Renderers for three.js exist 
that use the WebVR API 
Working on adding support to UE4, Unity, etc. 
Lots of interest among Mozilla Games project
WebVR and CSS
Why HTML/CSS with VR? 
Modern CSS has lots of features 
3D Transforms 
Transitions 
Animations 
Gradients 
Complex Backgrounds 
HTML/CSS is well-suited for a lot of content 
e.g. placing informative content in a VR space 
HTML/CSS + VR can move us to Responsive Design 
Web sites can adapt to “Browsing in VR”
CSS 3D Transforms 
transform-style: preserve-3d; 
transform: translateZ(-200px);
CSS 3D Transforms in VR 
No perspectiveproperty used: 
VR creates its own space 
Defined by the VR HMD FOV 
CSS Origin is Top Left 
VR Origin is Center 
… this may be controversial 
(... and may not be even needed)
Handling Position/Orientation in CSS 
Present 
Per-frame, set a transform on an 
element that acts as the “camera” 
Use position/orientation from state to 
generate a transformation matrix 
var state = hmdSensor.getState(); 
camera.style.transform = stateToCSSTransform(state);
Handling Position/Orientation in CSS 
Future 
Use a CSS property 
#camera { 
transform: vr-orientation() vr-position(); 
} 
Automatic application of position/orientation 
from fullscreen HMD device 
Allows for code-free VR
Responsive Design 
@media screen and (min-width: 400px) and (orientation: portrait) 
{ /* phone UI rules */ } 
@media screen and (min-width: 800px) 
{ /* desktop and large tablet rules */ } 
@media vr 
{ 
#camera { 
transform: vr-orientation() vr-position(); 
} 
#contentArea { 
width: 100cm; 
height: 80cm; 
transform: translateZ(50cm); 
} 
}
WebVR Current Status
WebVR Status 
Experimental Firefox and Chrome Builds 
Implement the API described here 
WebGLRendering Works Well In Both 
CSS Rendering Only In Firefox 
Everything Subject To Change! 
(Still R&D!)
WebVR Status 
Core API with no CSS support will 
likely be first to ship 
Will enable WebGL VR rendering 
Will enable Emscripten/asm.js-based porting 
of VR content and demos
WebVR Status 
Oculus Rift support only 
Desktop only 
Google Carboard coming soon 
Android coming soon 
Additional input devices coming soon
WebVR Status 
Web toolmakers adding support 
(especially in gaming space) 
Working on adding support to Emscripten 
CSS 3D designers also experimenting
Browsing in VR
Hiro 
Mozilla exploration of VR browsing 
VR-based Interaction 
Browsing existing sites in VR 
Browsing VR sites smoothly 
from a HUD/controller 
Input issues 
(e.g. URLs? Usernames/passwords?) 
First demo soon, rapid updates
For more information... 
web-vr-discuss mailing list 
https://mail.mozilla.org/listinfo/web-vr-discuss 
(search for web-vr-discuss!) 
@vvuk 
I’ll generally announce new builds, 
etc. to Twitter. 
@joshcarpenter 
For work on Hiroand VR 
design and UX
Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!

Weitere ähnliche Inhalte

Was ist angesagt?

쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
Kay Kim
 
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
devCAT Studio, NEXON
 
전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011
devCAT Studio, NEXON
 

Was ist angesagt? (20)

Game design dan game designer
Game design dan game designerGame design dan game designer
Game design dan game designer
 
User Interface
User InterfaceUser Interface
User Interface
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for Games
 
Game Interface Design
Game Interface DesignGame Interface Design
Game Interface Design
 
Ui in unity
Ui in unityUi in unity
Ui in unity
 
Ecommerce website with seo optimization
Ecommerce website with seo optimizationEcommerce website with seo optimization
Ecommerce website with seo optimization
 
Deferred rendering in Dying Light
Deferred rendering in Dying LightDeferred rendering in Dying Light
Deferred rendering in Dying Light
 
Game balancing
Game balancingGame balancing
Game balancing
 
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
 
트레블헌터 개발기획서
트레블헌터 개발기획서트레블헌터 개발기획서
트레블헌터 개발기획서
 
Siggraph 2011: Occlusion culling in Alan Wake
Siggraph 2011: Occlusion culling in Alan WakeSiggraph 2011: Occlusion culling in Alan Wake
Siggraph 2011: Occlusion culling in Alan Wake
 
Workflow of Creating Game UX/UI Design
Workflow of Creating Game UX/UI DesignWorkflow of Creating Game UX/UI Design
Workflow of Creating Game UX/UI Design
 
3D Games
3D Games3D Games
3D Games
 
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
 
온라인 게임과 소셜 게임 서버는 어떻게 다른가?
온라인 게임과 소셜 게임 서버는 어떻게 다른가?온라인 게임과 소셜 게임 서버는 어떻게 다른가?
온라인 게임과 소셜 게임 서버는 어떻게 다른가?
 
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
 
전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
 
Practical Occlusion Culling in Killzone 3
Practical Occlusion Culling in Killzone 3Practical Occlusion Culling in Killzone 3
Practical Occlusion Culling in Killzone 3
 
<쿠키런:오븐브레이크> 길드탐험 및 방랑박쥐상점 컨텐츠 역기획서
<쿠키런:오븐브레이크> 길드탐험 및 방랑박쥐상점 컨텐츠 역기획서<쿠키런:오븐브레이크> 길드탐험 및 방랑박쥐상점 컨텐츠 역기획서
<쿠키런:오븐브레이크> 길드탐험 및 방랑박쥐상점 컨텐츠 역기획서
 

Andere mochten auch

Andere mochten auch (20)

WebVR
WebVRWebVR
WebVR
 
Build the Virtual Reality Web with A-Frame
Build the Virtual Reality Web with A-FrameBuild the Virtual Reality Web with A-Frame
Build the Virtual Reality Web with A-Frame
 
A-Frame: VR for Web Developers
A-Frame: VR for Web DevelopersA-Frame: VR for Web Developers
A-Frame: VR for Web Developers
 
The next frontier: WebGL and WebVR
The next frontier: WebGL and WebVRThe next frontier: WebGL and WebVR
The next frontier: WebGL and WebVR
 
WebVR - MobileTechCon Berlin 2016
WebVR - MobileTechCon Berlin 2016WebVR - MobileTechCon Berlin 2016
WebVR - MobileTechCon Berlin 2016
 
An Introduction to WebVR – or How to make your user sick in 60 seconds
An Introduction to WebVR – or How to make your user sick in 60 secondsAn Introduction to WebVR – or How to make your user sick in 60 seconds
An Introduction to WebVR – or How to make your user sick in 60 seconds
 
WebVR: Developing for the Immersive Web
WebVR: Developing for the Immersive WebWebVR: Developing for the Immersive Web
WebVR: Developing for the Immersive Web
 
WebVR Ecosystem and API Update
WebVR Ecosystem and API UpdateWebVR Ecosystem and API Update
WebVR Ecosystem and API Update
 
Introduction to WebGL and WebVR
Introduction to WebGL and WebVRIntroduction to WebGL and WebVR
Introduction to WebGL and WebVR
 
Web vr creative_vr
Web vr creative_vrWeb vr creative_vr
Web vr creative_vr
 
20160713 webvr
20160713 webvr20160713 webvr
20160713 webvr
 
JavaScript Speech Recognition
JavaScript Speech RecognitionJavaScript Speech Recognition
JavaScript Speech Recognition
 
Developing Web Graphics with WebGL
Developing Web Graphics with WebGLDeveloping Web Graphics with WebGL
Developing Web Graphics with WebGL
 
WebGL: The Next Generation
WebGL:  The Next GenerationWebGL:  The Next Generation
WebGL: The Next Generation
 
An Introduction to Web VR January 2015
An Introduction to Web VR January 2015An Introduction to Web VR January 2015
An Introduction to Web VR January 2015
 
Hacking Reality: Browser-Based VR with HTML5
Hacking Reality: Browser-Based VR with HTML5Hacking Reality: Browser-Based VR with HTML5
Hacking Reality: Browser-Based VR with HTML5
 
Introduction to WebVR Autodesk Forge 2016
Introduction to WebVR Autodesk Forge 2016Introduction to WebVR Autodesk Forge 2016
Introduction to WebVR Autodesk Forge 2016
 
점, 선, 면
점, 선, 면점, 선, 면
점, 선, 면
 
3D Web in 3D
3D Web in 3D3D Web in 3D
3D Web in 3D
 
Barefoot Leader's Guide to 3D Web part 1
Barefoot Leader's Guide to 3D Web part 1Barefoot Leader's Guide to 3D Web part 1
Barefoot Leader's Guide to 3D Web part 1
 

Ähnlich wie Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!

How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
Bitla Software
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Esri Nederland
 

Ähnlich wie Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last! (20)

Getting Started with Web VR
Getting Started with Web VR Getting Started with Web VR
Getting Started with Web VR
 
Ferguson VR Hackathon - May 6, 2017
Ferguson VR Hackathon - May 6, 2017Ferguson VR Hackathon - May 6, 2017
Ferguson VR Hackathon - May 6, 2017
 
Scotland JS 2016 Keynote: The VR Web and the Future of the Browser
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
 
Casper Fabricius (Cimmerse): WebVR with A-Frame, React and Redux
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
 
The Powerful VR WEB Is Here
The Powerful VR WEB Is HereThe Powerful VR WEB Is Here
The Powerful VR WEB Is Here
 
Building Browser VR Experience in React VR
Building Browser VR Experience in React VRBuilding Browser VR Experience in React VR
Building Browser VR Experience in React VR
 
Foundations of the Immersive Web
Foundations of the Immersive WebFoundations of the Immersive Web
Foundations of the Immersive Web
 
Introduction to The VR Web
Introduction to The VR WebIntroduction to The VR Web
Introduction to The VR Web
 
Getting Started in VR with JS
Getting Started in VR with JSGetting Started in VR with JS
Getting Started in VR with JS
 
Migrating your Web app to Virtual Reality
Migrating your Web app to Virtual RealityMigrating your Web app to Virtual Reality
Migrating your Web app to Virtual Reality
 
Intro to @viewport & other new Responsive Web Design CSS features
Intro to @viewport & other new Responsive Web Design CSS featuresIntro to @viewport & other new Responsive Web Design CSS features
Intro to @viewport & other new Responsive Web Design CSS features
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
Портируем существующее Web-приложение в виртуальную реальность / Денис Радин ...
Портируем существующее Web-приложение в виртуальную реальность / Денис Радин ...Портируем существующее Web-приложение в виртуальную реальность / Денис Радин ...
Портируем существующее Web-приложение в виртуальную реальность / Денис Радин ...
 
HTML5 - A Whirlwind tour
HTML5 - A Whirlwind tourHTML5 - A Whirlwind tour
HTML5 - A Whirlwind tour
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
 
WEB-VR by Ankitkumar Singh
WEB-VR by Ankitkumar SinghWEB-VR by Ankitkumar Singh
WEB-VR by Ankitkumar Singh
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moible
 
Html5
Html5Html5
Html5
 
Writing Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web TechnologyWriting Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web Technology
 
Writing Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web TechnologyWriting Virtual And Augmented Reality Apps With Web Technology
Writing Virtual And Augmented Reality Apps With Web Technology
 

Mehr von FITC

Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
FITC
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
FITC
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
FITC
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
FITC
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
FITC
 

Mehr von FITC (20)

Cut it up
Cut it upCut it up
Cut it up
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech Stack
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR Project
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the Answer
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s Story
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday Innovation
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR Game
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare System
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product Design
 
The Power of Now
The Power of NowThe Power of Now
The Power of Now
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAs
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstack
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self Discovery
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time For
 

Kürzlich hochgeladen

Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
imonikaupta
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
@Chandigarh #call #Girls 9053900678 @Call #Girls in @Punjab 9053900678
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Chandigarh Call girls 9053900678 Call girls in Chandigarh
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
Diya Sharma
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
 
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 

Kürzlich hochgeladen (20)

Enjoy Night⚡Call Girls Samalka Delhi >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Samalka Delhi >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Samalka Delhi >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Samalka Delhi >༒8448380779 Escort Service
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
 
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
 
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
VVIP Pune Call Girls Mohammadwadi WhatSapp Number 8005736733 With Elite Staff...
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
Dubai Call Girls Milky O525547819 Call Girls Dubai Soft Dating
Dubai Call Girls Milky O525547819 Call Girls Dubai Soft DatingDubai Call Girls Milky O525547819 Call Girls Dubai Soft Dating
Dubai Call Girls Milky O525547819 Call Girls Dubai Soft Dating
 
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
 

Bringing Virtual Reality to the Web: VR, WebGL and CSS – Together At Last!

  • 2. Why WebVR? Web is a highly connected environment The “Metaverse” is a VR-rich concept .. we’re already very close! It’s just 2D!
  • 3. WhyWebVR? In practical terms, VR will succeed or fail based on content and how easy it is to access that content. There is no easier or more ubiquitous content delivery mechanism than the Web. It had better be able to deliver VR.
  • 4. VR Basics Quick Overview of VR
  • 5. Immersion Sensory Immersion (Focus on Visual Immersion) Input Immersion
  • 10. WebVR Overview What is WebVR? What does WebVR enable?
  • 11. WebVR Render Web Content in VR Access to devices being used for Virtual Reality Device-agnostic VR in browser Focus on Head-Mounted Displays (HMDs) and Sensor devices
  • 12. Web Content in VR Focus on Visual Immersion Provide Input, But Up to App to Handle Support both WebGL and HTML/CSS Content Goals: Allow High-End Experiences with VR in the browser (asm.js, Emscripten, game engines, etc.) Allow Web Experiences with VR (responsive sites, CSS 3D, VR browsing, etc.)
  • 13. Device-agnostic VR Challenge: Unify varied devices Provide consistent API
  • 14. Device-agnostic VR Even worse situation in sensors!
  • 15. WebVR API Nuts & Bolts
  • 16. Basic Interface Call getVRDevices(), which returns a Promise: navigator.getVRDevices().then(vrDeviceCallback) The callback receives a list of all available VR devices: function vrDeviceCallback(vrDevices) { … }
  • 17. VR Devices For every device: hardwareUnitId Unique identifier per hardware device deviceId Unique identifier for specific sensor/device on hardware deviceName User-readable name identifying the sensor
  • 18. VR Devices For example, with an Oculus Rift connected, getVRDevices() will return a list with... (1)HMDVRDevice a)hardwareDeviceId: oculus-1 b)deviceId: 12345 c)deviceName: “Oculus Rift HMD” (1)SensorVRDevice a)hardwareDeviceId: oculus-1 b)deviceId: abcde c)deviceName: “Oculus Rift Sensor” Same hardware Device ID
  • 19. VR Devices: HMDs HMDs have configuration and data for rendering setFieldOfView(left, right, zNear, zFar) Configure the field of view that rendering will use getRecommendedEyeFieldOfView(whichEye) getMaximumEyeFieldOfView(whichEye) getCurrentEyeFieldOfView(whichEye) Get the recommended and maximum FOV that this device can render
  • 20. Configuring HMDs hmd.setFieldOfView( { upDegrees: 65, downDegrees: 65, leftDegrees: 65, rightDegrees: 45 }, … ); Human eye field of view (Wikipedia) 60°upwards 75°downwards 95°away from nose 60°towards nose Viewing parameters are needed for proper distortion and WebGL rendering Vertical FOV Horizontal FOV Left Degrees Right Degrees Up Degrees Down Degrees Asymmetrical Projection
  • 21. VR Devices: HMDs getEyeTranslation(whichEye) Get the eye translation offset for the given eye getRecommendedEyeRenderRect(whichEye) Get the render rectangle where content for the given eye should go
  • 22. Configuring HMDs hmd.getRecommendedEyeRenderRect(“left”) Mainly useful for WebGL, defines where and how big the eye’s scene should be rendered. WebGL Canvas Left Eye Render Rect
  • 23. VR Devices: Sensors getState(timeOffset = 0.0) Get the state of this sensor, at the given optional time offset. Returns a dictionary containing position, orientation, as well as linear and angular velocity and acceleration. zeroSensor() Reset the sensor, making the current state the zero position
  • 24. Getting State hmdSensor.getState() Obtain the current state of the sensor. Call per frame. Future: a particular per-frame state may be provided Helps the browser know exactly what state was used to render For proper WebGL + CSS sync For Oculus Timewarp rendering { orientation: {w:0, x:0, y:0, z:0}, angularAcceleration: {x:0, y:0, z:0}, angularVelocity: {x:0, y:0, z:0}, position: {x:0, y:0, z:0}, linearAcceleration: {x:0, y:0, z:0}, linearVelocity: {x:0, y:0, z:0}, timeStamp: 0 }
  • 25. Entering VR Mode requestFullScreen call is extended to take an options dictionary One option specifies the VR Display to go fullscreen on; also activates VR Rendering var container = document.getElementById(“container”); container.mozRequestFullScreen({ vrDisplay: hmd }); Fullscreen is the onlyway to enter VR Mode
  • 27. WebVR with WebGL Most similar to traditional 3D/VR development App code does all rendering Final presentation steps done by browser Quick integration with existing WebGL content and engines
  • 28. Relevant WebVR API HMD: setFieldOfView() Browser needs to know exact FOV settings that content is rendering with HMD: getRecommendedEyeRenderRect() Browser needs to know where the left/right eye content is present Sensors: getState() Content rendering should take into account position/orientation of HMD, and any other sensors that are supported
  • 29. Engine Integration Natural extension to WebGL Content e.g.: multiple WebVR Renderers for three.js exist that use the WebVR API Working on adding support to UE4, Unity, etc. Lots of interest among Mozilla Games project
  • 31. Why HTML/CSS with VR? Modern CSS has lots of features 3D Transforms Transitions Animations Gradients Complex Backgrounds HTML/CSS is well-suited for a lot of content e.g. placing informative content in a VR space HTML/CSS + VR can move us to Responsive Design Web sites can adapt to “Browsing in VR”
  • 32. CSS 3D Transforms transform-style: preserve-3d; transform: translateZ(-200px);
  • 33. CSS 3D Transforms in VR No perspectiveproperty used: VR creates its own space Defined by the VR HMD FOV CSS Origin is Top Left VR Origin is Center … this may be controversial (... and may not be even needed)
  • 34. Handling Position/Orientation in CSS Present Per-frame, set a transform on an element that acts as the “camera” Use position/orientation from state to generate a transformation matrix var state = hmdSensor.getState(); camera.style.transform = stateToCSSTransform(state);
  • 35. Handling Position/Orientation in CSS Future Use a CSS property #camera { transform: vr-orientation() vr-position(); } Automatic application of position/orientation from fullscreen HMD device Allows for code-free VR
  • 36. Responsive Design @media screen and (min-width: 400px) and (orientation: portrait) { /* phone UI rules */ } @media screen and (min-width: 800px) { /* desktop and large tablet rules */ } @media vr { #camera { transform: vr-orientation() vr-position(); } #contentArea { width: 100cm; height: 80cm; transform: translateZ(50cm); } }
  • 38. WebVR Status Experimental Firefox and Chrome Builds Implement the API described here WebGLRendering Works Well In Both CSS Rendering Only In Firefox Everything Subject To Change! (Still R&D!)
  • 39. WebVR Status Core API with no CSS support will likely be first to ship Will enable WebGL VR rendering Will enable Emscripten/asm.js-based porting of VR content and demos
  • 40. WebVR Status Oculus Rift support only Desktop only Google Carboard coming soon Android coming soon Additional input devices coming soon
  • 41. WebVR Status Web toolmakers adding support (especially in gaming space) Working on adding support to Emscripten CSS 3D designers also experimenting
  • 43. Hiro Mozilla exploration of VR browsing VR-based Interaction Browsing existing sites in VR Browsing VR sites smoothly from a HUD/controller Input issues (e.g. URLs? Usernames/passwords?) First demo soon, rapid updates
  • 44. For more information... web-vr-discuss mailing list https://mail.mozilla.org/listinfo/web-vr-discuss (search for web-vr-discuss!) @vvuk I’ll generally announce new builds, etc. to Twitter. @joshcarpenter For work on Hiroand VR design and UX