Gestengesteuertes Hearthstone

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Die folgende Dokumentation bezieht sich auf die Praktikums-Arbeit "Gestengesteuertes Hearthstone", die im SS19 im Fach Interaktion durchgeführt wurde.

Einleitung

Die Grundidee für dieses Projekt war, das Videospiel "Hearthstone" über Gesten bedienen zu können. Hierzu sollte das Spielfeld über einen Projektor auf einen Tisch projeziert werden. ÜBer eine geeignete Kamera (IR) sollten die Gesten sowie die Position der Hand auf dem Tisch aufgenommen werden.

Systemaufbau

Im Prinzip lässt sich sagen, dass das zu implementierende Programm das Kamerabild zu einer passenden Cursorposition sowie Klicks auswertet. Dieser sozusagen "Cursor-Emulator" muss im Hintergrund und das Spiel wird wie herkömmlich im Vollbildmodus gestartet. So kann der Beamer einfach den Monitor des Rechners übertragen.

Hearthstone System.PNG

Programmablauf

Bevor das Programm richtig lauffähig ist muss der Hintergrund nach der Initialisierung durch drücken der Backspace-Taste erlernt werden. Der prinzipielle Ablauf eines Zykluses ist wie folgt: Nachdem das Bild eingelesen wurde, wird es in ein Grauwert-Bild gewandelt und der gelernte Hintergrund wird subtrahiert. Dannach kann über einen einstellbaren Schwellwert dieses Bild binarisiert werden. Dadurch können die beweglichen Objekte erkannt werden. Im Anschluss wird über einen Contourfinder der Größte "Blob" im Bild erkannt. Dies soll dabei helfen Fehlerkennung von Schatten oder der zweiten Hand herrauszufilter und da man eh mit nur einer Hand seine Karten auf dem Spielfeld bewegt genügt die Erkennung des größten Objekts.

Dannach wird der vorliegende Vektor mit Objektpixeln nach dem mit den höchsten y-Wert durchsucht, mit einem vorgerechneten Faktor verrechnet und als Cursorposition eingestellt. Befindet sich diese Position über mehrere Zyklen in dem selben vordefinierten Bereich, so wird dies als Klick erkannt. Dannach wird ein Flag gesetzt, damit nur einmalig geklickt wird.

Der eben erwähnte Faktor wird benötigt, da die Kamera und der Display zwei unterschiedliche Auflösungen besitzen.

Hearthstone Programmablauf.PNG

Benötigte Programme

Das Programm wurde in Visual-Studio 2017 geschrieben. Da das Programm im Vordergrund laufen muss, um die Curserposition zu verändern und konfigurierbar zu sein, wurde das Programm "Windowtop" verwendet um das laufende Programm durchsichtig und durchklickbar zu machen.

Realisierung in der Praxis

Der Aufbau besteht aus einem Beamer, Infrarotkamera mit Polarisationsfilter und einem Infrarotstrahler. Der Beamer projiziert die Spieloberfläche auf den, als Spielbrett fungierenden, Tisch. Die Infrarotkamera nimmt die Hand auf mit der das Spiel gesteuert werden soll. Zusätzlich hilft der Polarisationsfilter, andere, sich bewegende, Einflüsse zu filtern. In der Praxis sieht dieser Aufbau wie folgt aus:


Hearthstone Aufbau.jpeg


Die eigentliche Benutzeroberfläche und das Spielbrett wird dann, dank dieses Aufbaus, auf dem Tisch dargestellt und kann mit der Hand, wie mit einem Mauscursor gesteuert werden.


Hearthstone test.jpeg


Die Umsetzung und die Steuerung des Programms auf dem Rechner sieht wie folgt aus:


Hearthstone Desktop.jpg


Mit den vier magentafarbenen Punkten wird der Bereich des Spielfelds kalibriert. Anzeigerelevante Werte wie der Threshold, die Centerposition etc. werden ebenfalls in dem von der Kamera aufgenommenen Feld angezeigt. Das Feld unten-links zeigt die Objekte an, die nach der Hintergrundsubtraktion, Einfluss auf die Spielsteuerung haben. Zusätzliche Kameraeinstellungen können über das "Eigenschaften-Feld" eingestellt werden.


Programmcode des Projekts

Programmcode