Tom Blount
Slides at: http://tomblount.co.uk/messing-with-reality
Virtual vs. augmented /mixed reality
Immersion vs. presence
When and why to use XR?
Design tips
Practical tutorial
Conceptualised as far back as 1920s
Some people even argue the 1860s!
(Though the term originated in 1987)
Full virtual environment
HMD, controllers
Seated vs. "room scale"
Examples:
Â
Virtual elements superimposed over the real world
(Not to be confused with Alternate Reality Games)
Can use markers, GPS location, or more complex computer vision
Examples:
Microsoft HoloLense
HTC Vive Pro
Pokemon Go
Â
Immersion refers to the objective level of sensory fidelity a VR system provides
Display resolution/refresh
Audio
Freedom of movement
etc.
Â
Presence refers to a user’s subjective psychological response to a VR system
Â
Leverage presence:
Omni-directional content
Use scale effectively
Â
Think about:
...the environment
...scale
...guidance
...key interactions
...movement
Which leads us to...
Â
DON’T take control of the camera away from the user
No really, DON’T take control of the camera away from the user
Â
Instant/quick movement is less disorientating than gradual movement
Fades/transitions can work for large ‘jumps’ in time or space
Â
Â
Github meets JSFiddle meets Google Docs
Collaborative web editing
Live hosting
Create or remix projects
Â
Â
<!DOCTYPE html>
<html>
<head>
<title>Hello WebVR!</title>
<meta name="description" content="Hello WebVR!">
<script src="https://aframe.io/releases/0.8.2/aframe.min.js"></script>
</head>
<body>
<a-scene>
<a-text value="Hello world!" color="#111" position="0 2 -2" align="center"></a-text>
</a-scene>
</body>
</html>
<a-scene>
<a-sky src="path/to/your/image"></a-sky>
</a-scene>
<a-scene>
<a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9" shadow></a-box>
<a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E" shadow></a-sphere>
<a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D" shadow></a-cylinder>
<a-plane position="0 0 -4" rotation="-90 0 0" width="10" height="10" color="#7BC8A4" shadow></a-plane>
<a-sky color="#ECECEC"></a-sky>
</a-scene>
<a-animation attribute="position" to="0 2.2 -5" direction="alternate" dur="2000" repeat="indefinite"></a-animation>
<a-scene>
<a-camera>
<a-cursor></a-cursor>
</a-camera>
</a-scene>
<script>
AFRAME.registerComponent('handle-events', {
init: function () {
var el = this.el; //The entity with the handle-events component, e.g. <a-box handle-events></a-box>
el.addEventListener('mouseenter', function () {
el.setAttribute('scale', {x: 2, y: 2, z: 2});
});
el.addEventListener('mouseleave', function () {
el.setAttribute('scale', {x: 1, y: 1, z: 1});
});
}
});
</script>
In your groups, think about what you could you use VR in the lab!
Think about:
What environment would you create? Why?
What types of interaction would you use?
How would use use presence and immersion?
Â
Discuss in your groups, then we'll share our ideas!
<!DOCTYPE html>
<html>
<head>
<title>Hello, Web-AR!</title>
<script src="https://aframe.io/releases/0.8.0/aframe.min.js"></script>
<script src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.6.0/aframe/build/aframe-ar.js"></script>
</head>
<body style='margin : 0px; overflow: hidden;'>
<a-scene embedded arjs='sourceType: webcam;'>
<a-box position='0 0.5 0' material='opacity: 0.5;'></a-box>
<a-marker-camera preset='hiro'></a-marker-camera>
</a-scene>
</body>
</html>
<a-image src="path/to/your/image.png"></a-image>
<!-- Replace this line: -->
<!-- <a-marker-camera preset='hiro'></a-marker-camera> -->
<!-- With these lines: -->
<a-marker-camera type='pattern' patternUrl='path/to/marker.patt'></a-marker-camera>
<a-marker type='pattern' patternUrl='path/to/marker.patt'></a-marker>
In your groups, think about what you could you use AR for around the lab!
Think about:
What markers would you use?
Where would you place them?
What information would you convey?
How would people know how to interact with them?
Â
Discuss in your groups, then we'll share our ideas!
If you have any questions, please get in touch with me either during the break, or by email or Twitter!