KungFu Sounds

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche


KFSkl.jpg

Einleitung

Im Interaktionskurs haben wir unser Projekt Kung-Fu Sounds gegründet.

Dies ist ein interaktives Projekt bei welchem wir ursprünglich x-beliebige Kung-Fu Moves (via Kamera) erkennen und passende Sounds dazu abspielen wollten. Als Zusatzidee hatten wir eine Art virtuelle Kung-Fu Schule in Planung, bei der man alle Kicks nachmachen sollte welche man als Projektion sieht.

Da wir zeitlich eingegrenzt waren und unsere ursprüngliche Projektidee zu komplex war, mussten wir Änderungen vornehmen. Wir konnten nur 2 Bewegungen erkennen (Schlag links, Schlag rechts) und dazu einen Sound abspielen.

Nachdem wir dies mit EyesWeb zum Laufen gebracht hatten, haben wir zusätzlich 2 Animationen in Blender gerendert. Diese Animationen zeigen eine Figur welche genau dann mit dem linken bzw. rechten Arm schlägt, wenn die Person vor der Kamera dies macht.

Umsetzung

Realisiert wurde das Projekt unter Verwendung der Programme Blender und EyesWeb.

Eyesweb

Frame:
vor Hintergrundsubstraktion
Frame:
nach Hintergrundsubstraktion
Oben: Gesamtbild
Unten: Linke und rechte RoI

Mit Eyesweb war unser Ziel, dass man mit Hilfe der Webcam eines Laptops erkennen kann, sobald eine Person eine Bewegung (einen Schlag) in verschiedene, sogenannte RoI (Region of Interest) ausführt.
Dafür haben wir das Tutorial zur Hintergrundsubtraktion zu Hilfe genommen und darauf unseren Eyesweb-Patch aufgebaut.
Die Finale Version unseres Eyesweb Patch sorgt nun dafür, dass das Kamerabild binarisiert wird, ein Bewegungsfreies Bild als Snapshot festgehalten wird und dieses dann jeweils immer von den aktuellen Bildern der Kamera subtrahiert wird.
Sollte nun Eyesweb eine erhöhte Anzahl an Weißen Pixeln im jeweils linken oder rechten Bildbereich (in welchen wir RoI angelegt haben) der Kamera erkennen, so werden die jeweiligen Animationen unserer in Blender animierten Figuren abgespielt.

Screenshot_merged.jpg


1. FrameGrabber: Holt sich das Bild der Webcam.
2. Image Conversion: Konvertiert das Bild in Schwarz-Weiß.
3. Snapshot: Wenn man auf den Start-Button drückt, wird das aktuelle Bild gespeichert.
4. Arithmetic: Substrahiert das von Snapshot gespeicherte Bild vom aktuellen Bild der Webcam.
5. ThresholdOperation: Macht aus dem Bild ein Binärbild. Mit dem Regler kann man einstellen welche Grauwerte als Schwarz und welche als Weiß dargestellt werden.
6. DisplayOpenGl: Stellt das aktuelle Bild dar.
7. 2mal SetROI: Setzen zwei Regions of Interest, eine links und eine rechts.
8. 2mal DisplayGDI: Stellen die Bilder in den Regions of Interest dar.
9. 2mal GetImageStatistics: Zählen die weißen Pixel in den Regions of Interest. Die Anzahl wird an der Anzeige angezeigt.
10. 2mal DoubleGenerator: Generieren Zahlen. Diese werden an den Anzeigen angezeigt.
11. 2mal Camparison: Vergleichen die Zahlen der GetImageStatistics und der DoubleGenerators. Es werden boolesche Werte erzeugt die angeben, ob die Werte der GetImageStatistics größer sind oder nicht.
12. 2mal BooleanToTrigger: Triggern in Abhängigkeit von den booleschen Werten der Comparisions.
13. 2mal Delay: Delays von einer Sekunde werden getriggert.
14. 2mal VideoFileReader: Spielen Videofiles ab. Werden von den Triggern gestartet und von den Delays gestoppt.
15. 2mal DisplayDirectX: Stellen die Videofiles dar.
16. 2mal AudioFileReader: Lesen Audiofiles ein. Werden von den Triggern gestartet und von den Delays gestoppt.
17. 2mal ConvertAudioToPCM: Konvertieren die Audiofiles zu PCM Audiofiles.
18. 2mal WaveOutput: Spielen die Audiofiles ab.

Download des Eyesweb-Patches:



Blender

Blender: Figurerstellung.

1. Schritt: Für die Erstellung der Figur haben wir Spheres und Cylinder genutzt und daraus ein Strichmännchen gebastelt.

Blender: Figureranimation.








2. Schritt: Für die Animation haben wir Frames für die einzelnen Bauteile gesetzt und somit eine Animation erstellt.






Download der Blenderdatei:



Dokumentationen

Während und außerhalb des Praktikums entstandene Videos wollen wir euch natürlich nicht vorenthalten.
Arbeit am Eyeswebpatch:
Kalibrierung der Webcam:
Präsentation: