IcyTower

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche


Idee

Im Rahmen des Moduls "Interaktion" im Sommersemester 2017 hatten wir die Aufgabe, ein kleines Projekt durchzuführen. Wir überlegten uns das Projekt "IcyTower", in dem es darum geht, ein Spiel interaktiv über Körperbewegungen zu steuern. Das Spiel sollte dabei wie das Original "IcyTower" laufen, also aus einer Spielfigur bestehen, die sich über Spielfeldbrocken bewegen muss. Die Sprünge, also die Bewegung in y-Richtung geschieht dabei automatisch bei Berührung der Felder, die x-Richtung sollte über die Körperbewegungen gesteuert werden.
Die interaktive Steuerung sollte mit Hilfe einer Webcam erfolgen, die die Bewegungen des Menschen analysiert und dadurch die Spielfigur im Spiel steuert.


Aufbau des Systems

Der Aufbau des Systems lässt sich wie folgt darstellen:

IcyTower HW SW Ablauf.png


Über eine Webcam wird das Bild der Person aufgenommen. Mit Hilfe von QT und OpenFrameworks wird dieses Bild verarbeitet und die Position des Spielers ermittelt. Diese Position wird mit OSC an die Unity-Anwendung gesendet und dort auf die Spielfigur übertragen. Dadurch bildet man die Bewegungen der realen Person auf die der Spielfigur ab.

Bildverarbeitung

Das Bild wird mit Hilfe von Open Frameworks und QT unterschiedlichen Bearbeitungsschritten unterzogen, um die Position der Person zu ermitteln. Diese Position (Schwerpunkt, Koordinaten) wird später im Spiel zur Steuerung der Figur verwendet. Der Bearbeitungsprozess des Eingangsbildes kann wie folgt dargestellt werden:

IcyTower Bildbearbeitung.png

Beim Eingangsbild wird zunächst eine bestimmte Farbe (in diesem Fall rot) selektiert. Dies geschieht über eine Binearisierung, bei der alle Pixel, die im gewünschten Bereich liegen, auf 255 gesetzt werden und alle restlichen Pixel auf 0. Somit ergibt sich ein Schwarz-Weiß-Bild. Der selektierte Bereich wird als nächstes für die Schwerpunktermittlung verwendet. Dazu wird die x-Position aller relevanten Pixel gemittelt.
Das Ergebnis der Bildbearbeitung sind zwei float-Werte, die die Koordinaten darstellen. Im Spiel wird aktuell nur der x-Wert verwendet, da die Bewegung in y-Richtung automatisiert verläuft und nicht gesteuert werden kann.

Mögliche Weiterentwicklungen

  • Sprünge auch interaktiv Steuern
  • Spiel optimieren (Level einbauen, Schwierigkeit erhöhen etc.)
  • Farbraum von RGB auf HSV umstellen
  • morphologische Operationen ergänzen zum Entfernen von Störeinflüssen

Quelldateien

Der Quellcode zum Projekt ist zu finden unter: IcyTower Sources

Verweise