WDR VR Bergwerk: Effekte programmieren

https://blog.wdr.de/digitalistan/wdr-vr-bergwerk-effekte-programmieren/

WDR VR Bergwerk: Effekte programmieren

Kommentare zum Artikel: 0

Kohle abbauen wie vor 100 Jahren – mit dem WDR VR Bergwerk kann jeder diese Zeitreise unternehmen. Die Experience für die VR Brillen Oculus Rift und HTC Vive ist auf der Plattform Steam als “Meet the Miner – WDR VR Bergwerk” kostenlos verfügbar. Das Erlebnis in der VR-Brille alleine ist schon sehr gut, noch ein bisschen eindrucksvoller ist das Ganze aber in Verbindung mit zusätzlichen Effekten. Wir arbeiten mit Erschütterung, Wind, Geruch und Hitze. Welche Geräte wir dafür einsetzen habe ich in Bauanleitung: 4D VR Bergwerk aufgeschrieben. In diesem Artikel geht es um die Programmierung der Effekte, die über das DMX-Protokoll angesprochen werden: Die Windmaschinen, der Heizstrahler und der Dunsterzeuger für den Bergwerksgeruch.

https://vimeo.com/283198794

Adressen für alle Geräte vergeben

Das DMX-Protokoll ist in der Veranstaltungstechnik weit verbreitet, es funktioniert so, dass alle Effektgeräte seriell miteinander verbunden werden. Die Geräte bekommen jeweils eine eigene Adresse und können so mit Steuerbefehlen gezielt ausgelöst werden. Wir haben die Adressen so verteilt:

1 – Die beiden Windmaschinen am Boden, die dem Spieler ins Gesicht pusten. (Beide Windmaschinen haben dieselbe Adresse, weil sie auch immer synchron ausgelöst werden)

2 – Heizstrahler

3 – Seitliche Windmaschine auf Kopfhöhe

4 – Dunsterzeuger, der den Bergwerksgeruch verströmt

Um die Geräte über den Computer, auf dem das VR Bergwerk installiert ist, ansteuern zu können, benutzen wir einen Ethernet-DMX-Adapter (wir verwenden Enttec Ode Mk2, andere gehen sicher auch). Der Adapter wird entweder direkt in den Netzwerkanschluss des Computers gesteckt oder über einen Router angeschlossen. Wichtig ist nur, dass die IP-Adresse des Adapters bekannt ist, denn die muss in einer Konfigurationsdatei hinterlegt werden.

Die Datei Game.ini befindet sich im Ordner /CoalVR/Saved/Config/WindowsNoEditor/, der bei der Installation der Experience von Steam angelegt wird. Die Ini-Datei muss mit einem Editor geöffnet und dort die IP-Adresse des Adapters eingetragen werden. Bei uns sieht das so aus:

Game.ini

[/Script/AesirDmxEvents.AsrDmxArtNetEventDispatcher]
DmxControllerIp=10.7.225.22

Fahrtwind los

Jetzt geht es an die Programmierung der Effekte. Dafür gibt es die Steuerungsdatei DmxEvents.json, die im Verzeichnis /CoalVR/Saved/ liegen muss. Grundsätzlich funktioniert die Ansteuerung so, dass es in der laufenden Experience zahlreiche sogenannte Hooks gibt, sobald die erreicht sind, werden die Effekte mit den hinterlegten Parametern ausgelöst.

Beispiel: In der Experience steigen die Nutzer in einen Förderkorb, der dann in die Tiefe fährt. Sobald der Korb losfährt, unterstützen wir den Eindruck mit zusätzlichem Wind. In der Datei sieht das so aus: Sobald der Hook “ElevatorStart” erreicht ist, werden die Geräte unter Adresse 1 (Windmaschinen am Boden) auf 70% Geschwindigkeit gesetzt. Das fühlt sich an wie echter Fahrtwind.

Der Paramter “Time-Offset: 2.0” bedeutet hier eine Verzögerung von 2 Sekunden, bevor die Maschinen eingeschaltet werden. Diese Werte hängen von den verwendeten Geräten ab. Hier haben wir so lange ausprobiert, bis das Timing passte.

Unten habe ich unsere Steuerdatei angehängt. Bei Fragen zum Gesamtprojekt gerne diesen Artikel kommentieren oder E-Mail an glueckauf@wdr.de

DmxEvents.json

