Interaktives eigenes BlobbyVolley

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Das Projekt entstand im Wintersemester 2018/19 im Rahmen des Interaktionspraktikums.

Blobby_volley_spielfeld.png






Spielidee und Verlauf

Es ermöglicht zu zweit interaktiv Volleyball zu spielen. Der Blobby lässt sich hierbei per Bewegung steuern. Die Bewegung des Spielers kann je nach Computer entweder mit der eingebauten Webcam oder mit einer externen aufgezeichnet werden. Ziel des Spieles ist es möglichst schnell zehn Punkte zu erlangen. Der aktuelle Spielstand wird in der Mitte oben dargestellt. Begonnen wird ein Spielzug durch Drücken der Taste S auf der Tastatur. Beim 1. Aufschlag hat automatisch Spieler 1 den Ball, der sich direkt über dem Blobby befindet. Da das Spiel komplett eigenständig programmiert wurde, ist zur Vereinfachung nur eine Bewegung des Blobbies in x-Richtung möglich. Außerdem ist je Spielzug nur eine Ballberührung möglich. Der Ball wird nach einer parabelförmigen Flugkurve zum Gegner transportiert. Trifft Beispielsweise Spieler 2 den Ball nicht, so hat Spieler 1 automatisch den erneuten Aufschlag.

Umsetzung

Die folgende Übersicht zeigt, welche Hardware – und Softwarekomponenten zum Spielen benötigt werden.

Hardware:

- 2 Computer (Haupt und Sekundärrechner)

- 1 Beamer

- Eventuell 2 Webcams


Software:

- openFrameworks

- Visual Studio


Der Hauptrechner ermöglicht die Auswertung von Spieler 1 und projiziert das Spielfeld, während der Sekundärrechner Spieler 2 auswertet und die relevanten Daten per OSC-Protokoll an den Hauptrechner übermittelt.

Software

Das Spiel wurde mit openFrameworks implementiert. Für die Bilbearbeitung (Hintergrundsubtraktion) und die Schwerpunkterkennung der Personen wurde ofxOpenCv inkludiert. Zudem wurde ofxOsc verwendet um die Positionsdaten des Spieler2 auf den Hauptrechner, auf dem das Spiel läuft und die Positionsdaten des Spieler1 berechnet und verarbeitet werden, zu übertragen. Die Positiosdaten des Spielers2 wurden auf dem Hauptrechner erst bearbeitet.

Im untenstehenden UML-Diagramm sind die Klassen und deren Beziehungen detailliert dargestellt.

Uml_BlobbyVolley.png

Schnittstelle OSC

Die Kommunikation der beiden Rechner läuft über ein lokales Netzwerk mit den OSC-Funktionen, die ofx bereitstellt. Dafür muss am Empfänger-Rechner ein ofxOscReceiver und am entsprechend am Sender ein ofxOscSender eingerichtet werden. Beide müssen selbstverständlich auf denselben Port eingestellt werden und im Sender muss logischerweise auch die IP-Adresse des Empfängers eingetragen sein. Zusätzlichen muss auf beiden Systemen eine ofxOscMessage initialisiert werden. In dieser Variable muss eine beliebige Adresse erstellt werden, die wieder auf beiden Rechner identisch sein muss. Für das formatierte Senden und Empfangen von Information gibt es für verschieden Datentypen vorgegebene Klassen-Funktionen. In unserem Fall wurde beispielsweise zum Senden addFloatArg und zum Empfangen und Auslesen getArgAsFloat und genutzt. Von ofx gab es bereits Beispielprogramme für osc, an denen wir uns orientiert haben.

Anhang

Hier sind die Projektdaten hinterlegt.