@poshaughnessy
@samsunginternet
The Physical & Digital worlds are
merging
XR
● Cross Reality?
XR
● Cross Reality?
● Extensible Reality?
XR
● Cross Reality?
● Extensible Reality?
● [Whatever You Want] Reality!
youtu.be/U-CpA5d9MjI?t=10m54s
XR
Real
Reality
Augmented
Reality
Mixed
Reality
Virtual
Reality
XR
Headset-based
Mixed Reality
VR headsets with
pass-through camera
Dedicated MR
headsets
@winston__chen
HoloLems via
Gizmodo
Magic Leap via
The Next Web
ARKitARCore
Mobile-based
Mixed Reality
ARCore & ARKit features
● Positional tracking
● Surface detection
● Light estimation
developers.google.com/ar/discover/ developer.apple.com/arkit/
ARKitARCore
● iOS 11
● iPhone 6s
and newer
● Android 7+
● Various devices
(Samsung S7, S8,
Pixel 1 & 2...)
Sothebys Curate
Golf Scope via
@Rengle820
By Abhishek Singh
But what about the
Web?
WebVR support
Platform
Browsers
Platform
Browsers
WebVR support
Experimental mobile AR browsers
WebARonARCore
Google AR
Mozilla WebXR Viewer
(ARKit)
WebARonARKit
The landscape is evolving fast
Sources: TechCrunch, CNET, Magic Leap
69.8%
68.5%
Web technologies are
familiar to many
65.1%
JavaScript
HTML
CSS
Top 3 most popular technologies - Stack Overflow Developer Survey 2018
The Web lets people dive right in
Progressive Enhancement, by Arturo Paracuellos
And we can make use of
Progressive Web Apps
samsunginter.net/airhorn
● Location based
(GPS, compass)
● HTML + JS, but
needed native SDK
(Wikitude)
2011
● Marker based
● getUserMedia
(WebRTC)
● JSARToolkit
2012
● WebVR
● Oculus Rift DK
● Experimental
browser builds
2014
2017
● three.ar.js
● Experimental
browsers
(WebARonARCore,
WebARonARKit)
bit.ly/new-and-unusual-uses-of-vr
WebVR examples
vr.with.in aframe.io/a-painter/ learnbrite.com
Storytelling Art Education
threejs.org
aframe.io
babylonjs.com
Unity3D WebVR Assets
hacks.mozilla.org/2018/02/create-vr-on-the-web-using-unity3d/
Getting started with WebVR
aframe.io/docs/0.8.0/introduction/
Next: WebXR
www.w3.org/blog/2018/01/towards-the-immersive-web/
WebVR
Community Group
Immersive Web
Community Group
WebVR 2 API WebXR Device API
github.com/immersive-web
WebXR
bit.ly/webxr-slides-by-brandon-jones
● Not backwards compatible with WebVR
● But most WebVR apps “should port easily”
● And no need to upgrade straight away
WebXR
● AR not in initial release but “coming soon”
● Focus on phone-based AR first
bit.ly/webxr-slides-by-brandon-jones
Can be enabled in flags in Chrome (origin trial soon, maybe released Q4)
Warning
Spec in
development.
Libraries in flux.
immersive-web.github.io/webxr/
// WebVR
navigator.getVRDisplays(displays => { ...
// WebXR
navigator.xr.requestDevice().then(device => {
github.com/mozilla/three.xr.js/
github.com/mozilla/aframe-xr
mozilla.github.io/aframe-xr/examples/xr/basic/
mozilla.github.io/aframe-xr/examples/ar/hit_test
github.com/google-ar/three.ar.js (currently uses WebVR API)
WebARonARCore
WebARonARKit
Who wants to see a
dancing AR panda?
Here’s one we recorded earlier
youtu.be/jG7d520Umkc
Why/how did we do this?
why not?
three.ar.js
Thank you @diekus
Google Blocks and Poly
poly.google.comvr.google.com/blocks/
OBJ FBX
mixamo.com
bit.ly/don-mccurdy-mixamo-blender
FBX GLTF
github.com/Kupoman/blendergltf
<a-entity id="panda"
gltf-model="url(panda.gltf)"
animation-mixer="clip:Macarena;"
position="0 0 -3"
rotation="0 180 0">
</a-entity>
samsunginter.net/pandarena/
<script src="three.js"></script>
<script src="Projector.js"></script>
<script src="VRControls.js"></script>
<script src="GLTFLoader.js"></script>
<script src="three.ar.js"></script>
THREE.ARUtils.getARDisplay().then(display => {
if (display) {
arDisplay = display;
init();
} else {
THREE.ARUtils.displayUnsupportedMessage();
}
});
const loader = new THREE.GLTFLoader();
loader.load('panda.gltf', gltf => {
panda = gltf.scene;
mixer = new THREE.AnimationMixer( panda );
const clips = gltf.animations;
clips.forEach(clip => {
mixer.clipAction( clip ).play();
});
scene.add(panda);
const loader = new THREE.GLTFLoader();
loader.load('panda.gltf', gltf => {
panda = gltf.scene;
mixer = new THREE.AnimationMixer( panda );
const clips = gltf.animations;
clips.forEach(clip => {
mixer.clipAction( clip ).play();
});
scene.add(panda);
const loader = new THREE.GLTFLoader();
loader.load('panda.gltf', gltf => {
panda = gltf.scene;
mixer = new THREE.AnimationMixer( panda );
const clips = gltf.animations;
clips.forEach(clip => {
mixer.clipAction( clip ).play();
});
scene.add(panda);
// on touch start
arDisplay.hitTest(normalisedX, normalisedY);
// if hit
THREE.ARUtils.placeObjectAtHit(panda, hit,
moveEasingValue, applyOrientation);
github.com/SamsungInternet/PandaMacARena
samsunginter.net/PandaMacARena/
WebARonARCore
WebARonARKit
(untested!)
github.com/chenzlabs/aframe-ar logo-test.glitch.me/ar.html
by Ada Rose Cannon
Loading future...
@keiichiban
We’re at the beginning of a new
era of computing
“helps us ask the right questions,
find the right answers and start to
chart the course to a future we all
want to live in”
Leap Motion
Exploring now...
@poshaughnessy
@samsunginternet
bit.ly/codemotion-webxr-2018
Thanks Codemotion! :)

WebXR: Introducing Mixed Reality and the Immersive Web - Peter O'Shaughnessy - Codemotion Rome 2018