\\ Learning\ Codekit\ Bitmirror



Bitmirror (Only available in german)

ein interaktives projekt von Tobias Grewenig

Animierte Ascii-Zeichen
Vom Bild ...
...zum Zeichen
"Bitmirror" ist eine Projektarbeit von 2003 von Tobias Grewenig, die im Interface-Labor (lab3) als "work in progress" weiterentwickelt wird. Die Pixel-Informationen aus Bilddateien oder von einer Web-Kamera werden in Ascii-Zeichen sowie Töne übersetzt und gemäß den Regeln eines Vielteilchensystems durch physikalische Kräfte animiert bzw. moduliert. Die Arbeit wurde vom Künstler selbst in Java und Pure Data programmiert.
"Im Bitmirror sieht sich der Betrachter in seiner digitalisierten Form aufgelöst in abstrakten Partikeln und akustischen Fragmenten. Die Darstellung ist im Ascii-Code, der zu den puristischen und ältesten Stilmitteln der Computergrafik zählt. Analog zur Grafik wird der akustische Input durch Granularsynthese in Partikel zerlegt. Bewegung, Geräusche und Stimme lösen in diesem grafischen und akustischen Partikelsystem ein simuliertes Schwarmverhalten aus.
In dieser Arbeit habe ich versucht, ein Echtzeitsystem zu entwickeln, das mit Hilfe dieser Darstellungsformen und Algorithmen den Kontrast herauskristallisiert zwischen dem reellen, analogen Abbild eines Menschen und der sterilen, abstrakten, digitalen Form des Computers." Tobias Grewenig

Konzeption

Die Zeichen ...
kommen...
in Bewegung
Tobias Grewenig ist postgraduierter Student an der Kunsthochschule für Medien und hat aus seiner vorhergehenden Ausbildung fundierte Kenntnisse in der Programmierung multimedialer Inhalte für seine Arbeit an der KHM in Köln mitgebracht. Während des Java-Programmierkurses - ein zweiwöchiger Kompaktkurs zu Beginn des Sommersemesters 2003 - konnte er sein Vorwissen nutzen, um rasch in die objektorientierte Programmiersprache Java einzusteigen. Die Inhalte des Kurses - insbesondere Grundlagen der Partikelanimation - deckten sich mit den späteren künstlerischen Experimenten des Künstlers, so dass er die grundlegenden Komponenten des "Bitmirrors" aus den CodeKit-Bausteinen übernehmen und ausbauen konnte. Wichtig war in diesem Zusammenhang, dass der Student früh die theoretischen Grundlagen verstehen konnte, etwa die Berechnung von Kräften in einem Vielteilchensystem oder die Integration der Newton-Bewegungsgleichungen.
Eine zweite Entwicklungsphase des Projektes konzentrierte sich auf elementare Tracking-Algorithmen und die Auswertung eines Webcam-Bildes. Die Bewegungen eines Betrachters werden interpretiert und steuern die Animation. Sie lenken die Zeichenströme und zeichnen sich verantwortlich für die Dynamik des Prozesses.
In einer dritten Entwicklungsstufe wurde die Dynamik des Vielteilchensystems in eine Audioapplikation integriert. Tobias Grewenig nutzte die freie Programmierumgebung "Pure Data" für die Umsetzung von Bewegung in Klang.
Die Projektarbeit "Bitmirror" kann als eigenständige Programmierarbeit angesehen werden, die eine Betreuung zwar nicht überflüssig machte, sich aber auf ein minimales Maß beschränkte, nämlich auf Anregungen zur Code-Gestaltung, Aufzeigung von Möglichkeiten und Fehlersuche. Die Partikelanimation des "Bitmirrors" basiert auf dem CodeKit-Modul "ParticleAnimation".
Der "Bitmirror" ist ein Beispiel für die selbstständige experimentelle Arbeit im Rahmen einer fortgeschrittenen Programmieranwendung. Das Projekt zeigt die erfolgreiche Verflechtung von Ausbildung, Betreuung und künstlerischem Schaffen.

Hardware, Funktion und Aufbau

Das "Bitmirror" Programm läuft auf jedem Betriebssystem, auf dem eine Java 2 Virtuelle Maschine (JVM) installiert ist. Aufgrund der erforderlichen hohen Rechenleistung, sind schnelle Computer notwendig (ab 2.0GHz). Der Aufbau besteht aus einem Rechner und einer Webcam, die einen Betrachter des "Bitmirror" aufzeichnet. Weitere Hard- oder Software wird nicht benötigt.
Die Bewegung des Betrachters steuert die Animation der Ascii-Zeichen sowie die parallel ablaufende Klangsynthese. Über Tastenkombinationen kann das Bild invertiert, vergrößert oder verkleinert sowie in den Ursprungszustand (ohne Gravitationskräfte) zurückgesetzt werden.

Code-Entwicklung

[link 03] Auszug aus dem Java-Programm
[link 04] Auszug aus dem Java-Programm
Die Code-Entwicklung des "Bitmirror" basiert - bezüglich der Partikelanimation - auf dem CodeKit-Modul "ParticleAnimation". Grundlage für eine realistisch anmutende Dynamik der Bewegung (z.B. Wellenbewegungen, Schwarmverhalten usw.) sind die folgenden wesentlichen Routinen aus dem Modul: 1. die Berechnung der Kräfte (getForces) zwischen den einzelnen Buchstaben, und 2. die Integration der Bewegungsgleichungen (iterateGauss)

Als Zeichensätze wurden die Java 2 Fonts und ein Standard Graphics2D als Zeichenfläche verwendet, jeder Partikel in dem System wird durch ein Zeichen repräsentiert.
Ein einfacher Tracking-Algorithmus wertet die Pixel-Informationen der Kamera in Echtzeit aus (Differenzbild-Verfahren, z.B. CodeKit-Modul "SimpleTracking"). Grundlegend dafür ist die Quicktime-Erweiterung "VideoByPixel". Das verwendete Packet "vbp.jar" und einige Tracking-Demoprogramme finden sich in der CodeKit-Rubrik "KameraTracking" und "VideoGrabbing". Sie ermöglichen schnelles "offscreen grabbing" in Echtzeit.
Source-Code (AsciiGravityApplet):
¬AsciiGravityApplet.java
¬Gravity2.java
¬SimpleTracking.java

[link 05] Java-Code für "Bitmirror" [ZIP | 5 KB]  

Links

[link 06] Altitude 2003 (Präsentationswoche der KHM, Köln)  
[link 07] Bitmirror: Animation [Flash | 2,4 MB]  Flashanimation
[link 08] Bitmirror: Java 2 Applet  Projektwebseite
[link 09] Tobias Grewenig  Homepage
Liste der Links in der Seite:

[link 01]images/BitmirrorCode1-gr.gif
[link 02]images/BitmirrorCode2-gr.gif
[link 03]images/BitmirrorCode1-gr.gif
[link 04]images/BitmirrorCode2-gr.gif
[link 05]http://netzspannung.org/cat/servlet/CatServlet/$files/128187/java_bitmirror.zip
[link 06]http://www.khm.de/
[link 07]http://netzspannung.org/cat/servlet/CatServlet/$files/128209/bitmirror.swf
[link 08]http://java.khm.de/content/projects/tobixAscii/tobix/AsciiGravityApplet.html
[link 09]http://www.khm.de/~xi-bot/