„Virtual and Augmented Reality are going mainstream“
Bereits vor einigen Jahren haben Burdea und Coiffet Virtual Reality (VR) wie folgt
definiert:
„Virtual reality is a high-end user-computer interface that involves real time
simulation and
interactions through multiple sensorial channels. These sensorial modalities are
visual, auditory, tactile, smell and taste.”
VR ist also eine rein computergenerierte Welt. Da bei VR die digitalen Informationen
nicht zwingend existent
sein müssen, kann mit VR eine imaginäre sowie eine exakte Simulation der Realität
generiert werden. AR
hingegen
beschreibt die Erweiterung der realen Welt mit zusätzlichen virtuellen
Informationen.
Die virtuelle und reale Welt verschmelzen zunehmend…
… und das ist nicht erst seit dem Science Fiction Film „Matrix“ aus dem Jahr 1999 der
Fall. Auch davor war
VR
bereits ein bekanntes Thema, wurde jedoch aufgrund der hohen Anschaffungskosten sowie
der nur bedingt
massentauglichen Technik der Geräte lediglich in Nischen eingesetzt. Die rasante,
technologische Entwicklung
der
Smartphones mit hochauflösenden Displays, 3D-Animationen und umfangreichen Hard- sowie
Softwarefunktionalität
machen VR und AR nun salonfähig. Spiele wie „Pokémon Go“ und Foto-Filter wie bei
„Snapchat“ begeistern die
Nutzer im Consumer Umfeld und vereinen die virtuelle und reale Welt zunehmend.
Statistische Erhebungen verdeutlichen den Wachstumstrend der Technologie in den nächsten
Jahren. Die
prognostizierte Anzahl der Nutzer sowie die Umsätze steigen kontinuierlich an.
Abbildung 2: Prognose zum Umsatz mit Virtual Reality weltweit in
den Jahren 2016 bis
2021 (in Milliarden
US-Dollar) [1]
Abbildung 3: Prognose zur Anzahl der Virtual-Reality-Nutzer
weltweit von 2016 bis 2020
(in Millionen) [2]
WebVR in der praktischen Anwendung
Um das Thema WebVR umzusetzen, sind verschiedene Aspekte zu betrachten, welche
nachfolgend dargestellt
werden.
WebVR
Virtual Reality fürs Web, kurz WebVR, ist ein wichtiger Zukunftsbaustein für VR, denn
WebVR hat es sich zum
Ziel
gesetzt, virtuelle Realität im Web zu ermöglichen. Dabei handelt es sich um eine API,
welche die Darstellung
von
VR Inhalten im Browser ermöglicht. Die marktführenden Browser unterstützen diese
Technologie. Mozilla
Firefox
und Google Chrome sind derzeit bei der technischen Unterstützung jedoch Vorreiter.
WebGL
Mit Hilfe der JavaScript API
WebGL
(Web Graphics Library) lassen sich interaktive 2D
und 3D Grafiken im Browser rendern. Für das Rendering und die Visualisierung wird
lediglich ein kompatibler
Browser benötigt. Zusätzliche Plugins sind nicht notwendig.
A-Frame
A-Frame von Mozilla ist ein open-source Framework, welches eine geräteübergreifende und
einfache VR
Realisierung
ermöglicht. Zum Einstieg in WebVR genügen grundlegende HTML Kenntnisse. Wer über ein
fortgeschrittenes
Wissen in HTML, DOM und JavaScript verfügt, wird sich über die Möglichkeiten durch
weitere Frameworks und
Bibliotheken
wie jQuery, React, Redux, Vue.js, d3, Meteor oder Angular freuen. Das A-Frame Framework
macht
Schnittstellen,
wie WebGL und WebVR leicht zugänglich und senkt somit die Einstiegshürden. WebGL wird
mit Hilfe von A-Frame
in
HTML Elemente gewrapped. Dies ermöglicht eine Umsetzung von VR-Szenen auf Basis von
WebGL ohne auf die
komplexe
API zurückgreifen zu müssen. Da WebGL in modernen Browsern auf Desktop und Mobile
bereits zum Standard
gehört,
funktioniert ein mit A-Frame erstellter Content plattformübergreifend.
Im nachfolgenden Beispiel wird anhand einer Szene mit 3D Objekten die A-Frame Anwendung
verdeutlicht.
Um A-Frame nutzen zu können, muss das Framework zuerst im <header>
eingebunden werden:
<html>
<head>
<title> WebVR mit let’s dev </title>
<script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
</head>
<body>
...
</body>
</html>
Die Basis für eine WebVR Szene stellt das <a-scene>
Tag dar.
Innerhalb des Tags wird die Szene
definiert. Damit ist es möglich WebVR komplett oder über einen gewünschten Bereich
einzubinden. Im Code
Beispiel
werden innerhalb des <a-scene>
Tags ein
Würfel (a-box), eine
Kugel (a-sphere), ein Zylinder
(a-cylinder), eine Fläche (a-plane) und ein Hintergrund (a-sky) eingebunden. Für die
dreidimensionale
Positionierung im Raum benötigen die Objekte eine X, Y und Z Koordinate.
<body>
<a-scene>
<a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9"></a-box>
<a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
<a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>
<a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>
<a-sky color="#ECECEC"></a-sky>
</a-scene>
</body>
Führt man diesen Code aus, erhält man folgende WebVR Szene:
Abbildung 4: Beispielszene von WebVR mit A-Frame
Im weiteren Beispiel werden durch die Einbindung von JavaScript die 3D-Objekte mit einem
Hover-Effekt
versehen:
<html>
<head>
[...]
<script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
</head>
<body>
<script>
AFRAME.registerComponent('change-color-on-hover', {
schema: {
color: {default: 'red'}
},
init: function () {
var data = this.data;
var el = this.el; // <a-box>
var defaultColor = el.getAttribute('material').color;
el.addEventListener('mouseenter', function () {
el.setAttribute('color', data.color);
});
el.addEventListener('mouseleave', function () {
el.setAttribute('color', defaultColor);
});
}
});
</script>
</body>
</html>
Anstelle einer Hintergrundfarbe, kann im <a-sky>
Tag auch ein Bild
eingefügt werden. Hierfür eignen
sich
idealer Weise 360° Aufnahmen. Assets werden innerhalb des <a-assets>
Tag eingebunden.
<a-scene>
<a-assets>
<img id="schlachthof" src="../assets/img/schlachthof.jpg">
</a-assets>
<a-sky src="#schlachthof"></a-sky>
<!-- Camera + Cursor. -->
<a-camera>
<a-cursor id="cursor">
<a-animation begin="click" easing="ease-in" attribute="scale"
fill="backwards" from="0.1 0.1 0.1" to="1 1 1" dur="150" ></a-animation>
<a-animation begin="cursor-fusing" easing="ease-in" attribute="scale"
from="1 1 1" to="0.1 0.1 0.1" dur="1500"></a-animation>
</a-cursor>
</a-camera>
<a-box position="-8 0.5 3" rotation="0 45 0" color="#4CC3D9"
change-color-on-hover="color: blue"></a-box>
<a-sphere position="3 5 -15" radius="1.25" color="#EF2D5E"
change-color-on-hover="color: white"></a-sphere>
</a-scene>
Die HTML-DOM Basis ermöglicht die Manipulation der Szene durch getAttributen,
setAttributen und weiteren
Funktionen, so wie es in anderen Web-Projekten üblich ist. Die umfangreiche
Dokumentation und Community
ermöglichen es, in kurzer Zeit und mit wenigen Zeilen Code ein erstes, eigens VR-Projekt
zu realisieren.
A-Frame Inspector
Ein visuelles Tool zum Debuggen von A-Frame.
Ein sehr hilfreiches Tool ist der mitgelieferte visuelle 3D Inspector. Er basiert auf den
bekannten Browser
DOM
Inspectors und kann mit Hilfe der Shortcuts (ctrl + alt + i) in jeder A-Frame
Szene
geöffnet werden. Der Inspectors ermöglicht es, Objekte zu ziehen, zu drehen und zu
skalieren. Weitere
Widgets
ermöglichen zudem eine Optimierung der Objekte. Änderungen werden, wie beim Web
Inspector, direkt angezeigt
und
vermeiden ein hin- und herspringen zwischen Browser und Code.
Abbildung 5: A-Frame Inspector
Durch die Erweiterung durch eigene Skripte, ausführlichen Dokumentationen und der
three.js Bibliothek können
auch umfangreiche Projekte realisiert werden.
Einen Raum zu nutzen, der vorher nicht da war, schafft neue Möglichkeiten
Neben der horizontalen X und vertikalen Y Bewegung, kann bei VR Anwendungen die Bewegung
im Raum um Z
genutzt
werden. Dies bietet neue Interaktionsaspekte für klassische Anwendungen wie z.B.
Onlineshops. Darüber hinaus
sind durch die Anreicherung einer realen Szene mit Informationen weitere Anwendungen
denkbar. Hierzu zählen
u.a.
ein virtueller Rundgang durch ein Museum, einem Gebäude oder eine City-Guide Tour.
Abbildung 6: Anwendungsbeispiel E-Shop [3]
Abbildung: Anwendungsbeispiel Interieurausstattung [4]
A-Frame makes it simple to get started
WebVR in Verbindung mit A-Frame bietet eine leichtgewichtige Alternative zu den
bisherigen Gaming-Engines
wie
Unity oder Unreal, zudem bietet es eine einfache Schnittstelle, eine HTML basierte
Syntax sowie eine
erweiterbare Struktur für three.js
Durch die Nutzung von DOM und die daraus resultierende optimierte Performance ist das
A-Frame eine
umfangreiche,
einfache und optimierte Lösung zur Implementierung von WebVR.