1 of 49

WebVR

The next frontier

1

@g33konaut

2 of 49

Привет москва!

I’m Martin from Zürich, Switzerland.

Software Engineer

@ Archilogic

2

@g33konaut

3 of 49

What we’ll cover

  • Making 3D things on the web
  • What is WebVR?
  • WebVR 101
  • What are the challenges?

3

@g33konaut

4 of 49

Making 3D things on the web

4

@g33konaut

5 of 49

WebGL

  • Using a <canvas> element and WebGL
  • Libraries such as Three.js, Babylon, …

5

@g33konaut

6 of 49

Three.js

6

Canvas + Renderer

Camera

Scene

@g33konaut

7 of 49

Three.js

var renderer = new THREE.WebGLRenderer(),� scene = new THREE.Scene(),� camera = new THREE.PerspectiveCamera(...),

box = new THREE.Mesh(...)

scene.add(box)

7

@g33konaut

8 of 49

Three.js

function update() {

box.rotation.y += Math.PI / 100

renderer.render(scene, camera)

requestAnimationFrame(update)

}

requestAnimationFrame(update)

8

@g33konaut

9 of 49

VR

9

@g33konaut

10 of 49

VR - what’s it good for?

  • Maps / Navigation
  • Education / Research
  • Healthcare
  • Entertainment / Journalism
  • Marketing

10

@g33konaut

11 of 49

VR Hardware

  • Oculus Rift
  • GearVR
  • HTC Vive
  • Google Cardboard
  • Google Daydream
  • ...etc...

11

@g33konaut

12 of 49

It is a fragmented ecosystem

  • Capabilities
  • Applications

12

@g33konaut

13 of 49

Devices & Capabilities

13

Oculus

$599*

Vive

$799

Gear VR

$99*

Daydream

$79

Cardboard

$5

Position tracking

Roomscale tracking

Controls

2x

2x

Touchpad

1x

Button

Mobile

@g33konaut

14 of 49

What is WebVR?

14

@g33konaut

15 of 49

Creating is AWESOME

15

@g33konaut

16 of 49

Creating should be for everyone & shareable!

16

@g33konaut

17 of 49

How about...

17

+

@g33konaut

18 of 49

We’ve got this now!

18

+

=

@g33konaut

19 of 49

WebVR...

...will work on all devices with a browser*

...will allow to respond to the capabilities

...will make sharing & discovery easier

19

@g33konaut

20 of 49

20

@g33konaut

21 of 49

How does it work?

21

@g33konaut

22 of 49

Spec in progress!

22

@g33konaut

23 of 49

Step 1: Get VR displays

navigator.getVRDisplays()�.then((displays) => {� // do something with the display�})

23

@g33konaut

24 of 49

Step 2: Start to render on the display

disp.requestPresent([{ source: canvas }])�.then(() => {� render(disp)�})

24

@g33konaut

25 of 49

Step 3: Get position/orientation & draw

function render(display) {� display.requestAnimationFrame(...)� display.getFrameData(frameData)� render3dThings(frameData)� display.submitFrame()�}

25

@g33konaut

26 of 49

Wait wait wait - VRFrameData?

readonly DOMHighResTimeStamp timestampreadonly Float32Array leftProjectionMatrixreadonly Float32Array leftViewMatrixreadonly VRPose pose

...

26

@g33konaut

27 of 49

What’s the VR web gonna be?

27

@g33konaut

28 of 49

28

@g33konaut

29 of 49

Responsive WebVR

29

@g33konaut

30 of 49

Responsive WebVR

30

@g33konaut

31 of 49

WebVR Polyfill

31

@g33konaut

32 of 49

Open Questions & Challenges

32

@g33konaut

33 of 49

Input

33

@g33konaut

34 of 49

The obvious choices may not be the best...

34

@g33konaut

35 of 49

Using gaze or “ray input”

35

@g33konaut

36 of 49

Using the controllers is possible

36

@g33konaut

37 of 49

UI

37

@g33konaut

38 of 49

We need to rethink common UI patterns

38

@g33konaut

39 of 49

A few ideas for input hardware

  • Gamepad
  • LEAPMotion
  • Myo
  • Microsoft Kinect
  • Intel RealSense

39

@g33konaut

40 of 49

Navigation / Locomotion

40

@g33konaut

41 of 49

How do we move in VR?

41

@g33konaut

42 of 49

Presence / Social

42

@g33konaut

43 of 49

43

@g33konaut

44 of 49

State of the union

44

n/a yet

@g33konaut

45 of 49

Beyond VR

45

@g33konaut

46 of 49

Beyond VR

  • Microsoft Hololens?
  • Google Tango
  • … to be continued ...

46

@g33konaut

47 of 49

Try it out!

47

@g33konaut

48 of 49

One more thing...

48

“If the computer is the bicycle for our mind,

then VR is the teleporter.”

  • Martin Splitt

@g33konaut

49 of 49

спасибо!

49

@g33konaut