[
{ “Section”: “————— Start —————” },
{
“Label”: “Reset zum Beginn”,
“Description” : “[ALLES] Channel 0 setzt alle Adressen auf <Value>”,
“Channel”: 0,
“HookName”: “Start”,
“TimeOffset”: 0.0,
“Value”: 0.0
},
{ “Section”: “————— Start —————” },
{
“Label”: “Reset im Office”,
“Description” : “[ALLES] Channel 0 setzt alle Adressen auf <Value>”,
“Channel”: 0,
“HookName”: “Office”,
“TimeOffset”: 0.0,
“Value”: 0.0
},
{ “Section”: “————— Aufzug —————” },
{
“Label”: “Start Seilfahrt”,
“Description” : “[Wind] Stellt die Windmaschine auf 70% !!!”,
“Channel”: 1,
“HookName”: “ElevatorStart”,
“TimeOffset”: 2.0,
“Value”: 70.0
},{
“Label”: “Förderkorb bleibt stecken”,
“Description” : “[Wind] aus”,
“Channel”: 1,
“HookName”: “ElevatorHitch”,
“TimeOffset”: 0.0,
“Value”: 0.0
},{
“Label”: “Förderkorb bleibt stecken – Geruch ein”,
“Description” : “[Geruch]”,
“Channel”: 4,
“HookName”: “ElevatorHitch”,
“TimeOffset”: 0.0,
“Value”: 80.0
},{
“Label”: “Förderkorb bleibt stecken – Geruch aus”,
“Description” : “[Geruch]”,
“Channel”: 4,
“HookName”: “ElevatorHitch”,
“TimeOffset”: 15.0,
“Value”: 0.0
},{
“Label”: “Förderkorb fährt weiter”,
“Description” : “[Wind]”,
“Channel”: 1,
“HookName”: “ElevatorResume”,
“TimeOffset”: 2.0,
“Value”: 70.0
},{
“Label”: “Ende Seilfahrt”,
“Description” : “[Wind]”,
“Channel”: 1,
“HookName”: “ElevatorStop”,
“TimeOffset”: 0.0,
“Value”: 0.0
},{
“Label”: “Ende Seilfahrt”,
“Description” : “[Geruch]”,
“Channel”: 4,
“HookName”: “ElevatorStop”,
“TimeOffset”: 0.0,
“Value”: 80.0
},

{ “Section”: “—————- Mine —————-” },
{
“Label”: “Ankuft Streb”,
“Description”: “[Seitenwind]”,
“Channel”: 3,
“HookName”: “EnterMine”,
“TimeOffset”: 0.0,
“Value”: 20.0
},{
“Label”: “Ankuft Streb – Hitze”,
“Description”: “[Hitze Streb]”,
“Channel”: 2,
“HookName”: “EnterMine”,
“TimeOffset”: 0.0,
“Value”: 100.0
},{
“Label”: “Ankuft Streb – Nebel”,
“Description”: “[Geruch aus]”,
“Channel”: 4,
“HookName”: “EnterMine”,
“TimeOffset”: 5.0,
“Value”: 0.0
},{
“Label”: “Ankuft Streb – Seitenwind stärker”,
“Description”: “[Wind stärker]”,
“Channel”: 3,
“HookName”: “MiningDone”,
“TimeOffset”: 0.0,
“Value”: 30.0
},{
“Label”: “Ankuft Streb – Seitenwind noch stärker”,
“Description”: “[Wind stärker]”,
“Channel”: 3,
“HookName”: “Explosion”,
“TimeOffset”: 0.0,
“Value”: 60.0
},{
“Label”: “Begraben”,
“Description”: “[ALLES] Channel 0 setzt alle Adressen auf <Value>”,
“Channel”: 0,
“HookName”: “Buried”,
“TimeOffset”: 0.0,
“Value”: 0.0
},
{ “Section”: “————– Cleanup ————–” },
{
“Label”: “Windmaschine Leerpusten”,
“Description” : “[Wind] Volle Power!”,
“Channel”: 0,
“HookName”: “Credits”,
“TimeOffset”: 0.0,
“Value”: 0.0
},

{ “Section”: “————– Cleanup ————–” },
{
“Label”: “Windmaschine Leerpusten”,
“Description” : “[Wind] Volle Power!”,
“Channel”: 1,
“HookName”: “End”,
“TimeOffset”: 0.0,
“Value”: 50.0
},{
“Label”: “Windmaschine Leerpusten”,
“Description” : “[Wind] Ausschalten”,
“Channel”: 1,
“HookName”: “End”,
“TimeOffset”: 15.0,
“Value”: 0.0
},
]

Über den Autor

Elektronikbasteln hat David schon immer fasziniert. Nach BWL-Studium und WDR-Volontariat arbeitet er als Journalist für Fernseh- und Online-Redaktionen. Mit Stefan Domke hat er das Storytelling-Tool Pageflow erfunden, für das er 2014 einen Grimme Online Award bekam.

Einen Kommentar schicken

Die mit * gekennzeichneten Felder müssen ausgefüllt werden.

Rechenaufgabe: 5 × 1 =


Top