InteractiveSquash

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Projektbeschreibung

Interactive Squash ist ein Projekt des Studiengangs Media Engineering des dritten Semesters im Fach Interaktion. Das Spiel ist eine virtuelle Darstellung des Sportes Squash. Die Rückschlag-Sportart wird mit zwei(Einzel) oder auch mit vier Spielern (Doppel) gespielt. Ziel der Sportart ist es, den Ball so zu schlagen, dass der Gegner ihn nicht mehr erreichen kann, bevor er zum zweiten Mal den Boden berührt. Das programmierte Spiel ist ähnlich aufgebaut. Abwechselnd schlagen die Spieler mit ihrem Panel (Schläger) den Ball gegen eine Wand. Ziel hierbei ist es, den abgeprallten Ball zurückzuschlagen, bevor er das simulierte Spielfeld verlässt. Diese Panels werden interaktiv über eine Kamera mit einem farbigen Gegenstand (z.B. Hände mit farbigen Handschuhen) gesteuert.

Aufbau

Die Paddle-Steuerung erfolgt über eine Kameraaufnahme. Programmiert wurde in Open Frameworks Visual Studio 0.10.0 vs 2017 unter Windows 10 und in XCode 9.2 unter MAC OS.

1.: Kamera (ist mit dem Sender PC 1 verbunden)

2.: Sender-PC 1 (empfängt Kameraimput und berechnet Paddleschwerpunkte)

3.: Empfänger-PC (erhält normierte Koordinaten der Paddleschwerpunkte und stellt Ergebnis grafisch dar)


InteractiveSquash systemplan.png

Skizze Systemplan

Code Beschreibung

Zuerst wurde das Projekt erstellt, dabei wurde bei beiden Codes das Addon ofxOsc für die Kommunikation zwischen den Projekten hinzugefügt.

Sender: Der Sender erhält das aufgenommene Kamerabild, das in ein Binärbild der kalibrierten Farbwerte umgerechnet wird. Zudem berechnet PC 1 die Schwerpunkte der jeweiligen Farbwerte und schickt die normierten Koordinaten der Schwerpunkte an den Empfänger. Dazu wird eine Host-Adresse und ein Port festgelegt, um die Komunikation zu gewährleisten.

Empfänger: Der Empfänger erhält die OSC-Nachrichten des Senders und stellt die Spielumgebung sowie die umgerechneten Koordinaten der Paddles grafisch dar. Außerdem ist er für den Spielablauf und die dafür nötigen Berechnungen wie Ballvektor, Bewegungsvektor, Abprallbedingungen oder Abbruchbedingungen zuständig.

Funktion Spiel

Zu Beginn des Spieles wird der Spielcode abgefragt, welcher an den Code der Kameraerkennung gekoppelt ist. Die Kameraerkennung registriert die zwei Spieler über einen Coder, der mit Farberkennung funktioniert.

In einem dreidimensionalen Quader steuern zwei Spieler einen roten und einen blauen Panel mithilfe der Farberkennungseinstellung einer Kamera. Ziel des Spieles ist, den anderen Spieler dazu zu bringen, den Ball ins Aus zu bewegen. Das Aus befindet sich hinter den Panels in Z-Richtung orientiert. Sobald der Ball von einem Spieler ins Aus gelassen wurde, bekommt der gegnerische Spieler einen Punkt auf seinem Counter, welche sich unten links und rechts am Bildschirm Rand befinden. Wie viele Punkte ein Spieler braucht, um zu gewinnen, darf man selbst entscheiden. Mit jeder zweiten Panelberührung wird der Ball ein wenig schneller. Der Ball kann sowohl an der hinteren Wand, als auch an den seitlichen, oberen und unteren Wänden abprallen. Das Spiel endet, sobald ein Spieler eine bestimmte Anzahl von Punkten erreicht hat.


InteractiveSquash ablauf.png

Skizze Ablauf

Bildverarbeitung

Jeder Spieler sollte seine Hand mit einer Farbe kennzeichnen, die sich deutlich vom Hintergrund abhebt. Die folgende Vorgehensweise bezieht sich auf das Teilprogram Camm, das die Bildverarbeitung ausführt.

Eine reguläre RGB Kamera erfasst zuerst alle Pixel des für die Steuerung relevanten Ausschnitts. Das entstandene Bild wird in den HSB Farbraum konvertiert, um die Erkennung eines bestimmten Farbtons mit entsprechenden Kontrast zu ermöglichen. Jeder Spieler bekommt im Auschnitt der Kamera einen bestimmten Bereich zugewiesen. Durch die Kalibrierung über den Punkt in der Mitte des Bereichs kann beim Drücken der Taste 'c' für Spieler 1 und der Taste 'k' für Spieler 2 die relevante HSB-Farbe festgelegt werden.

Mit einer Toleranz über dem H- und dem S-Wert der kalibrierten Farbe werden die für die Steuereung relevanten Pixel in einem neuen Binärbild dargestellt und aus diesem anschließend der Schwerpunkt des entsprechenden Spielers berechnet. Dieser Schwerpunkt vertritt den eigentlichen Punkt für die Steuerung und wird per OSC an das Programm des Spiels übertragen.

Camm.png

Links die Kameraaufnahme, rechts das umgerechnete Binärbild der kalibrierten Farbwerte

InteractiveSquash spiel2.png

Spieloberfläche mit beiden Panel und dem Spielball


Links

- Camcode
- Spielcode