Tangible User Interfaces für interaktive Medieninstallationen am
Transcription
Tangible User Interfaces für interaktive Medieninstallationen am
Tangible User Interfaces für interaktive Medieninstallationen am Beispiel Dry Garden MR Florian Bacher DIPLOMARBEIT eingereicht am Fachhochschul-Masterstudiengang Digitale Medien in Hagenberg im Juni 2006 c Copyright 2006 Florian Bacher Alle Rechte vorbehalten ii Erklärung Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen und Hilfsmittel nicht benutzt und die aus anderen Quellen entnommenen Stellen als solche gekennzeichnet habe. Hagenberg, am 5. Juli 2006 Florian Bacher iii Inhaltsverzeichnis Erklärung iii Vorwort vii Kurzfassung viii Abstract ix 1 Einleitung 1.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Gliederung der Arbeit . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 Medieninstallationen 2.1 Überblick über relevante Projekte . 2.1.1 SandScape . . . . . . . . . 2.1.2 Diorama Table . . . . . . . 2.1.3 Augmented Sound Reality . 2.1.4 Rakugaki . . . . . . . . . . 2.1.5 processingLIVE . . . . . . . 2.1.6 Khronos Projector . . . . . 2.1.7 webcam:tracking . . . . . . . . . . . . . . 2 2 3 4 5 6 7 7 9 . . . . . . . . . . 10 10 12 12 16 16 17 18 19 19 19 3 Grundlagen 3.1 Kultureller Hintergrund . . . . . 3.2 Tangible User Interfaces . . . . . 3.2.1 Definition und Taxonomie 3.3 Bildverarbeitung . . . . . . . . . 3.3.1 Binäre Regionen . . . . . 3.3.2 Momente . . . . . . . . . 3.3.3 Homografie . . . . . . . . 3.4 Rendering . . . . . . . . . . . . . 3.4.1 Pfadanimation . . . . . . 3.4.2 Catmull-Rom Splines . . iv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . INHALTSVERZEICHNIS v 4 Konzept 4.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . 4.2 Setup . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Content . . . . . . . . . . . . . . . . . . . . . . . 4.4 Interaktionskonzept . . . . . . . . . . . . . . . . 4.4.1 Interaktion durch die Hand des Benutzers 4.4.2 Interaktion mit den Steinen . . . . . . . . 4.4.3 Interaktion mit dem Bambusrechen . . . . 4.5 Hardware Setup . . . . . . . . . . . . . . . . . . . 4.5.1 Peyote iPoint . . . . . . . . . . . . . . . . 4.5.2 Granulat . . . . . . . . . . . . . . . . . . 4.5.3 Projektionssetup und Beleuchtung . . . . 4.5.4 Kamera . . . . . . . . . . . . . . . . . . . 4.6 Erweiterungen . . . . . . . . . . . . . . . . . . . 4.7 Alternatives Konzept . . . . . . . . . . . . . . . . 4.8 Konzepte des Renderings . . . . . . . . . . . . . 4.8.1 Wasserströmungen . . . . . . . . . . . . . 4.8.2 Animation der Fische . . . . . . . . . . . 4.8.3 Oberflächenwellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 22 23 24 24 26 27 27 27 29 30 32 33 33 35 36 41 42 5 Implementierung 5.1 Struktur . . . . . . . . . . . . . . . 5.2 Interaktionsserver . . . . . . . . . . 5.2.1 Struktur . . . . . . . . . . . 5.2.2 Ablauf . . . . . . . . . . . . 5.2.3 Interaktionserkennung . . . 5.2.4 Netzwerkkommunikation . . 5.3 Kommunikation der Komponenten 5.3.1 Netzwerkprotokoll . . . . . 5.4 Renderclient . . . . . . . . . . . . . 5.4.1 Einführung in Processing . 5.4.2 Softwarearchitektur . . . . 5.4.3 Ablauf . . . . . . . . . . . . 5.4.4 Datenaustausch . . . . . . . 5.4.5 Thread Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 43 44 44 45 45 52 52 53 55 55 63 69 70 71 . . . . . . 73 73 76 77 77 78 79 6 Ergebnisse 6.1 Detailbeschreibung . . . . 6.2 Analyse . . . . . . . . . . 6.3 Performanceüberlegungen 6.3.1 Renderclient . . . 6.3.2 Interaktionsserver 6.4 Benutzerreaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . INHALTSVERZEICHNIS vi 7 Resümee A Inhalt der CD-ROM A.1 Diplomarbeit . . . A.2 Applikation . . . . A.3 Sourcecode . . . . A.4 Quellen . . . . . . A.5 Bilder . . . . . . . A.6 Video . . . . . . . Literaturverzeichnis 82 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 84 84 85 85 85 86 87 Vorwort An dieser Stelle möchte ich mich bei all jenen bedanken, die mir bei der Erstellung dieser Diplomarbeit geholfen haben. Zuallererst bei meinem Betreuer Dr. Michael Haller, für die unkomplizierte Zusammenarbeit. Außerdem bei Keiko Takahashi deren Idee die Grundlage des Projektes bildet. Für die technische Unterstützung, danke ich Dr. Hirokazu Kato und Dipl. Ing. Jürgen Zauner. Nicht zu vergessen Oliver Irschitz und sein Unternehmen Peyote, welche den iPoint zu Verfügung gestellt haben. Weiters ein herzliches Dankeschön an Dietmar Offenhuber, der wertvollen Input zum Konzept des Projektes geliefert hat, sowie an Petra Affenzeller die mir bei der Organisation von Raum und Equipment immer helfend zur Seite gestanden ist und vor allem meiner Schwester Kathi, für ihren Einsatz beim Korrekturlesen. Schlussendlich stellt diese Arbeit den Abschluss einer fünfjährigen Ausbildung dar. Auch wenn nicht immer genug Zeit blieb um sich zu revanchieren, konnte ich doch immer auf die Unterstützung meiner Freunde zählen, von denen ich einige erst durch mein Studium kennen lernen durfte. Mein aufrichtigster Dank euch allen. Abschließend noch ein riesiges Dankeschön an meine Eltern, die mir dieses Studium erst ermöglicht haben. Die Erstellung dieser Arbeit hat mich die letzten Wochen und Monate viel Zeit und Kraft gekostet. Diese Kraft, habe ich meiner geliebten Freundin Magda Abdel-Salam zu verdanken. Egal wie ausweglos die Situation auch erschien, sie hat an mich geglaubt und war immer eine Quelle neuen Antriebs und neuer Motivation. Dafür danke ich dir aus tiefstem Herzen. vii Kurzfassung Die vorliegende Arbeit beschreibt die Umsetzung einer Medieninstallation mit einem Tangible User Interface, dem Dry Garden MR. Zielsetzung dieses Projektes ist es, die kulturellen Hintergründe japanischer Sandgärten im wahrsten Sinne des Wortes begreifbar zu machen. Anhand einer kurzen Beschreibung vergleichbarer Projekte wird zunächst das Umfeld, in dem sich der Dry Garden MR bewegt, definiert und eingegrenzt. Diese Installationen werden hinsichtlich ihrer technischen Umsetzung analysiert und aufgrund ihres Interfacedesigns klassifiziert. Anschließend erfolgt eine ausführliche Beschreibung der Eigenschaften und Funktionsweisen der Komponenten des Projektes Dry Garden MR. Die prototypische Installation realisiert das Tangible User Interface mit Hilfe eines optischen IR-Trackings, einer Rückprojektionsscheibe und einer Schicht transparenten Granulats. Dieses ist auf der Rückprojektionsscheibe verteilt und lädt zum Zeichnen beliebiger Muster ein. Mit Hilfe dieser Muster kontrolliert der Benutzer die visuelle Ausgabe, welche durch die Projektion eines NonPhotorealistic Renderings zu beiden Seiten der Granulatschicht erfolgt. Das Granulat ist somit Ein- und Ausgabemedium gleichermaßen. Das Verbergen jeglicher Technik beseitigt die Barriere zwischen Anwender und Installation und lässt die Interaktion völlig ungehindert stattfinden. viii Abstract This thesis describes the development of the project Dry Garden MR. The aim of this interactive installation, featuring a tangible user interface, is to make people familiar with the concept of Japanese dry gardens. Several related projects are presented in order to provide an overview of the field of interactive installations. These projects are analysed in regard to their technical setup. At the same time they are put into categories defining the metaphor and embodiment of their user interface. Afterwards, a detailed description of the operating mode and properties of the Dry Garden MR’s interface is given. This interface consists of an optical IR-tracking system, a rear projection screen and a layer of transparent plastic beads. These beads are spread over the rear projection screen and can be used to draw arbitrary patterns. Creating these patterns allows the user to control the visual output of the installation. These visuals are created by projecting non-photorealistic renderings onto both sides of the “bead-layer”. Due to the presence of this information overlay, the beads are transformed into being input and output device at the same time. Hiding all technical equipment from the user’s view allows the interaction to be as natural and barrier-free as possible. ix Kapitel 1 Einleitung Dieses Kapitel gibt einen Überblick über Zielsetzung und Gliederung der vorliegenden Diplomschrift. 1.1 Zielsetzung Nach Befassung mit dieser Diplomarbeit soll der Leser verstehen, welche Aspekte für die erfolgreiche Umsetzung einer Medieninstallation zu beachten sind. Durch die Beschreibung des im Rahmen dieser Arbeit realisierten Projektes Dry Garden MR, wird vermittelt, wie ein künstlerisches Konzept in eine konkrete Installation umgesetzt werden kann. Bei den angesprochenen Problemstellungen handelt es sich neben der Klassifizierung von Tangible User Interfaces um Algorithmen der Bildverarbeitung, sowie Problematiken der Registrierung virtueller Objekte im reellen Raum und weiteren Besonderheiten die das Rendering für Projektionen auf außergewöhnliche Projektionsoberflächen und -medien betreffen. 1.2 Gliederung der Arbeit Die folgenden Zeilen beschreiben Struktur und Gliederung des vorliegenden Dokuments. Das einleitende Kapitel 2 steckt das Umfeld des Projektes Dry Garden MR durch eine Auflistung relevanter Projekte ab. Bei der Auswahl der Projekte wurde besonderen Wert auf das Vorhandensein eines Tangible User Interfaces und den Einsatz der Programmierumgebung Processing gelegt. Das nächste Kapitel ist der Erarbeitung theoretischer Grundlagen der Bildverarbeitung und des Renderings gewidmet. Anschließend beschreibt Kapitel 4 das Konzept, des konkreten Projektes Dry Garden MR. Dessen Implementierung wird in Kapitel 5 beschrieben. Den Abschluss der Arbeit bildet eine Diskussion der erzielten Ergebnisse. Diese beinhaltet weiters eine Evaluierung der eingesetzten Hard- bzw. Software hinsichtlich ihres Einsatzes in zukünftigen Installationen. 1 Kapitel 2 Medieninstallationen Für den Begriff Medieninstallation lässt sich eine scharfe Abgrenzung schwer treffen. Am ehesten scheint eine Entwicklung des Begriffs über deren historische Entwicklung geeignet. 1981 präsentiert Sony das Videoformat Betacam. Dessen rasche Verbreitung ermöglicht es auch freischaffenden Künstlern sich mit dem Medium Video auseinanderzusetzen. Neben dem Videoinhalt an und für sich, wurde von Künstlern wie Marcel Odenbach und Maria Vedder erstmals auch das Umfeld in die Präsentation ihrer Werke eingebracht. Der weitere technische Fortschritt bot alsbald die Möglichkeit, Inhalte nicht nur in Echtzeit zu generieren sondern auch deren Betrachter interaktiv einzubinden. Aus Werken der Installationskunst wurden somit interaktive Installationen. Zusammenfassend könnte der Begriff Medieninstallation also folgendermaßen definiert werden. Medieninstallationen setzen zur Informationsvermittlung, zur Verstärkung von Sinneseindrücken oder zur Aufarbeitung eines bestimmten Themas auf den Einsatz audiovisueller Komponenten der Informationstechnologie. Das Vorhandensein einer interaktiven Komponente, die es dem Benutzer erlaubt, die dargestellten Inhalte aktiv zu beeinflussen, ist ein sehr häufiges aber nicht zwingend auftretendes Merkmal. Der folgende Abschnitt versucht einen Überblick über das angesprochene Themengebiet zu geben. Dazu wird eine Auswahl aktueller und thematisch relevanter Projekte gegeben. 2.1 Überblick über relevante Projekte Bei der Auswahl der analysierten Projekte wurde versucht, Verknüpfungen zum in den späteren Kapiteln beschriebenen Projekt Dry Garden MR herzustellen. Jene vorgestellten Projekte, die nicht als klassische Medieninstallationen gewertet werden können, sind aufgrund der eingesetzten Interfacetechnologie Teil der Auswahl. 2 KAPITEL 2. MEDIENINSTALLATIONEN 3 (a) Abbildung 2.1: SandScape. (a) Setup. (1) IR-Kamera, (2) Projektor, (3) Sand (4) IR-Scheinwerfer. (b) Foto der Installation. Aus [Ish04]. 2.1.1 SandScape Bei SandScape [Ish04] handelt es sich um ein Projekt, welches zur Analyse von Landschaftsmodellen in Echtzeit zum Einsatz kommt. Die zu analysierende Landschaft wird in diesem Projekt durch Sand repräsentiert. Dessen Form kann vom Benutzer mit bloßen Händen verändert werden. Diese Veränderungen, werden vom System registriert, die interne Repräsentation des Landschaftsmodells wird entsprechend angepasst. Setup: Die technische Funktionsweise sei anhand von Abbildung 2.1 erklärt. Unterhalb des Sandes (3) ist ein IR-Scheinwerfer (4), angebracht. Durch Analyse der Bilder einer oberhalb der Installation montierten IRKamera (1) ist es möglich auf die Höhe der Sandschicht an der entsprechenden Stelle zu schließen. Je höher der Sand, desto schwächer der entsprechende Intensitätswert im Kamerabild. Die Ergebnisse dieser Analyse werden von einem ebenfalls über der Installation angebrachten Projektor (2) direkt auf den Sand projiziert. In seiner Benutzerführung ist das Projekt seinem Vorgänger Illuminating Clay sehr ähnlich, einzig die eingesetzte Technologie unterscheidet sich. Im Projekt SandScape ersetzt das beschriebene kostengünstige IR-Tracking den bei Illuminating Clay [Pip02] zur Erstellung des Höhenmodells notwendigen Laserscanner. Anknüpfungspunkt: Das Projekt wurde auf Grund des vorgestellten IRTrackings und der Projektion auf Sand ausgewählt. KAPITEL 2. MEDIENINSTALLATIONEN (a) 4 (b) Abbildung 2.2: Diorama Table. (a) Setup. (1) USB-Kamera, (2) Projektor, (3) Tisch, (4) Lautsprecher. (b) Foto der Installation. Aus [Tak05]. 2.1.2 Diorama Table Bei dem Projekt Diorama Table [Tak05] handelt es sich um eine interaktive Medieninstallation der japanischen Künstlerin Keiko Takahashi1 . Grafisch einfach gestaltete Inhalte reagieren auf die Interaktion des Benutzers mit der Oberfläche des Tisches. Stellt der Benutzer beispielsweise eine Tasse auf den Tisch, entsteht rund um diese eine ganze Stadt. Durch die Positionierung von Seilstücken kann der Benutzer Züge auf den Tisch zaubern und diesen Schienen legen. Legt der Anwender ein Messer auf den Tisch, wird an dessen Stelle ein Auto platziert. Ziel der Installation ist es, die Benutzer zur Kommunikation und Interaktion untereinander zu motivieren. Setup: Vergleiche dazu auch Abbildung 2.2. Es handelt sich um eine Installation in klassischer Tabletop Anordnung. Der Projektor (2) sowie die Kamera (1), die der Interaktionserkennung dient, sind oberhalb (der Projektionsfläsche (3)) platziert. Bei der Projektionsfläche handelt es sich um einen normalen Tisch der keine speziellen Anforderungen zu erfüllen hat. Unterhalb des Tisches sind Lautsprecher (4) angebracht, die die kreierten Sounds ausgeben. Anknüpfungspunkt: Es handelt sich um ein Projekt, welches von jener Künstlerin, die auch Dry Garden MR initiiert hat, entwickelt wurde. Das Installationssetup ist ähnlich, lediglich die Interaktionserkennung erfolgt nicht im IR- sondern im sichtbaren Bereich des Lichts, durch den Einsatz einer einfachen USB-Kamera ohne zusätzliche Filter. 1 http://www.th.jec.ac.jp/∼keiko/ KAPITEL 2. MEDIENINSTALLATIONEN (a) 5 (b) Abbildung 2.3: Augmented Sound Reality. (a) Gesamtansicht. (b) Benutzersicht. Aus [Dob04]. 2.1.3 Augmented Sound Reality Kernaspekt dieses Projektes ist das Platzieren virtueller Schallquellen im dreidimensionalen Raum. Dazu dient dem Benutzer ein Augmented Reality Interface. Wie aus Abbildung 2.3 hervorgeht, besteht dies aus einem mit einem Marker ausgestatteten stiftförmigen Eingabemedium. Durch das Head Mounted Display kann der Benutzer die Schallquellen optisch erkennen. Akustisches Feedback über deren Position erhält er über ein Surroundsound-System. Setup: Zur Registrierung der virtuellen Objekte im realen Raum kommt das ARToolkit 2 zum Einsatz. Dessen Funktion beruht auf dem Einsatz einer Webcam und speziellen optischen Markern. Die Marker werden im Kamerabild erkannt und ermöglichen so eine Registrierung virtueller dreidimensionaler Objekte in der realen Welt. Die optische Ausgabe erfolgt über ein Head Mounted Display (HMD ). In diesem wird das Videobild der Webcam mit den virtuellen Objekten überlagert. Die akustische Ausgabe des Systems erfolgt mit der Creative EAX Library. Diese erlaubt die Erzeugung und Platzierung von bis zu 128 Schallquellen. Neben HMD, Webcam und einem PC mit Dolby Digital-Soundkarte, wird nur ein einziger Marker, der fix mit dem Raum verbunden ist, sowie das stiftförmige Eingabegerät, benötigt. Anknüpfungspunkt: Das Projekt wurde vorgestellt um in der Kategorisierung des nächsten Abschnittes ein Beispiel eines User Interfaces mit Soundausgabe zu Verfügung zu haben. 2 http://www.hitl.washington.edu/artoolkit/ KAPITEL 2. MEDIENINSTALLATIONEN (a) 6 (b) Abbildung 2.4: Rakugaki. (a) Instrumente. (b) Grafische Ausgabe. Aus [Tak01]. 2.1.4 Rakugaki Diese Installation von Keiko Takahashi erlaubt es seinem Benutzer mittels Trompeten, Trommeln, Pfeifen und Glockenspielen (siehe Abbildung 2.4(b)) mit dieser zu interagieren. Das System zeigt je nach Musikinstrument unterschiedliche Reaktionen. Wird die Trompete oder die Pfeife gespielt, erscheinen auf der Projektionsfläche (Abbildung 2.4(a)) animierte Linien. Greift der Benutzer zum Glockenspiel, werden die Grafiken entsprechend rotiert. Als Rahmen dient ein handgezeichneter Würfel. Rüttelt der Benutzer am Shaker, so rotiert er diesen Würfel. Lautstärke und Frequenz der erzeugten Klänge beeinflussen welche Objekte dargestellt werden, bzw. wie schnell sich diese drehen. Die Installation hat reinen Unterhaltungscharakter und soll die Menschen die Menschen daran erinnern, wie viel Spaß gemeinsames Musizieren bereitet. Setup: Zur Erkennung der Sounds kommt eine Eigenimplementierung zum Einsatz. Die grafische Ausgabe gelingt durch den Einsatz von C++ und OpenGL. Die generierten Grafiken werden mittels Frontprojektion einer möglichst breiten Öffentlichkeit zugänglich gemacht. Anknüpfungspunkt: Das Projekt wurde zur Analyse seiner Benutzerschnittstelle ausgewählt. Außerdem stammt dessen Konzept von der selben Künstlerin, die auch das ursprünglich Konzept des Dry Garden MR entwickelt hat. KAPITEL 2. MEDIENINSTALLATIONEN 7 Abbildung 2.5: processingLIVE. Aus [Hod05a]. 2.1.5 processingLIVE Wie aus dem Untertitel des Projektes – using processing and powermates ” as a VJ tool“ – hervorgeht, erlaubt es diese Installation, mittels Processing erzeugte Visuals, über ein eigens angefertigtes Hardware-Interface zu kontrollieren. Setup: Diese Installation setzt zur Erfassung von Live-Videomaterial auf den Einsatz einer Webcam. Gleichzeitig erfolgt 24 mal pro Sekunde eine Audioanalyse. Entsprechend der Analyseergebnisse wird das erfasste Bild verändert. Die Audioanalyse erfolgt über die externe Java-Bibliothek Sonia. Das Hardwareinterface dient dazu, die den Einsatz der Installation auch im Live-Betrieb zu ermöglichen. Dank der vier Griffin Powermate Drehregler, die mittels USB-Schnittstelle mit dem Rechner verbunden sind, kann der VJ die Installation schnell genug bedienen um die Anpassung der Visuals im Takt der Musik vornehmen zu können. Mit diesen Reglern werden neben der Rotation der Kamera auch deren Focus und je nach aktuellem Einsatzzweck weitere Parameter wie z. B. Farbstimmung, optische Frequenz etc. gesteuert. Die Ausgabe der Visuals gelingt wiederum mittels Frontprojektion. Anknüpfungspunkt: Das Projekt wurde ausgewählt, um die Leistungsfähigkeit und Erweiterbarkeit von Processing aufzuzeigen. Laut3 läuft diese Installation auf einem Apple Powerbook bei einer Auflösung von 1680x1050 mit 20 bis 40 fps. Ein beachtliches Resultat wenn man bedenkt, dass als Eingabeparameter die Analyse des Videomaterials, sowie die Audioanalyse in Echtzeit erfolgen und gleichzeitig die hoch auflösende Ausgabe der generierten Visuals erfolgt. 2.1.6 Khronos Projector Diese Installation zeichnet sich sowohl durch ihr innovatives Interface, als auch durch die außergewöhnlichen Inhalte aus. Mittels Großprojektion werden verschiedenste Fotografien dargestellt. Durch Berühren der Projektions3 http://www.processing.org KAPITEL 2. MEDIENINSTALLATIONEN (a) 8 (b) Abbildung 2.6: Khronos Projector. (a) Setup. (1) Projektor, (2) Kamera, (3) Leinwand. (b) Screenshot. Aus [Cas05]. leinwand, kann der Benutzer die Stelle des Bildes, die sich unter seiner Hand befindet, an eine zeitlich andere Stelle transferieren. Setup: Die folgende Beschreibung erfolgt anhand von Abbildung 2.6(a). Um zu ermitteln wie weit der Screen nach innen gedrückt wurde, kommt eine selbst entwickelte IR-Technologie zum Einsatz. Hinter der Projektionsleinwand (3) ist eine konventionelle CCD-Kamera (2) montiert. Rund um die Optik sind IR-LEDs angebracht. Deren optische Achse ist dadurch parallel zur Achse der Kamera. Die Leinwand ist auf ihrer Rückseite speziell beschichtet, um das IR-Licht besser zu reflektieren und durch den Projektor (1) ausgelöste Hotspots zu vermeiden. Aus den durch die Kamera ermittelten Grauwerten lässt sich die Abweichung der Normalen des entsprechenden Punktes der Projektionsleinwand von der optischen Achse bestimmen. Aus dieser Abweichung wird eine Tiefeninformation für jeden Pixel und den korrespondierenden Punkt auf der Leinwand errechnet. Anhand dieser Information, kann die Stelle im Bild zeitlich in die Zukunft oder die Vergangenheit verschoben werden. Anknüpfungspunkt: Das Projekt wurde auf Grund seines interessanten Benutzerinterfaces ausgewählt. Weiters fand die Entwicklung des ersten Prototypen unter Processing statt4 . Die finale Implementierung wurde aus Performancegründen aber in OpenGL und C++ umgesetzt. 4 http://www.k2.t.u-tokyo.ac.jp/members/alvaro/Khronos/Khronos P5/ Khronos Applets.htm KAPITEL 2. MEDIENINSTALLATIONEN (a) 9 (b) Abbildung 2.7: webcam:tracking. (a) Setup. (1) Projektor, (2) Webcam, (3) Rückprojektionsleinwand, (4) Taschenlampe. (b) Screenshot. Aus [Hod05b]. 2.1.7 webcam:tracking Der Anwender kann über die Positionierung eines Lichtstrahl die Ausgabe unterschiedlicher Grafiken steuern. Setup: Vergleiche für folgenden Absatz auch Abbildung 2.7(a). Hinter der Rückprojektionsleinwand (3) ist eine Webcam (2) angebracht. Deren Bilder werden von einer in Processing entwickelten Software analysiert. Die Stelle, der durch die Taschenlampen (4) ausgelösten Hotspots in diesem Bild determiniert die Platzierung verschiedener grafischer Elemente. Das Tracking passiert rein optisch, es kommt weder eine zusätzliche IR-Beleuchtung noch ein IR-Filter zum Einsatz. Die Ausgabe der Grafiken erfolgt mittels Projektor (1). Anknüpfungspunkt: Diese Installation wurde ausgewählt um die Fähigkeit von Processing, zur Bildverarbeitung und der gleichzeitigen Ausgabe von Computergrafik in Echtzeit zu demonstrieren. Kapitel 3 Grundlagen Das folgende Kapitel dient der Vermittlung von Grundlagen, auf die die weiteren Kapitel aufbauen. Dabei wird eine breite Palette von Aspekten angesprochen: kulturelle Hintergründe des Projektes, Definition und Taxonomie von Tangible User Interfaces, sowie Grundlagen der Bildverarbeitung und der Computergrafik. Die inhaltliche Breite dieser Themen lässt erkennen wie viele unterschiedliche Aspekte bei der Umsetzung des Projektes Dry Garden MR in Erwägung gezogen wurden. 3.1 Kultureller Hintergrund Der Garten als ein Ort der Inspiration, Entspannung und Ruhe hat in der japanischen Kultur lange Tradition. Er besteht aus einer bestimmten Anzahl fix vorgegebener Elemente, die nach gewissen Regeln [Lyo02] angeordnet sind. Bei diesen Elementen handelt es sich um Teiche (vgl. 3.2(c)), Bäume, Blumen und kleine Bäche. Als verbindendes bzw. trennendes Element in der Gestaltung werden Wege gezielt eingeplant. Jedes dieser Elemente hat dabei seine symbolische Bedeutung. So genießen es die Bewohner der japanischen Inseln, in ihrer Fantasie in den Steinen Gebirge, in den Seen Ozeane und in den Bächen sprudelnde Flüsse zu sehen. Mit Beginn der Muromachi Periode im 15. Jahrhundert, wurde die Abstraktion von Ozeanen und Gebirgen weiter vorangetrieben. Die natürlichen Elemente des Gartens verschwanden, die kleinen Wasserläufe und Inseln wurden durch Kies und Steine ersetzt (vgl. 3.1). Unter dem Namen Zen Garten (engl. dry garden, jap. karesansui) erfreuen sich Sandgärten dieser Art bis heute großer Beliebtheit. Für Angehörige anderer Kulturkreise kaum nachvollziehbar, bereitet es Menschen der japanischen Kultur größte Freude, Muster in den Kies zu rechen (vgl. 3.2(b)) und diese in Gedanken zum Leben zu erwecken, und so ein eigenes Universum entstehen zu lassen. Das Rechen der Muster wird als meditatives Erlebnis erfahren, die Muster symbolisieren den Fluss des Lebens. 10 KAPITEL 3. GRUNDLAGEN 11 Abbildung 3.1: Zen Garten in Ryoan Ji (Kyoto, Japan). Aus [Lyo02]. (a) (b) (c) Abbildung 3.2: Verschiedene Zen Gärten. (a) Tischversion mit Handrechen. (b) Buddhistischer Mönch bei der Pflege des Gartens des Zuiryusan Tempels. (c) Die Teiche japanischer Gärten sind meist Habitat einer speziell gezüchteten Karpfengattung (Cyprinus carpio). Aus [Lyo02]. Um dieses Erlebnis auch an Orten zu ermöglichen, die nicht genug Platz für einen Garten bieten, gibt es auch kleinere Versionen, die z.B. auf einem Tisch platziert werden können (siehe 3.2(a)). Die kreis- und wellenförmigen Muster werden in diesem Fall mit kleinen Bambusrechen in den Sand bzw. Kies gezogen. Hierin liegt der Ansatzpunkt des Projektes Dry Garden MR. Auch Menschen die sich noch nie mit der japanischen Kultur beschäftigt haben, soll es möglich sein, die Faszination für einen Zen Garten nachzuvollziehen. Dies wird beim Dry Garden MR durch den Einsatz unterschiedlicher Technologien der Projektion und der Interaktionserkennung erreicht. KAPITEL 3. GRUNDLAGEN 3.2 12 Tangible User Interfaces Bei Dry Garden MR handelt es sich um eine Medieninstallation mit Tangible User Interface (im weiteren Verlauf des Textes als TUI bezeichnet). Der folgende Abschnitt dient deren Definition und beschreibt die von Fishkin in [Fis04] vorgeschlagene Taxonomie. Um diese anhand konkreter Beispiele nachvollziehbar zu machen, finden sich jeweils Verweise auf die in Abschnitt 2.1 beschriebenen Projekte. 3.2.1 Definition und Taxonomie Wie auch in [Fri] beschrieben, unternahmen Ishii und Ulmer in [Ull97] erstmalig den Versuch, den Begriff des Tangible User Interface, zu definieren. Dabei entstehen TUIs, den Autoren zu Folge, durch die Kombination physikalischer Alltagsgegenstände und -objekte mit digitalen Informationen. Um den Begriff weiter einzuschränken definieren sie in [Ull01] TUIs als Auflösung des Unterschiedes zwischen Ein- und Ausgabemedium. Fishkin geht in seiner Beschreibung des Begriffs [Fis04] zurück zur ursprünglichen Definition und beschreibt TUIs ganz allgemein als Reaktion eines Computersystems auf einen Eingabe Event. Fishkins Definition im Detail: 1. Durch die physische Manipulation eines Alltagsgegenstandes wird der Eingabe Event ausgelöst. 2. Der Eingabe Event wird durch das Computersystem erfasst. Als Reaktion verändert dieses seinen Status. 3. Die Statusänderung wird dem Benutzer mittels einer Veränderung am Eingabemedium angezeigt. Zur Verifizierung seiner These analysiert Fishkin 60 Benutzerschnittstellen hinsichtlich ihrer Klassifizierbarkeit als TUIs. Das Resultat der Untersuchung: Es gibt kein eindeutig differenzierendes Kriterium zur Einteilung einer Benutzerschnittstelle als TUI. Demzufolge wird in [Fri] bzw. [Fis04] die Klassifizierung von Benutzerschnittstellen hinsichtlich ihrer tangibility anhand einer zweidimensionalen Taxonomie vorgeschlagen. Die beiden Dimensionen dieser Taxonomie werden als Embodiment und Metaphor bezeichnet (Um so korrekt wie möglich zu bleiben, werden die englischen Bezeichnungen sowohl für die Achsen selbst, wie auch für deren Parametrisierung übernommen. Diese finden sich auch in Abbildung 3.2.1 wieder). Dabei gilt eine Benutzerschnittstelle als umso greifbarer, je weiter sie vom Ursprung des, durch die beiden Parameter Embodiment und Metaphor aufgespannten Koordinatensystems entfernt liegt. Abbildung 3.2.1 zeigt dieses Diagramm. Darin eingetragen finden sich alle in Abschnitt 2.1 beispielhaft erwähnten Projekte. KAPITEL 3. GRUNDLAGEN 13 Abbildung 3.3: Taxonomie für Tangible Userinterfaces nach Fishkin [Fis04]. Embodiment Dieser Parameter beschreibt die subjektive Distanz zwischen dem durch den Benutzer manipulierten Objekt und dem System an und für sich. Der Wert ist umso höher, je stärker das Gefühl vermittelt wird, das System wäre Teil des manipulierten Objektes. Fishkin unterscheidet anhand der vier Stufen Full, Nearby, Environmental und Distant. Full: Das Eingabemedium dient gleichzeitig als Ausgabemedium. Als praktisches An dieser Stelle sei auf das Projekt SandScape (Abschnitt 2.1.1) verwiesen. Hierbei dient der zum Einsatz gekommene Sand gleichzeitig als Eingabemedium (die Höhe der aufgeschichteten Sandschichten beeinflusst die Topologie des Computermodells) wie auch Ausgabemedium (die Ausgabe der Analysefunktionen der Landschaft wird direkt auf den Sand projiziert). KAPITEL 3. GRUNDLAGEN 14 Nearby: Das Systems gibt seine Reaktion in unmittelbarer örtlicher Nähe zum Eingabemedium aus. Beim Projekt Diorama Table (Abschnitt 2.1.2) gilt dies für die Projektionen auf die Oberfläche des Tisches (= Ausgabe). Diese findet direkt neben den Objekten statt, die durch die Erfassung ihrer Positionen durch die Interaktionserkennungskomponente selbst zum Eingabemedium werden. Environmental: Das Ausgabemedium umgibt“ den Benutzer. In den ” meisten Fällen handelt es sich also um ein Audiointerface. Da diese Schnittstelle nicht physisch greifbar ist, wird sie von Ullmer und Ishii auch als non” graspable“ kategorisiert. Dies trifft auf das in Abschnitt 2.1.3 vorgestellte Projekt Augmented Sound Reality zu: Der Klang der virtuellen Schallquellen kommt auch akustisch aus der durch den Benutzer definierten Position. Nachdem die optische Ausgabe von einem VR-System mit Head Mounted Display übernommen wird, kann auch diese als den Benutzer umgebend“ ” klassifiziert werden. Distant: Die Reaktion auf ein Eingabeevent erfolgt in diesem Fall in örtlicher Distanz zu diesem. Hierbei sei auf das Projekt processingLIVE (Abschnitt 2.1.5) verwiesen. Die Bedienung des Hardwareinterfaces durch den VJ bewirkt die Änderung der örtlich von diesem weit entfernt projizierten Visuals. Metaphor Wird eine Benutzerschnittstelle physisch greifbar, stehen dem Interfacedesigner eine Vielzahl an Möglichkeiten offen, das Interface bzw. dessen Elemente, mit einer Metapher zu verknüpfen. In Bezug auf TUIs bedeutet das Folgendes. Aussehen und/oder Reaktion eines User Interface-Elements ähneln dem/der, eines Gegenstandes in der realen Welt. Auch diese Taxonomie quantisiert Fishkin in vier Stufen. Der nächste Abschnitt widmet sich deren Beschreibung im Detail. None: Eine Schnittstelle die gar keine Metapher definiert. Als Beispiel sei die klassische Kommandozeile erwähnt. Noun oder Verb: Die Schnittstelle selbst ist einem Objekt in der realen Welt ähnlich. In [Fis04] bringt Fishkin diesen Sachverhalt auf den Punkt: An <X> in our system is like an <X> in the real world. Die mit der Schnittstelle möglichen Aktionen haben allerdings keine oder nur eine minimale Entsprechung in der realen Welt. Als Beispiel sei auf das Projekt Rakugaki (Abschnitt 2.1.4) verwiesen. Die Musikinstrumente die das KAPITEL 3. GRUNDLAGEN 15 Eingabemedium der Installation darstellen, stellen auch in der Installation selbst Musikinstrumente dar. Das Spiel eines Benutzers mit diesen, löst neben einem Klang auch ein optisches Feedback auf der Projektionsleinwand aus. Zu diesem Verb“ des Interfaces gibt es in der Realität keine Entspre” chung. Dieser Fall wird von Fishkin als Metapher des Nomens“ bezeichnet. ” Im gegensätzlichen Fall hat die mit der Benutzerschnittstelle mögliche Interaktion eine Entsprechung in der realen Welt. Die Form der Schnittstelle ist jedoch irrelevant. In [Fis04] drückt Fishkin dies folgendermaßen aus: <X>-ing in our system is like <X>-ing in the real world. Er definiert dies als Metapher des Verbs“. Beim Projekt Augmented Sound ” Reality (Abschnitt 2.1.3 kann eine Soundquelle im virtuellen Raum beliebig verschoben werden. Das virtuelle Objekt lässt sich also wie ein reales Objekt verschieben. Die Form des zum Einsatz gekommenen Eingabemediums ist dabei nicht von Relevanz. Noun und Verb: Sowohl die Form als auch die möglichen Interaktionen mit der Schnittstelle entsprechem einem Objekt der realen Welt. Im Original [Fis04]: <X>-ing an <A> in our system is like <X>-ing something <A>-ish in the real world. Im Kontext klassischer Human Computer Interfaces (HCI ) wird dies durch die Metapher des Drag and Drop“ zum Ausdruck gebracht. Durch Ziehen ” eines Dokuments an eine andere Stelle, wird dieses auch an anderer Stelle im Dateisystem abgelegt. Dabei kommuniziert das eingesetzte Icon auch grafisch, dass es sich bei der mit diesem Symbol verknüpften Datei um ein Dokument handelt. Full: In diesem Fall ist für den Benutzer des Systems keine Unterscheidung zwischen physikalischer und virtueller Schnittstelle erkennbar. An dieser Stelle sei ein weiteres Mal auf SandScape (Abschnitt 2.1.1) verwiesen. Mittels physikalischer Verformung des Sandes ändert der Benutzer auch die Form von dessen digitaler Repräsentation. Nachdem nun neben einer Definition auch eine Taxonomie für TUI s besteht, stellt sich die Frage, welcher Vorteil sich durch den Einsatz von TUIs gegenüber jenem traditioneller User Interfaces ergeben. Der Vorteil von TUIs liegt ganz klar darin begründet, dass sie den Tastsinn des Benutzers ansprechen, denn der Mensch nimmt haptische Einwirkungen auch dann wahr, wenn er diesen keine bewusste Aufmerksamkeit schenkt. Ein tangibles“ Bedienelement kann auch bedient werden, ohne den Benutzer ” von seiner Haupttätigkeit abzulenken. Als Beispiel sei an dieser Stelle der Hebel zur Bedienung der Blinkanlage in Autos angeführt. Auch ohne dass KAPITEL 3. GRUNDLAGEN 16 der Fahrer seinen Blick von der Strasse nehmen muss, kann er den Blinker betätigen. Außerdem informiert ihn neben dem optischen und akustischen Feedback zusätzlich die Position des Hebels über dessen Status. Daraus lässt sich der folgende Schluss ziehen: Ein TUI ist im Allgemeinen für den Benutzer deshalb besser bedienbar, weil es mehrere Sinne des Benutzers gleichzeitig anspricht, in Summe aber weniger Aufmerksamkeit von dessen Benutzer fordert. Ein weiteres Element welches die Bedienung einer Benutzerschnittstelle vor Allem für Anwender, die die Schnittstelle zum ersten Mal verwenden, vereinfacht, ist der Einsatz von Metaphern beim Interfacedesign. Dabei muss die eingesetzte Metapher für den Benutzer klar verständlich und vor Allem konsistent sein. Als Negativbeispiel wird von [Fri] und anderen das Papierkorb Icon unter MacOs beansprucht. Mittels Ziehen einer Datei auf dieses Icon wird diese gelöscht. Gleichzeitig kann ein Wechseldatenträger nur aus dem Laufwerk ausgeworfen werden, indem dieser ebenfalls über das Papierkorb Icon gezogen wird. Der Benutzer erwartet von der Metapher Konsistenz und hat infolgedessen Angst, die Daten des Wechseldatenträgers würden durch Ziehen auf das Papierkorbsymbol ebenfalls gelöscht. Durch diese inkonsistente Mehrfachbelegung einer Metapher wird der Benutzer in der Bedienung nicht unterstützt sondern vielmehr behindert. 3.3 Bildverarbeitung Die Interaktionserkennung des Dry Garden MR funktioniert, mittels Analyse der Bilder, die von der in Abschnitt 4.5.4 beschriebenen IR-Kamera stammen. Eine solche rechnergestützte Analyse von digitalen Bilddaten wird allgemein als Bildverarbeitung bezeichnet. Dabei handelt es sich um einen eigenen Zweig der Informatik dem zahlreiche Bücher und Forschungsarbeiten gewidmet sind. Die vorliegende Diplomarbeit erhebt nicht den Anspruch, dieses Gebiet vollständig abzudecken, das folgende Kapitel dient somit alleine der Erarbeitung der Grundlagen und Definitionen der bei der Beschreibung des umgesetzten Konzeptes verwendeten Fachbegriffe. Diese Einführung ist so kompakt wie möglich gehalten. 3.3.1 Binäre Regionen Die primäre Motivation hinter der implementierten Bildverarbeitung ist es, Objekte (Steine, Löcher in der Granulatschicht, Interaktionsmuster des Benutzers) zu erkennen. Dabei handelt es sich um eine Standardaufgabe der Bildverarbeitung. Die eingesetzte Technik wird als Region Labeling bezeichnet. Die folgenden Sätze fassen kurz zusammen, wie diese Technik bei Graustufenbildern funktioniert. In einem ersten Schritt wird durch einen konstanten Threshold zwischen Hintergrund- und Vordergrundpixeln unterschieden. In einem zweiten KAPITEL 3. GRUNDLAGEN 17 Schritt werden die benachbarte Pixel des Vordergrundes zu Regionen zusammengefasst. Dabei wird allen Pixeln einer Region ein einheitliches Label zugeordnet. Somit ist über dieses Label ein Zugriff auf alle Pixel dieser Region möglich. Zur Implementierung des Region Labelings stehen zwei Verfahren, Floodfilling und sequentielle Regionenmarkierung, zur Auswahl. Beide werden nicht näher erläutert, da bei der konkreten Implementierung auf eine spezielle Regionlabelingvariante des ARToolkits 1 zurückgegriffen wird. 3.3.2 Momente Vgl. für den folgenden Abschnitt (3.3.2) sowie die Formeln (3.1, 3.2, 3.3 und 3.4) [Bur05, Kap. 11]. Zur Interpretation der Interaktionsmuster des Benutzers werden für die detektierten Regionen bestimmte Merkmale (Features) berechnet. Im konkreten Fall handelt es sich dabei um die Exzentrizität und um die Ausrichtung der Hauptachse. Beide Merkmale werden über die Ermittlung zentraler Momente berechnet. In beiden Fällen spricht man von statistischen Formmerkmalen, da bei deren Berechnung die Region als statistische Verteilung von Koordinatenpunkten im zweidimensionalen Raum [Bur05] betrachtet wird. Die Berechnung dieser Merkmale gelingt durch den Einsatz des allgemeinen statistischen Konzeptes der Momente. Mittels mpq = up v q (3.1) (u,v)∈R wird das Moment der Ordnung p, q für die Vordergrundpixel einer binären Region berechnet. Bestimmte Momente können herangezogen werden um auf die geometrische Eigenschaften der Region zu schließen. So beschreibt beispielsweise der Moment m00 , deren Fläche (= Summe der Pixel). In die Berechnung der Momente fließen die Koordinaten der Pixel der jeweiligen Region ein. Dadurch sind diese abhängig von der Lage der Region im Bildkoordinatensystem. Durch den Einsatz zentraler Momente lässt sich eine Region unabhängig von ihrer Lage beschreiben. Dazu wird in einem ersten Schritt der Schwerpunkt der Region berechnet. Im zweiten Schritt werden die Koordinaten aller Pixel der Region in Bezug zu diesem gesetzt. Durch µpq (R) = (u − x)p · (v − y)q (u,v)∈R kann das zentrale Moment der Ordnung p, q berechnet werden. 1 http://www.hitl.washington.edu/artoolkit/ (3.2) KAPITEL 3. GRUNDLAGEN 18 Hauptachse Die berechneten Momente lassen sich heranziehen, um direkt auf geometrische Eigenschaften, wie z. B. die Lage der Hauptachse, zu schließen. Diese beschreibt die Ausrichtung einer Region und sei anhand des folgenden Beispiels aus [Bur05] beschrieben. Stellt man sich die Region als Ebene im Raum vor und rotiert diese um alle möglichen Achsen die durch deren Schwerpunkt verlaufen, so ist die Hauptachse jene Rotationsachse, die einer Drehung das geringste Trägheitsmoment entgegensetzt. Durch 2 · µ11 (R) 1 −1 (3.3) θ (R) = tan 2 µ20 (R) − µ02 (R) gelingt die Berechnung des Winkels der Hauptachse. Exzentrizität Die Exzentrizität (engl. Eccentricity) beschreibt die Länglichkeit einer Region. Diese ist als das Verhältnis der beiden Hauptachsen der umhüllenden Ellipse definiert. Dabei kommt jene umhüllende Ellipse mit dem maximalen Verhältnis der beiden Hauptachsen zum Einsatz. Der durch Eccentricity (R) = [µ20 (R) − µ02 (R)]2 + 4 · [µ11 (R)]2 [µ20 (R) + µ02 (R)]2 (3.4) berechnete Wert liegt im Bereich [0, 1]. Für eine kreisförmige Region ergibt sich dabei ein Wert von 0, für eine lang gezogene Region ergibt sich eine Exzentrizität von 1. 3.3.3 Homografie Nach der Identifikation der interessanten Regionen und deren geometrischer Merkmale, ist die Grundlage geschaffen mittels dieser geometrischen Daten das Rendering zu beeinflussen. Dabei tritt folgendes Problem auf: Die Koordinaten der Interaktionsanalyse beziehen sich auf das Bildkoordinatensystem der Kamera. Um die virtuellen Repräsentationen der Objekte an der korrekten Stelle im Weltkoordinatensystem der dreidimensionalen Szene zu ermöglichen, müssen die beiden Koordinatensysteme in Bezug zueinander gebracht werden. Dies erfolgt durch das Konzept der Homografie. Dabie handelt es sich um die kollineare Abbildung zweier Vektorräume der Dimension 2. Die Abbildung auf einen Vektor des jeweils anderen Vektorraumes gelingt durch Multiplikation mit der, in einem ersten Schritt erstellten Homografiematrix. Diese beschreibt ein lineares Gleichungssystem, das durch die Angabe der Koordinaten der Referenzpunkte determiniert ist. Wir bewegen uns im zweidimensionalen Raum. Zur Berechnung kommen homogene Koordinaten (im KAPITEL 3. GRUNDLAGEN 19 zweidimensionalen also dreielementige Spaltenvektoren) und eine 3 × 3 Matrix zum Einsatz. Die beschriebene Transformation ist skalierungsinvariant, das Gleichungssytem weist daher acht Freiheitsgrade auf. Zu deren Determinierung ist also die Angabe der Koordinaten von vier Referenzpunkten notwendig. Dabei kommen die Eckpunkte der Region of Interest zum Einsatz, die zu den Punkten des Einheitsrechteckts in Bezug gebracht werden. Die so normalisierten Koordinaten werden im Renderclient durch Multiplikation mit der Dimension der Region of Interest im Weltkoordinatensystem wieder in Weltkoordinaten umgewandelt. 3.4 Rendering Es folgen theoretische Grundlagen sowie eine Beschreibung der zum Einsatz gekommenen Algorithmen, die die Grundlage des Renderings bilden. Diese Grundlagen werden in bewusst kompakter Form abgehandelt, für tiefer gehende Informationen sei der Leser erneut auf die einschlägige Fachliteratur (z.B. [Fel92] und [Mor90]) verwiesen. 3.4.1 Pfadanimation Ein Grundproblem der Umsetzung fast aller Medieninstallationen, ist es, Objekte in Bewegung zu versetzen. Bewegung bedeutet Veränderung der Bildinhalte, und genau dadurch wird die Aufmerksamkeit des Betrachters auf eine Installation gelenkt. Eine abwechslungsreiche Animation stellt somit den Schlüssel zu einer gelungenen und publikumswirksamen Installation dar. Beim Dry Garden MR wird diese Problematik durch die so genannte Pfadanimation [Fil06] gelöst. Jedes Objekt (Fische, Blätter, Wasserströmungen...), das sich bewegt, folgt einem vorgegebenen Pfad. Solch ein Pfad ist durch eine Summe an Stützpunkten definiert. Um Positionen zwischen diesen Stützpunkten zu ermitteln, kommt die im Folgenden beschriebene CatmullRom Spline Interpolation zum Einsatz. 3.4.2 Catmull-Rom Splines Der Begriff Spline sei durch folgendes Zitates aus [Ben03, Kap. 3.5.5] definiert. Der Begriff der Spline-Kurve wird in der Literatur sehr unterschiedlich definiert und ebenso weit reichend für die unterschiedlichsten Arten von Kurven benutzt. Als kleinster gemeinsamer Nenner aller Definitionen gilt die Charakterisierung einer SplineKurve als stückweise zusammengesetzte Kurve, die in ihren Segmenttrenngrenzen festgelegte Stetigkeitsbedingungen bzw. Glattheitskriterien erfüllt. KAPITEL 3. GRUNDLAGEN 20 Bei dem von Catmull und Rom entwickelten Verfahren Splines zu beschreiben [Cat74], handelt es sich um Kurven dritter Ordnung, genauer um eine Untergruppe der Kardinal-Splines. Deren Verlauf ist durch Richtung und Länge von Tangenten bestimmt. Beim Einsatz des Catmull-Rom Verfahrens werden die Tangenten anhand der Stützpunkte des Pfades automatisch gewählt. Die Kontinuität der resultierenden Kurve erfüllt die Kriterien G1 (die Richtungen der Tangenten sind für 2 benachtbarte Kurvensegmente gleich) und C 1 (die erste Ableitung der Kurvenfunktion benachtbarter Segmente ist gleich → die Tangenten sind gleich lang). Eine komplette mathematische Herleitung der Funktion findet sich in [Twi03], das resultierende Gleichungssystem ⎛ v (u) = 1 u u2 0 ⎜ −τ u3 · ⎜ ⎝ 2τ −τ 1 0 0 τ τ − 3 3 − 2τ 2−τ τ −2 ⎞ ⎛ 0 pi−2 ⎜ pi−1 0 ⎟ ⎟·⎜ −τ ⎠ ⎝ pi pi+1 τ ⎞ ⎟ ⎟ (3.5) ⎠ in Matrixnotation. Dabei entspricht v dem zu berechnenden Stützpunkt, pi−2 bis pi+1 den vier zur Interpolation herangezogenen Stützpunkten und τ der so genannten Tension bzw. Spannung. Beim Catmull-Rom Verfahren werden die Tangenten wie erwähnt anhand eines zwischen den aktuellen Stützpunkten linear interpolierten Punktes definiert. Der Parameter τ bestimmt dabei im Wertebereich [0..1] den Interpolationsfortschritt. Catmull-Rom Splines sind so definiert, dass der zur Bestimmung der Tangente interpolierte Punkt genau in der Mitte von Start- und Endpunkt des aktuellen Kurvensegmentes liegt. τ ist somit auf 0.5 fixiert. Im konkreten Fall wurde die Tension bei 0.5 belassen, da sich bei der Wahl eines kleineren Wertes, die Animationspfade zu stark durchbiegen“, ein größerer Wert aber unnatürlich eckige“ ” ” Animationspfade bewirkt (vgl. Abbildung 3.4). Der wesentliche Vorteil, eines Catmull-Rom Splines liegt darin, dass dieser immer durch alle ihn definierenden Stützpunkte verläuft. Die einzigen Ausnahmen bilden der erste und der letzte Stützpunkt. Diese dienen nur der Definition der Tangenten im zweiten bzw. vorletzten Stützpunkt des Pfades. Um bei den Pfadanimationen die Catmull-Rom Spline Interpolation verwenden zu können, gleichzeitig aber trotzdem zu garantieren, dass Start- und Endpunkt des Pfades durchlaufen werden, werden vor dem Startpunkt sowie nach dem Endpunkt eines Pfades automatisch zusätzliche Punkte eingefügt. Die Position dieser Punkte ist durch die jeweils vor bzw. nach dem Startbzw. Endpunkt liegenden Punkte definiert. Diese werden um den Start bzw. KAPITEL 3. GRUNDLAGEN (a) 21 (b) (c) Abbildung 3.4: Splines mit unterschiedlichen Tension-Parametern. (a) Tension = 0.0, (b) Tension = 0.5, (c) Tension = 1.0. Abbildung 3.5: Catmull-Rom Interpolation. Punkte in rot stellen die Stützpunkte des Pfades dar. Punkte in blau sind nachträglich eingefügt, um die Interpolation auch zwischen den Stützpunkten 1 und 2 bzw. 5 und 6 zu ermöglichen. um das Ende des Pfades gespiegelt. Zur Verdeutlichung sei an dieser Stelle auf Abbildung 3.5 verwiesen. Alle den Pfad definierenden Punkte sind rot, die zur Interpolation zusätzlich eingefügten Punkte sind blau eingezeichnet. Kapitel 4 Konzept Im folgenden Kapitel wird das Konzept des Dry Garden MR inklusive aller Interaktionsmetaphern erläutert. Die Grundlage dafür wurde von der japanischen Medienkünstlerin Keiko Takahashi erstellt und im Laufe des Projektfortschritts fortlaufend angepasst und verfeinert. Einige Punkte des ursprünglichen Konzeptes konnten auf Grund mangelnder zeitlicher und materieller Ressourcen nicht umgesetzt werden, andere wurden auf Grund der Benutzerreaktionen auf frühe Prototypen geändert. Diese Änderungen erfolgten in Absprache mit der Künstlerin. Die Weiterentwicklungen an diesem Konzept sind im vorliegenden Kapitel bereits enthalten, auf das ursprüngliche Konzept oder dessen Änderungen wird nicht näher eingegangen. 4.1 Zielsetzung Allgemein formuliert, ist es das Ziel des Dry Garden MR, Angehörigen anderer Kulturkreise die Idee japanischer Sandgärten (auch bekannt unter dem Synonym Zen Garten, Karesansui bzw. englisch: Dry Garden) mit Hilfe von Computergrafik, Projektion und computergestützter Interaktionserkennung näher zu bringen. 4.2 Setup Wie die in 4.1 gezeigte Abbildung verdeutlicht, lehnt sich der Dry Garden MR in seinem prinzipiellen Aufbau an die unter 3.1 erwähnten TischVersionen von Zen-Gärten an. Diese Konzeptskizze lässt aber auch erkennen, dass die Konzeption wichtige Details der technischen Umsetzung wie Art und Richtung der Projektion sowie Funktionsweise der Interaktionserkennung bei Seite lässt. Diese wurden vom Autor der vorliegenden Diplomarbeit in enger Zusammenarbeit mit der Künstlerin selbst, mit Dipl. Ing. Dietmar Offenhuber sowie Dr. Hirokazu Kato und Dr. Michael Haller entwickelt. 22 KAPITEL 4. KONZEPT 23 Abbildung 4.1: Konzeptskizze zum Setup des Dry Garden MR aus [Tak05]. Das Ergebnis dieses iterativen Prozesses ist eine Medieninstallation mit Tangible User Interface. Die grundsätzliche Anordnung entspricht der einer klassischen Table-Top Installation und erlaubt mehreren Benutzern gleichzeitig mit der horizontalen Projektionsfläche zu interagieren. 4.3 Content Wie in jedem Sandgarten gibt es auch im Dry Garden MR Sand und Steine. Beim Dry Garden MR werden diese allerdings nicht nur in der Fantasie des Betrachters zum Leben erweckt, sondern auch durch die Projektion eines Non-Photorealistic Renderings. Dieses stellt Wasserströmungen und darauf tanzende Blätter dar. Bei der Berechnung des Verlaufs dieser Wasserströmungen werden die Positionen der Steine im Dry Garden MR berücksichtigt. Die Richtung der Wasserströmungen kann vom Benutzer durch Muster im Sand bestimmt werden. Der Sand dient somit gleichzeitig als Eingabe- wie auch als Ausgabemedium. Zusätzlich ist der Dry Garden MR das Habitat einer virtuellen Fischkolonie. Dabei handelt es sich um Cyprinus carpio, einer speziell für japanische Gärten gezüchteten Gattung von Zierkarpfen. Diese schwimmen unter der Sandschicht und tauchen erst zur Oberfläche auf, wenn der Benutzer Löcher in die Granulatschicht gräbt. Sobald ein Fisch die Oberfläche erreicht hat, verweilt er dort um vom Benutzer in Händen gehalten werden zu können. KAPITEL 4. KONZEPT (a) 24 (b) Abbildung 4.2: Content des Dry Garden MR. (a) Konzept (aus [Tak05]). (b) Umsetzung. Abbildung 6.5(a) (a) zeigt das Konzept und ein Foto (b) zum Content des Dry Garden MR. Bei (b) handelt es sich um eine Debugversion, die zusätzlich die für Wasserströmungen und Blätter an der Oberfläche berechneten Pfade visualisiert. Erkennbar sind zwei Steine sowie der an deren Position angepasste Verlauf der Wasserströmungen. Weiters treiben zwei Fische an der Oberfläche. 4.4 Interaktionskonzept Der folgende Abschnitt fasst die unterschiedlichen Interaktionsmetaphern des Dry Garden MR zusammen. Gewisse Anknüpfungspunkte ergeben sich zu [Whi98]. So die Projektion auf eine nicht plane Oberfläche, und die Möglichkeit des Benutzers, den eigenen Körper in eine Projektionsfläche zu verwandeln. 4.4.1 Interaktion durch die Hand des Benutzers Dem Benutzer stehen zwei mögliche Arten der Interaktion mit dem Sand des Dry Garden MR offen. Einerseits kann er durch Ziehen gerader Interaktionsmuster die Richtung der Wasserströmungen bestimmen. In Abbildung 4.3 sind die Interaktionsmuster des Benutzers rot markiert. Deutlich erkennbar ist, wie die Wasserströmungen ihre Richtung, jener der Interaktionsmuster anpassen. Andererseits können die Fische des Dry Garden MR durch Graben von Löchern in die Sandschicht, zum Auftauchen veranlasst werden. Dies geschieht erst wenn einer der Fische ein Loch direkt über seiner momentanen Position wahrnimmt“. In Abbildung 4.4(b)) ist ” das Loch in der Granulatschicht, sowie der Fisch im Moment des Erreichens KAPITEL 4. KONZEPT (a) 25 (b) Abbildung 4.3: Durch die Richtung der Interaktionsspur (rote Markierung) gibt der Benutzer die Richtung der Wasserströmungen vor. (a) 45◦ . (b) 85◦ . (a) (b) (c) (d) Abbildung 4.4: Interaktionsmöglichkeiten durch die Hand des Benutzers. Links jeweils das Konzept (aus [Tak05]) rechts die Umsetzung. In (a) und (b) schwimmt ein Fisch zur Hand des Benutzers. In (c) und (d) wird dieser durch den Benutzer in seiner Hand gehalten. KAPITEL 4. KONZEPT 26 der Oberfläche erkennbar. Dabei werden die in Abschnitt 4.8.3 beschriebenen Oberflächenwellen ausgelöst. Sobald die Oberfläche erreicht ist, verbleibt der Fisch dort um vom Benutzer in Händen gehalten werden zu können (vgl. Abbildung 4.4(d)). 4.4.2 Interaktion mit den Steinen Die Steine des Dry Garden MR stellen für Wasserströmungen, Blätter und Fische natürliche Hindernisse dar. Das heißt, dass diese über die Position der in der Realität vorhandenen Steine Bescheid wissen und diesen ausweichen. Sobald der Benutzer einen Stein im Dry Garden MR platziert, entstehen Wellen um die Interaktionsstelle. Die Wasserströmungen verlaufen um diese Steine herum. Auch die Animationspfade der an der Oberfläche treibenden Blätter werden entsprechend angepasst (vgl. dazu auch Abbildung 4.5). (a) (b) (c) (d) Abbildung 4.5: Interaktion des Benutzers mit einem Stein. (a) und (c) zeigen das Konzept (aus [Tak05]). (b) und (d) zeigt die Umsetzung. KAPITEL 4. KONZEPT 4.4.3 27 Interaktion mit dem Bambusrechen Wie einleitend beschrieben, kommen beim Zeichnen von Mustern in den Sand von Sandgärten kleine Bambusrechen zum Einsatz. Beim Dry Garden MR wurde der Sand wie unter 4.5.2 beschrieben durch PS1161 ersetzt. Da dieses Granulat relativ grobkörnig ist, ist die Interaktion mit einem Bambusrechen nicht mehr möglich. Der Benutzer muss seine Muster daher wie in Abschnitt 4.4.1 beschrieben mit der Hand ziehen. Ein mögliches alternatives Interaktionskonzept, welches den Rechen doch integriert, beschreibt Abschnitt 4.7. 4.5 Hardware Setup Der folgende Abschnitt beschreibt das Hardware Setup des Dry Garden MR. Um die im Konzept geforderten Interaktionsmöglichkeiten zu erlauben, wurde das in Abbildung 4.6 gezeigte Setup gewählt (Die Zahlen in Klammer beziehen sich auf die Markierungen im Bild). Im weiteren Verlauf des Textes wird der Begriff Infrarot durch IR abgekürtzt. Es handelt sich dabei um eine Installationsanordnung die einer klassischen Tabletop Projektion entspricht. Auf die horizontal angebrachte Projektionsscheibe wird sowohl von oben (4) als auch von unten (5) projiziert. Die Projektion von beiden Seiten ist nur deshalb möglich, weil auf der Projektionsscheibe eine Schicht PolystyrolGranulat (2) liegt. Die Interaktionserkennung erfolgt durch eine unterhalb des Tisches angebrachte Kamera mit IR-Filter(1). Um einen ausreichend starken Kontrast sicherzustellen leuchtet dieser ein IR-Scheinwerfer (3) entgegen. Die rechte Abbildung zeigt den Versuchsaufbau in einem Labor der Fachhochschule Hagenberg. Auf den Projektor der Bestandteil des iPoint ist (5) wird als Rückprojektor, auf den oberhalb der Installation montierten Projektor (4) als Frontprojektor referenziert. 4.5.1 Peyote iPoint Im konkreten Fall ist diese Scheibe Bestandteil des Peyote iPoint. Dabei handelt es sich um einen interaktiven Präsentationstisch aus lasergeschnittenem Aluminium, der aus zwei Hauptbestandteilen zusammengesetzt ist: Der mit thermisch verformten Plexiglas verkleidete starre Außenkorpus übernimmt die statische Funktion, während ein um 360◦ frei drehbarer Innenkorb alle audiovisuellen Komponenten beinhaltet. Auf dem drehbaren Innenkorb liegt eine 40“ Rückprojektionsscheibe auf, welche vom Rückprojektor über einen kleinen Spiegel angestrahlt wird. Der Innenkorb wird über einen Schleifkontakt mit Strom versorgt, ansonsten ist er in sich abgeschlossen. Des Weiteren befindet sich in dem Korb ein Stereo-Soundsystem sowie eine PC der seine Daten mit Hilfe des Projektors darstellt. KAPITEL 4. KONZEPT (a) 28 (b) Abbildung 4.6: Hardwaresetup des Dry Garden MR. (a) Komponenten Diagramm. (b) Versuchsaufbau. Einen weiteren wichtigen Bestandteil des Peyote iPoint stellt dessen Interaktionserkennung dar. Direkt über der Rückprojektionsscheibe sind IRDioden sowie IR-Sensoren angebracht, die den Punkt der Interaktion erkennen. Eine von Peyote entwickelte Software interpretiert diese Daten und positioniert unter Windows den Mauszeiger entsprechend. Diese Lösung zur Interaktionserkennung kommt beim Dry garden MR aus mehreren Gründen nicht zum Einsatz: • Beschränkung auf einen Interaktionspunkt Die mit dem Tisch ausgelieferte Software erlaubt nur die Erkennung eines einzigen Interaktionspunktes. Die Installation sollte allerdings die Interaktion mehrerer Benutzer erlauben. • Verdeckung durch das Granulat Da auf der Tischoberfläche der Sand“ des Dry Garden MR liegt, ver” deckt dieser die IR-Sensoren. Die Interaktionserkennung kann daher unter keinen Umständen mehr funktionieren. Abschließend sei noch auf die LED-Beleuchtung des Peyote iPoint verwiesen. Diese besteht aus vier an den Innenseiten angebrachten Elementen, die softwaregesteuert verschiedene Farben kombinieren können. Mangels einer KAPITEL 4. KONZEPT 29 API wurde dieses interessante Ausgabemedium aber nicht in die Gesamtinstallation eingebunden. 4.5.2 Granulat Essentieller Bestandteil eines Zen-Gartens ist Sand bzw. Kies. Da sich das Setup zur Interaktionserkennung auf eine Rückprojektionsanordnung stützt, muss dieser durch ein transparentes Medium ersetzt werden. Zwei unterschiedliche Materialien wurden getestet. Polystyrol der Firma Gabriel Chemie1 (Korndurchmesser 1mm) und PS1161 der Firma Slupetzky2 (Korndurchmesser 2-3mm). Abbildung 4.7: Unterschiedliche Projektionsmaterialien im Vergleich. V.l.n.r.: Karton, PS1161, Polystyrol. Abbildung 4.7 zeigt die Materialien beim Einsatz einer Frontprojektion im Vergleich. Ganz links ist die Projektion auf eine glatte Oberfläche erkennbar. Auffällig ist in diesem Fall das fein strukturierte Muster, das durch die Rasterung des LCD -Panels des Frontprojektors entsteht. Das mittlere Bild, zeigt die Projektion auf PS1161. Durch dessen Grobkörnigkeit ergibt sich eine sehr starke Streuung des auftreffenden Lichtes. Daraus resultieren relativ unscharfe Bilder. Ganz rechts in der Abbildung, ist das feinkörnige Polystyrol erkennbar. Der geringere Korndurchmesser verringert die Streuung, was einen schärferen Bildeindruck als die Projektion auf PS1161 bewirkt. Trotzdem fiel die Entscheidung zu Gunsten von PS1161. Dies liegt in der haptischen Qualität der beiden Materialien begründet. Das feinkörnige Granulat bleibt an den Händen der Benutzer kleben, worauf Versuchspersonen sehr negativ reagierten. Für den Betreiber der Installation ist dagegen das feinkörnige Granulat unzumutbar, weil es von den Benutzern im gesamten Raum des Versuchsaufbaus verteilt wird. 1 2 http://www.gabriel-chemie.com/ http://www.slupetzky.at/ KAPITEL 4. KONZEPT 30 Abbildung 4.8: Rückprojektion beim Einsatz von PS1161. 4.5.3 Projektionssetup und Beleuchtung Es kommt das in Abschnitt 4.5.1 beschriebene Rückprojektionssetup zum Einsatz. Das auf der Rückprojektionsscheibe verteilte Granulat ist zwar transparent, allerdings sind die von unten projizierten Bilder kaum erkennbar (vgl. Abbildung 4.8). Aus diesem Grund, liefert eine zusätzliche FrontProjektion Bilder von oberhalb der Installation. Um genügend Abstand zur Projektionsscheibe zu gewährleisten, wird der zweite Projektor an der Decke des Versuchslabors montiert. Die dafür zum Einsatz gekommene Befestigung dient gleichzeitig der Aufnahme des zur Interaktionserkennung benötigten IR-Scheinwerfers. Dieser ist nicht zwingend erforderlich. Der IR-Anteil der im Versuchsraum vorhandenen Beleuchtung ist groß genug, um der Kamera genügend Licht in diesem Frequenzbereich zu Verfügung zu stellen. Durch das auf der Projektionsscheibe verteilte Granulat sind die von der Kamera aufgezeichneten Bilder relativ dunkel. Werden vom Benutzer zusätzlich Steine auf den Tisch gelegt, sind diese zwar als dunkle Stellen im Bild erkennbar, der Kontrast zwischen den Grauwerten des Hintergrundes und den Steinen ist allerdings sehr gering (vgl. Abbildung 4.9(a)). Die Interaktionserkennung arbeitet dadurch nicht mehr zuverlässig. Um den Kontrast zu verbessern kommt der erwähnte IR-Scheinwerfer zum Einsatz. Er wird mit einem Diffuser versehen, um Hotspots im Kamerabild zu vermeiden. Der Raum wird komplett verdunkelt. Somit trifft das gesamte IR-Licht direkt von oben auf den Tisch auf. Dadurch steigt der Kontrast sowohl der hellen als auch der dunklen Stellen stark an (vgl. Ab- KAPITEL 4. KONZEPT (a) 31 (b) Abbildung 4.9: Bild der Kamera zur Interaktionsermittlung. (a) Ohne Verdunkelung. (b) Mit Verdunkelung und zusätzlichem IR-Scheinwerfer. Abbildung 4.10: Abstimmung von Rückprojektion und Interaktionserkennung. Mittels der grünen Marker gelingt es, die Kamera der virtuellen Szene auf die Region of Interest der Interaktionserkennung abzustimmen. bildung 4.9(b)) und die Konturen der Interaktionsmuster und Steine sind klar erkennbar. Ein weiterer Vorteil der Verdunkelung liegt darin, dass die projizierten Bilder hell und für den Benutzer gut erkennbar sind. Weiters ist es für die Funktion der Installation von enormer Wichtigkeit, dass das Kamerabild auf die beiden Projektionen abgestimmt wird. Dazu kommen die in Abbildung 4.10 rot hervorgehobenen Marker zum Einsatz. Einerseits definieren sie die Region of Interest des Kamerabildes und somit auch die Begrenzung der Interaktionsfläche. Andererseits muss beim Setup der Installation darauf geachtet werden, dass sich die Fläche der Frontprojektion, genau mit dem durch die Marker begrenzten Rechteck deckt. Die KAPITEL 4. KONZEPT 32 Rückprojektion, deckt immer die gesamte Rückprojektionsscheibe des iPoint ab. Aus diesem Grund muss die Anpassung der Perspektive des Renderings in der Applikation erfolgen. Dies gelingt durch Veränderung der virtuellen Kameraposition der dargestellten dreidimensionalen Szene. In Abbildung 4.10, ist die Begrenzung der Szene durch die grüne Fläche markiert. Abschließend stellt sich die Frage, warum überhaupt ein eingeschränkter Bereich und nicht die gesamte Fläche der Rückprojektionsscheibe als Interaktionsbereich zum Einsatz kommt. Dies liegt in der zu Verfügung stehenden Hardware begründet. Der zum Einsatz gekommene IR-Scheinwerfer strahlt der Kamera direkt entgegen. Durch den Diffuser, wird Hotspotting zwar abgeschwächt, kann allerdings nicht komplett vermieden werden. So nimmt die Intensität der Grauwerte im Kamerabild zum Rand hin stark ab. Die Begrenzung der Interaktionsfläche wird auf den Bereich eingeschränkt, der genügend hell und gleichmäßig ausgeleuchtet ist. 4.5.4 Kamera Die im Konzept eingeforderte Interaktionserkennung wird mit der FirewireKamera Point Greyscale Dragonfly realisiert. Als Objektiv kommt das Computar T2314FICS-3 3 zum Einsatz. Dies weist eine Fixbrennweite von 2.3 mm, eine manuell einstellbare Blende sowie einen manuellen Fokus auf. Für das Projekt wurde das Objektiv zusätzlich mit dem IR-Filter helioc nm) ausgestattet. Durch den Betrieb pan RG 780 (Sperrfrequenz bei 780 im IR-Bereich, kann die Kamera im Graustufenmodus betrieben werden. Hierbei ist es von entscheidendem Vorteil, dass deren Sensor nativ Grauwerte liefert. Zur Erklärung dieses Vorteils folgt ein kurzer Exkurs über die digitale Bildaufzeichnung mitCCD -Kameras. Bei Standard CCD -Kameras sind die fotosensitiven Zellen des CCD (Charged Coupled Device) abwechselnd mit Farbfolien in rot, grün und blau beklebt. Pro Bildpunkt steht also nur ein Rot- oder ein Grün- oder ein Blauwert zu Verfügung. Um für einen Bildpunkt den korrekten RGB-Wert zu ermitteln, wird daher durch die Software der Kamera zwischen den Farbwerten der benachbarten Zellen interpoliert. Wird der Graustufenmodus aktiviert, müssen diese RGB-Daten von der Kamera-Software wieder zu Graustufenbildern zusammengerechnet werden. Diese zweimalige Interpolation bewirkt einen weiteren Verlust an Bildqualität. Bei der Dragonfly fällt diese zweimalige Interpolation weg, die Kamerabilder sind von entsprechend hoher Qualität. Ein weiterer Vorteil des gewählten Modells ist dessen Firewire-Schnittstelle. Derentwegen können die Bilder der Kamera unkomprimiert an den aufzeichnenden PC weitergegeben werden. Die beim Einsatz normaler USBKameras durch deren verlustbehaftete Komprimierung auftretenden Komprimierungsartefakte werden dadurch vermieden. 3 http://www.computar.jp/ KAPITEL 4. KONZEPT 4.6 33 Erweiterungen Das ursprünglichen Konzept von Keiko Takahashi, sah neben linearen auch kreis- und wellenförmige Interaktionsmuster vor. Die Erkennung solcher Muster durch den Interaktionsserver und die entsprechende Reaktion des Renderclient wurde aus Zeitgründen jedoch nicht implementiert. Bei einer vom Autor dieser Arbeit entwickelten Erweiterung, die zu einer Verbesserung des Interaktionserlebnisses führt, werden nicht nur die Handpositionen der Benutzer, sondern zusätzlich die Umrisse der interagierenden Hände bestimmt. Diese Bereiche könnten in der Projektion von oben maskiert werden. Somit würden die Benutzer nicht mehr sofort wahrnehmen, dass Wasserströmungen und Blätter von oben projiziert werden. Entsprechend größer wäre ihre Überraschung, die Projektion eines Fisches in ihre Hand zu entdecken. 4.7 Alternatives Konzept Das in den vorangegangenen Abschnitten beschriebene Konzept ist nur eines von mehreren die vor der Umsetzung des Projektes entwickelt wurden. Diese Konzepte wurden allerdings nicht umgesetzt und sind in dieser Arbeit daher auch nicht näher beschrieben. Aus den ersten Erfahrungen, die mithilfe des auf dem Peyote iPoint aufbauenden Prototypen, gewonnen wurden, resultiert das in Folge beschriebene, weiterentwickelte Konzept (vgl. Abbildung 4.11). Es verbessert die folgenden Schwachstellen des bisherigen Konzeptes: • Geringe optische Qualität des eingesetzten Granulats. • Beschränkung auf primitive Interaktionsmuster. • Verdunkelung des Raumes. • Verzicht auf den Einsatz des Rechens. Da der Peyote iPoint nicht vom Auftraggeber des Projektes zu Verfügung gestellt wurde, ist das weiterentwickelte Konzept unabhängig von dessen Einsatz. Die in Folge zur Beschreibung verwendeten Ziffern beziehen sich auf Abbildung 4.11. Das Projekt stützt sich auf den Einsatz eine simplen Tisches. In dessen Tischplatte ist eine Auslassung eingearbeitet, die der Aufnahme einer Glaswanne dient. Diese Glaswanne wird mit weissem Sand (4) gefüllt, der das das grobkörnige PS1161 ersetzt. Dies bietet den Vorteil, besser erkennbarer Projektionsbilder. Weiters können somit traditionelle Bambusrechen (3) zur Interaktion verwendet werden. Der Benutzer steht in keinem direkten Kontakt mit dem Granulat. Der kulturelle Kontext eines Zen-Garten wird dadurch stärker gewahrt. Des Weiteren liegen durch den Verzicht des Einsatzes von PS1161, die Steine näher an der Tischoberfläche. Deren Konturen sind dadurch im Kamerabild schärfer und KAPITEL 4. KONZEPT 34 Abbildung 4.11: Alternatives Setup für den Dry Garden MR. klarer. Somit wird der Verzicht auf die Verdunkelung des Raumes möglich. Je nach Lichtsituation muss evtl. ein IR-Scheinwerfer mit Diffuser oberhalb der Installation angebracht werden. Die Projektion ist in diesem Fall auf eine reine Frontprojektion (1) von oberhalb der Installation beschränkt. Die Interaktionsmetapher des Löcher ” grabens“ entfällt dadurch. Fische schwimmen genauso wie Blätter an der Oberfläche. Interaktionserkennung: Diese geschieht weiterhin mit einer IR-Kamera, die unterhalb des Tisches montiert ist. Sie ist gemeinsam mit den restlichen Hardware-Komponenten in einer abschließbaren Box (5) unterhalb des Tisches angebracht. Diese ist fix mit dem Tisch verbunden, um die Ausrichtung der Kamera auf den Tisch nicht zu gefährden. Das IR-Tracking wird wesentlich vereinfacht, indem nur noch die Positionen der Steine auf der Tischoberfläche ermittelt werden müssen. Für die Erkennung der In- KAPITEL 4. KONZEPT (a) 35 (b) Abbildung 4.12: (a) Traditioneller Bambusrechen. (b) Konzept des Rechens mit Komponenten zur Interaktionserkennung. Das Ende des Rechens ist mit IR-Dioden ausgerüstet (1), deren Stromversorgung ist in den Griff integriert (2). teraktionsmuster wird ein völlig neuer Ansatz gewählt. Dazu werden die traditionellen Bambusrechen (vgl. Abbildung 4.12) mit IR-Dioden ausgestattet. Neben dem Projektor ist oberhalb der Installation eine zusätzliche IR-Kamera montiert. Da aus der Richtung des Tisches kaum Licht im IR-Frequenzbereich emittiert wird, heben sich die an den Rechen angebrachten IR-LEDs sehr stark als helle Stellen vom relativ dunklen Hintergrund des Kamerabildes ab. Pro Rechen sind mehrere LEDs angebracht. Somit ist neben der Bestimmung der Position auch zu jedem Zeitpunkt eine genaue Bestimmung der Ausrichtung des Rechens möglich. Zur Bestimmung der Interaktionsmuster werden für jeden Rechen, die jeweiligen Bewegungs-Trajektorien aufgezeichnet. Diese können durch den Einsatz eines Pattern-Matching Verfahrens auf Ähnlichkeit verglichen werden. In einer ersten Version könnte dies durch so genanntes Chamfer Matching realisiert werden. Dieses Verfahren hat zum Nachteil, nicht rotationsinvariant zu sein. Damit die Interaktionsmuster der Benutzer, unabhängig von deren Rotation erkannt werden können, muss ein komplexeres Verfahren zum Einsatz kommen. Das Gebiet des Pattern-Matching ist ein eigenes Forschungsgebiet und wird daher im Rahmen dieser Diplomschrift nicht behandelt. 4.8 Konzepte des Renderings Der folgende Abschnitt beschreibt die Konzepte die hinter dem Rendering des Dry Garden MR stehen. Dabei werden die wichtigsten Punkte des gra- KAPITEL 4. KONZEPT 36 fischen Konzeptes aufgegriffen und einzeln analysiert. Zur besseren Veranschaulichung, befindet sich neben jeder Konzeptskizze die entsprechende Abbildung der fertigen Implementierung. 4.8.1 Wasserströmungen Für die Visualisierung der Wasserströmungen, sowie der Blätter die an der Oberfläche treiben, wurden auf Grund der schwierigen Projektionsbedingungen (die Projektionsoberfläche ist nicht plan und nicht glatt) grafisch sehr einfache Elemente gewählt. Diese werden wie in Abschnitt 3.4.1 beschrieben, anhand vorberechneter Pfade animiert. Bei der Berechnung dieser Pfade werden die Hindernisse (= Steine an der Oberfläche) berücksichtigt. Pfadberechnung durch Stützpunktverschiebung Im ersten Ansatz wird ein Pfad mit einer fix vorgegebenen Anzahl an Stützpunkten berechnet. Alle Stützpunkte dieses Pfades liegen zu Beginn des Algorithmus auf einer Geraden. Über diese Stützpunkte wird iteriert, und jeweils überprüft, ob sich die aktuelle Position mit der eines Hindernisses deckt. Diese Überprüfung findet im dreidimensionalen Raum statt. Dabei wird an der Stelle jedes Hindernisses eine Kugel platziert, deren Radius um einen konstanten Faktor (im konkreten Fall 2.5) größer als der Durchmesser des Hindernisses ist. Im weiteren Verlauf des Textes werden diese Kugeln als Influencespheres bezeichnet. In Abbildung 4.14 sind drei solche Influencesphere als grüne Wireframe-Modelle erkennbar. Mit Hilfe von (X − M )3 = r 3 (4.1) wird nun berechnet, ob sich der aktuelle Stützpunkt innerhalb der Influencesphere befindet. Ist dies der Fall, dann wird der Punkt entlang der Normalen der Geraden, auf der die Stützpunkte liegen, vom Hindernis weg“ ” verschoben (vgl. auch Abbildung 4.8.1). Die Distanz ist dabei die Hälfte der Strecke zwischen dem Schnittpunkt (Kugel in dunkelgrün) der Normalen mit der Influencesphere, und der ursprünglichen Position des Stützpunktes (Kugel in grün) selbst. Durch die Gewichtung der ermittelten Distanz mit dem Faktor 0.5 werden Punkte, die näher am Hindernis liegen, stärker von diesem weggeschoben als Punkte die weit vom Hindernis entfernt sind. Die resultierende Position (Kugel in hellgrün), kann sich durch die Überschneidung mit weiteren Influencespheres erneut verändern. Resultat: Die Qualität der entstehenden Pfade ist beim reinen Verschieben von Stützpunkten sehr davon abhängig, wie viele Stützpunkte pro Gerade definiert werden. Werden zu wenige Stützpunkte festgelegt, führen die interpolierten Pfade nicht um das Hindernis herum (vgl. Abbildung 4.14 Kugel ganz rechts). KAPITEL 4. KONZEPT (a) 37 (b) Abbildung 4.13: Berechnung der Pfadverläufe durch Verschieben bestehender Stützpunkte. (a) Konzept. (b) Screenshot. Abbildung 4.14: Berechnung des Pfadverlaufes durch Verschieben bestehender Stützpunkte. Berechnete Pfade verlaufen durch die Hindernisse hindurch (Hindernis links unten). KAPITEL 4. KONZEPT 38 Pfadberechnung durch Schnitt von Kreis und Gerade In einem zweiten Ansatz wurde der im Folgenden beschriebene Algorithmus entwickelt: Die Anzahl an Stützpunkten, die einen Pfad durch den Dry Garden MR beschreibt ist zu Beginn auf zwei beschränkt (Jeweils ein Punkt an den Rändern des Begrenzungsrechtecks). Es wird über alle Hindernisse iteriert. Dabei wird überprüft, ob sich zwischen dem aktuellen Pfad und der Influencesphere des aktuellen Hindernisses eine Überschneidung ergibt. Diese und alle weiteren Berechnungen finden im zweidimensionalen Raum statt. Hindernisse und Influencespheres werden somit durch Kreise repräsentiert. Durch das Gleichsetzen von Geraden- und Kreisgleichung werden die Schnittpunkte S1 (Kugel in rot) und S2 (Kugel in blau) berechnet, welche zu dem aktuellen Pfad hinzugefügt werden. (a) (b) Abbildung 4.15: Berechnung der Pfadverläufe durch Einfügen des Schnittpunktes zwischen Kreis und Gerade. (a) Konzept. (b) Screenshot. Außerdem wird ein weiterer Stützpunkt (im weiteren Verlauf des Textes als H1 bezeichnet, in Abbildung 4.8.1 als hellgrüne Kugel erkennbar) eingefügt. Dessen Position errechnet sich folgendermaßen: Ausgehend von der Halbierung der Strecke durch die beiden Schnittpunkte (Kugel in dunkelgrün) wird die Normale des Pfades erneut mit der Influencesphere geschnitten. Die Strecke zwischen dem Schnittpunkt der näher zum Pfad liegt, und dem Halbierungspunkt wird im Verhältnis 50:50 geteilt. Die Teilungsposition ist nun die Position die dem Pfad hinzugefügt werden soll. Weiters wird gespeichert, ob sich diese Position (im weiteren Verlauf H1 genannt) links oder rechts vom gerade aktuellen Pfad befunden hat (isLeft-Berechnung). Damit sichergestellt ist, dass die animierten Objekte um das Hindernis herum strömen, wird der Normalabstand des soeben berechneten Punktes vor seinem KAPITEL 4. KONZEPT 39 Hinzufügen zum Pfad noch auf mindestens die Hälfte der Dimension des entlang des Pfades animierten Objektes gesetzt. Resultat: Gegenüber der in Abschnitt 4.8.1 beschriebenen Methode ergeben sich keine erkennbaren Nachteile. Für Influencespheres mit geringem Radius biegt“ sich die Kurve zwischen den Schnittpunkten und dem Mit” telpunkt sehr stark durch“. Die in Abschnitt 4.8.1 beschriebene erweiterte ” Form des Algorithmus berücksichtigt diese Problematik. Probleme: Eine Problematik die sich erst bei näherer Beschäftigung mit diesem Ansatz offenbart ist die Notwendigkeit, die berechneten Punkte in der richtigen Reihenfolge zum Pfad hinzuzufügen. In der konkreten Implementierung stellt ein Pfad eine Liste an Punkten dar. Zur Interpolation wird über diese Liste in aufsteigender Reihenfolge iteriert. Somit wird die Reihenfolge, in der die Punkte in der Liste gespeichert sind, ausschlaggebend für die Interpolation. Werden die berechneten Schnittpunkte einfach in der Reihenfolge ihrer Berechnung zum Pfad hinzugefügt, muss dies aus Sicht der Interpolation nicht die richtige sein. Abbildung 4.8.1 zeigt dieses Problem deutlich. (a) (b) Abbildung 4.16: Pfadberechnung durch Schnitt von Kreis und Gerade. (a) Ohne Vorsortierung. (b) Sortiertes Einfügen in den Pfad. Lösung: Um die neu berechneten Punkte in der richtigen Reihenfolge zum Pfad hinzuzufügen, wird für den einzufügenden Punkt, der Abstand vom ersten Stützpunkt des Pfades berechnet. Es wird an der Indexposition des ersten Stützpunktes, der einen größeren Abstand vom Ursprung als der des KAPITEL 4. KONZEPT 40 einzufügenden Punktes aufweist, eingefügt. Die Indizes aller Stützpunkte die nach diesem Punkt folgen werden um eins erhöht. Einfügen eines zusätzlichen Stützpunktes Bei dieser Methode wird zusätzlich zu den durch 4.8.1 berechneten Stützpunkten ein weiterer Stützpunkt der, in Flussrichtung der Wasserströmung, vor dem Mittelpunkt liegt, eingefügt. Zur besseren Veranschaulichung sei an dieser Stelle auf Abbildung 4.8.1 verwiesen. Die Strecke zwischen dem ersten Schnittpunkt (rote Kugel) von Kreis und Geraden und dem Mittelpunkt (dunkelgrüne Kugel) wird im Verhältnis 60:40 geteilt. Ausgehend von diesem Teilungspunkt (braune Kugel) wird der Normalen der Geraden gefolgt. Die Richtung der gefolgt wird, ist durch die isLeft()-Berechnung von H1 vorgegeben. Dadurch ist sichergestellt, dass der soeben berechnete Stützpunkt (gelbe Kugel) auf derselben Seite des Pfades liegt wie H1. (a) (b) Abbildung 4.17: Berechnung der Pfadverläufe durch Schnitt zwischen Kreis und Gerade und zusätzlichem Einfügen eines Hilfspunktes. (a) Konzept. (b) Screenshot. Es ist nicht notwendig einen zusätzlichen Stützpunkt, in Flussrichtung nach dem Hindernis einzufügen, da der so entstandene Wasserverlauf eher dem natürlichen (tropfenförmigen) Fluss des Wassers entspricht. Abschließend betrachtet ergibt die Methode die Animationspfade der Wasserströmungen um Hindernisse herum im Voraus zu berechnen zwei Vorteile. Zum einen muss nicht während der Animation an und für sich, fortlaufend überprüft werden, ob die animierten Objekte, mit den Hindernissen kollidieren. Zum anderen erfolgt die Berechnung neuer Pfade immer nur dann, wenn sich die Anzahl der Hindernisse oder die durch den Benutzer vorgegebene Flussrichtung ändert. KAPITEL 4. KONZEPT 4.8.2 41 Animation der Fische Auch für die Fische des Dry Garden MR werden die Pfade denen diese folgen, im Voraus berechnet. Die Punkte dieser Pfade werden für jeden Fisch zufällig gesetzt. Sobald ein Fisch das Ende eines Pfades erreicht hat, wird ein neues Ziel per Zufall generiert und dessen Position dem Pfad hinzugefügt. Dabei befinden sich alle Ziele auf demselben y-Level im Weltkoordinatensystem. Gräbt der Benutzer ein Loch in die Granulatschicht, kann er dadurch ein neues Ziel setzen, das an der Oberfläche des Dry Garden MR liegt. Sobald ein solches Ziel erreicht ist, bleibt der Fisch an dieser Position und wartet darauf, vom Benutzer aufgenommen zu werden. Zusätzlich werden beim Erreichen der Oberfläche die unter 4.8.3 beschriebenen Oberflächenwellen ausgelöst. Zur Berechnung der jeweils aktuellen Position im Raum, kommt die Catmull-Rom Spline Interpolation zum Einsatz. Die korrekte dreidimensionale Ausrichtung des entsprechenden Modells, wird über Rotationen um die Achsen des lokalen Koordinatensystems gewährleistet. Diese Vorgehensweise gilt für alle dreidimensionalen Objekte des Dry Garden MR. Die Rotationen erfolgen immer in der Reihenfolge x, y, z. Zur Berechnung der Rotationswinkel der Fische wird jeweils deren letzte Position im Weltkoordinatensystem gespeichert, und die Differenz zur aktuell berechneten Position ermittelt. Dieser Richtungsvektor stellt die Grundlage der Berechnung der Rotationswinkel um die lokalen Koordinatenachsen dar. Vor dieser Berechnung wird mit Hilfe eines konstanten Thresholds pro Achse vermieden, dass eine zu geringe Änderung die Ergebnisse der Rotationsberechnung verfälschen. Ohne diese Treshholds kommt es zu einem unkontrollierten Zucken“ der Fische, ” da Änderungen in der Position durch das langsame Schwimmen der Fische 0 sein können und somit auch der entsprechende Winkel 0◦ beträgt. Zur Berechnung der Rotationswinkel kommt die Methode zum Einsatz. Diese liefert im Vergleich zur normalen Arcus Tangens Berechnung keine Werte im Bereich von −π/2 bis π/2, sondern Werte zwischen −π und π. Dies hat den Vorteil, dass für die eindeutige Zuordnung eines Winkels keine zusätzliche Überprüfung der Eingangsparameter mehr notwendig ist. In den meisten Fällen werden die Fische am selben y-Level des Weltkoordinatensystems animiert. Es findet daher lediglich um die y-Achse eine Rotation statt. Um diese Rotationen langsam und rund von Statten gehen zu lassen, werden 10 Werte zwischengespeichert. Deren Mittelwert ergibt immer den aktuellen Rotationswinkel. Die in [Ben03, Kap. 7.2.2] angesprochene Problematik des Gimbal Lock tritt vereinzelt auf. Durch die Verwendung von Quaternionen ließe sich dieses Problem leicht umgehen. Sekundäre Animationen der Fische Ein schwimmender Fisch zeichnet sich nicht nur durch seine Vorwärtsbewegung aus. Um Vortrieb zu generieren, bewegt er Körper und Flossen glei- KAPITEL 4. KONZEPT 42 chermaßen. Um diese Bewegung zu simulieren, wurde im ersten Ansatz darauf zurückgegriffen, für jede Körperstellung ein eigenes Modell zu laden. Zwischen den einzelnen Modellen wird im Zuge der Animation ohne Interpolation umgeschalten. Um den dadurch bedingten statischen Eindruck zu vermeiden, wäre der Umstieg vom OBJ - auf das MD2 -Format ein geeigneter Ansatz. Dieses Format unterstützt die Interpolation zwischen einzelnen durch Keyframes vorgegebene Posen. Eine Portierung des Modelloaders für Processing steht ebenfalls zu Verfügung. 4.8.3 Oberflächenwellen Neben den Wasserströmungen treten an der Oberfläche des Dry Garden MR auch Wellen auf, sobald ein Fisch diese erreicht hat, bzw. ein Benutzer einen Stein auf dessen Oberfläche platziert. Auch diese Wellen verfolgen ein grafisch sehr einfaches Konzept. Ausgehend vom Zentrum der Interaktion werden konzentrische Kreise gezeichnet, deren Alpha-Wert in direktem Verhältnis zum Abstand vom Zentrum des Hindernisses steht. Je weiter sich diese Oberflächenwellen vom Zentrum entfernen, desto transparenter werden sie. Sobald die Transparenz den Wert 0 erreicht hat, wird ein entsprechendes Sichtbarkeitsflag auf gesetzt, und im Anschluss daran auch das Objekt selbst zerstört. Kapitel 5 Implementierung Das folgende Kapitel behandelt die Implementierung, des in Kapitel 4 beschriebenen Konzeptes. Ausgangspunkt stellt die Beschreibung der Struktur des Dry Garden MR dar. Die so gewonnene Übersicht, wird anschließend durch die Beschreibung der konkreten Umsetzung der eingesetzten Algorithmen vertieft. Weiters werden Besonderheiten die bei der Verwendung der zum Einsatz gekommenen Bibliotheken auftreten, durch den Einsatz kurzer aber aussagekräftiger Codebeispiele erläutert. Dadurch wird vermittelt, welche Schritte notwendig sind, um eine Bildverarbeitung mit Hilfe des ARToolkits bzw. ein Rendering durch den Einsatz von Processing zu ermöglichen. 5.1 Struktur Der folgende Abschnitt beschreibt die Struktur der Gesamtinstallation (vgl. dazu auch Abbildung 5.1). Diese setzt sich aus zwei Hauptbestandteilen zusammen. Interaktionserkennung und Rendering. Im weiteren Verlauf werden diese als eigenständige Applikationen entwickelten Module als Renderclient und Interaktionsserver bezeichnet. Zu deren Implementierung kamen unterschiedliche Programmiersprachen zum Einsatz. Java in Kombination mit Processing für den Renderclient und C zur Implementierung des Interaktionsserver s. Um einen Datenaustausch zwischen diesen beiden Komponenten zu ermöglichen, wurde die Kommunikation über TCP Socketverbindungen realisiert. Dadurch können die beiden Komponenten auf zwei verschiedenen PC s ausgeführt werden. Dies ist auch bei der konkreten Implementierung der Fall. Als Interaktionsserver dient ein PC unter MS Windows, der für den Anschluss der Kamera mit einer 6-poligen IEEE 1394 Schnittstelle ausgestattet ist. Über diese Schnittstelle wird die Kamera auch mit Strom versorgt. Als Renderclient kommt der PC der Bestandteil des iPoint ist, zum Einsatz. Dieser ist mit einer Dualhead-Grafikkarte ausgestattet, die wiederum das Signal für die beiden zum Einsatz kommenden Projektoren liefert. Das 43 KAPITEL 5. IMPLEMENTIERUNG 44 Abbildung 5.1: Strukturdiagramm des Dry Garden MR. Signal des ersten Ausganges wird zusätzlich mit Hilfe eines Videosplitters aufgeteilt. Diese Vorgehensweise gibt dem Softwareentwickler bzw. Administrator der Applikation die Möglichkeit das Bild über einen Kontrollmonitor zu überprüfen. Die Gliederung des Kapitels folgt dieser zweigeteilten Struktur und ist ebenfalls in die Beschreibung von Interaktionsserver und Renderclient geteilt. 5.2 5.2.1 Interaktionsserver Struktur Der Interaktionserver wurde in mehrere Module aufgeteilt um einzelne Komponenten bei Bedarf einfach austauschen zu können. Dadurch kann mit Hilfe einer einzigen Preprozessoranweisung zwischen der Interaktionserkennung mittels Kamera und einer Debugversion umgeschalten werden. Diese Debugversion generiert Positionen für die Steine an der Oberfläche, für Hände und für Löcher in der Granulatschicht, sowie die Richtung der Interaktion entsprechend der Vorgaben des Benutzers via Keyboard. Der Ressourcenverbrauch der Debugversion ist minimal. Dadurch kann diese problemlos KAPITEL 5. IMPLEMENTIERUNG 45 gleichzeitig auf demselben Rechner wie der Renderclient ausgeführt werden. Eine solche Debugversion zu erstellen ist im Allgemeinen bei der Arbeit an einer Medieninstallationen äußerst hilfreich, da dies den Entwicklungsprozess vom komplexen Hardwaresetup trennbar macht. Wie beschrieben kommt zur Erfassunf und zur Analyse der Interaktionsdaten das ARToolkit zum Einsatz. Dieses steht als Bibliothek für die Programmiersprache C zu Verfügung. Aus diesem Grund ist auch der restliche Interaktionsserver komplett in C implementiert. Die erwähnte Strukturierung erfolgte daher nicht durch ein objektorientiertes Softwaredesign im klassischen Sinn, sondern durch ein Aufteilen in mehrere Quelldateien. Die beiden Hauptbestandteile des Interaktionsservers stellen die Interaktionserkennung sowie die Implementierung der Netzwerkkommunikation dar. Die folgenden Abschnitte gehen detailliert auf diese beiden Komponenten ein. 5.2.2 Ablauf Nach erfolgreicher Initialisierung von Viewport und Displaymode findet die Initialisierung der Kamera statt. Sobald diese abgeschlossen ist, wird einmalig das Maskierungsbild anhand einer zuvor generierten Datei zur Beschreibung der Region of Interest erstellt. Im nächsten Schritt wird parallel dazu die Netzwerkkommunikation in einem neuen Thread gestartet. Diese beiden Threads werden in der Folge als Bildverarbeitungs-Thread und als Netzwerk -Thread bezeichnet, und jeweils in einem eigenen Abschnitt detailiert beschrieben. 5.2.3 Interaktionserkennung Nach Abschluss der Initialisierungsphase geht der Bildverarbeitungs-Thread in den Mainloop über. Dieser wird bis zum Beenden der Applikation durchlaufen und beinhaltet die folgenden Schritte: 1. Aktuelles Kamerabild anfordern. 2. Kamerabild maskieren. 3. Differenzbild erstellen. 4. Thresholds für Hindernisse und Löcher bilden. 5. Binäre Regionen der Threshold-Bilder finden. 6. Features (Hauptachse, Exzentrizität) der Regionen berechnen. 7. Koordinaten der Regionen normalisieren. Zum besseren Verständnis werden in den folgenden Abschnitten, die einzelnen Schritte des Mainloops genauer betrachtet. Die Darstellung der Ergebnisse dieses Kapitels finden sich in Abbildung 5.2. KAPITEL 5. IMPLEMENTIERUNG 46 (a) (b) (c) (d) (e) (f) Abbildung 5.2: Die einzelnen Schritte der Bildanalyse. Durch die roten Markierungen sind die Marker zum Abstecken der Region of Interest hervorgehoben. (a) Hintergrundbild, (b) Ausgangsbild, (c) Differenzbild, (d) Thresholdbild, (e) Regionenanalyse der dunklen Regionen, (f) Erkannte Interaktionsmuster. Der Stein ist rot, die Interaktionsspur grün und ein Loch in der Granulatschicht gelb umrandet. Die gezeigten Screenshots wurden mit den folgende Einstellungen erstellt: Unterer Threshold = 40, Oberer Threshold = 235, Threshold Differenzwert = 45. KAPITEL 5. IMPLEMENTIERUNG 47 Initialisierung der Kamera Der Interaktionsserver greift direkt auf das Point Greyscale SDK zur Analyse der Kamerabilder zu. Dies gewährleistet zwar einerseits optimale Performance (30 fps @ 640 x 480), bringt andererseits aber den Nachteil mit sich, hinsichtlich Softwareupdates vom Hersteller der Kamera abhängig zu sein. Dies ist im konkreten Fall vor allem deshalb ein Problem, weil folgender Fehler reproduzierbar auftritt. Überschreitet die CPU-Belastung 75%, liefert die Kamera keine weiteren Bilder. Durch den Einsatz kürzerer Kabel verbessert sich dieses Problem zwar, es tritt aber weiterhin vereinzelt auf. Laut Herstellerangaben, tritt das Phänomen nur in Verbindung mit bestimmten Firewire-Kontrollern auf. Für Tests mit anderer Hardware waren aber weder zeitliche noch materielle Ressourcen vorhanden. Somit bleibt lediglich die Hoffnung auf ein Softwareupdate des Herstellers. Der Zugriff auf das Point Greyscale SDK erfolgt nicht direkt, sondern über das ARToolkit 1 . Zu Beginn erfolgt die Initialisierung der Kamera. Das folgende Codebeispiel demonstriert die dazu notwendigen Schritte. !"" # $ % $& ' (#)*+ ,, & ' -#)*+ ! . . //// !""! 0# Kamerabild anfordern Das folgende Codesegment dient dazu, mit Hilfe des ARToolkits einen neuen Frame der Kamera anzufordern. Dies wird im weiteren Verlauf des Textes als Framegrabbing bezeichnet. 1 http://sourceforge.net/projects/artoolkit KAPITEL 5. IMPLEMENTIERUNG 48 1234 )! 5366 7 " 8 91:;21<+#;=+2<)51=27 >>?125)5@@+ >! !""!'A B " CC 3#D > B " Nach dem Framegrabbing wird überprüft, ob die aktuellen Daten gültig sind. Im Fehlerfall wird der Bildverarbeitungs-Thread für zwei Millisekunden suspendiert. Nach Ablauf dieser Zeitspanne wird erneut ein Bild der Kamera angefordert. Die Anzahl der Fehlversuche wird protokolliert. Übersteigt diese einen definierten Threshhold, wird versucht das Framegrabbing neu zu initialisieren. Aufgrund des erwähnten Fehlers im Point Greyscale-SDK, funktioniert diese Neuinitialisierung aber in den wenigsten Fällen. War das Framegrabbing erfolgreich, so steht der aktuelle Frame als eindimensionales Array an -Werten2 zu Verfügung. Bei den von der Kamera gelieferten Daten, handelt es sich um Grauwerte im Bereich [0..255]. Die 8 Bit die Werte zu Verfügung stellen, decken diesen Wertebereich exakt ab. Auffällig an dem gezeigten Programmcode ist eventuell die Funktion . Dabei handelt es sich um eine Kapselung der -Funktion. Jedes Modul des Interaktionsservers bietet diese Funktion. Für den Entwicklungsprozess ist eine solche Vorgehensweise hilfreich, weil dadurch die Ausgabe einzelner Module einfach de- und wieder reaktiviert werden kann. Ausgangspunkt der folgenden Ausführungen ist das unbearbeitete Bild der Kamera (vgl. Abbildung 5.3(a)). Die Kamera ist unterhalb des Tisches platziert. Der IR-Scheinwerfer leuchtet ihr von oben entgegen. Die Kamera arbeitet im Graustufenmodus, stellen sich der IR-Beleuchtung keine Hindernisse entgegen, ist das unbeeinflusste Bild somit weiß. Durch das auf dem Tisch verteilte Granulat, wird die IR-Beleuchtung abgeschwächt, Resultat ist ein relativ gleichmäßig verteiltes Grau. Werden an der Oberfläche Steine platziert, sind diese als dunkle Stellen im Bild erkennbar. Werden Löcher in die Granulatschicht gegraben, oder zeichnet der Benutzer Interaktionsmuster in die Granulatschicht, sind diese als annährend weiße Stellen im Bild zu sehen. Maskierung Wie aus Abbildung 5.3(a) hervorgeht, sind im Kamerabild, bedingt durch die kleine Brennweite des Objektives (f = 2.3mm) auch Teile des Innenle2 1234 ist ein Datentyp der durch das ARToolkit spezifiziert ist. Es handelt sich dabei um >! "&-Werte. KAPITEL 5. IMPLEMENTIERUNG (a) 49 (b) Abbildung 5.3: Blickfeld der Kamera. (a) Definition der Region of Interest. (b) Maskierung nicht relevanter Bildteile. bens des iPoint sichtbar. Um diese Teile auszublenden, muss die Region of Interest manuell eingestellt werden. Dies geschieht durch eine eigenständige Hilfsapplikation vor Start des Interaktionsservers. Mit der Maus werden die Eckpunkte der Region of Interest, gemäß der auf der Projektionsscheibe angebrachten Marker, bestimmt (vgl. das rote Viereck in Abbildung 5.3(a)). Diese Marker dienen ebenfalls der Kalibrierung der beiden Projektionen. Die Koordinaten der Eckpunkte der Region of Interest werden in eine Textdatei geschrieben, die beim Start des Interaktionsservers ausgelesen wird. Anhand dieser Daten wird einmalig ein binäres Maskierungsbild erstellt. Im Zuge des Threshholdings werden die Pixel, die im Maskierungsbild als Hintergrund markiert sind, auch im aktuellen Bild als Hintergrund markiert (vgl. Abbildung 5.3(b)). Erstellen des Differenzbildes Die Bildverarbeitung des Dry Garden MR erfolgt nicht absolut, sondern relativ zu einem Referenzbild. Diese differenzielle Vorgehensweise erlaubt es den inhomogenen Hintergrund, der durch die unterschiedliche Verteilung des Granulats bedingt ist, aus dem aktuellen Bild herauszufiltern. Somit fließen nur noch die Änderungen des Benutzers an der Oberfläche (Hinzufügen von Steinen, Graben von Löchern) in die weitere Analyse der Kamerabilder ein. Das Referenzbild wird bei Applikationsstart gespeichert, kann aber auch im weiteren Verlauf der Applikation neu gesetzt werden. Abbildung 5.2(a) zeigt das Referenzbild. Dieses enthält im Idealfall weder Steine, noch Interaktionsmuster. Abbildung 5.2(b) zeigt das aktuelle Bild. Deutlich erkennbar, sind ein Stein, ein strichförmiges Interaktionsmuster, sowie ein Loch in der Granulatschicht. Das Differenzbild (vgl. Abbildung 5.2(c)) wird durch einfa- KAPITEL 5. IMPLEMENTIERUNG 50 che Subtraktion der Pixelwerte von Abbildung 5.2(a) und Abbildung 5.2(b) generiert. Thresholding Zum aktuellen Zeitpunkt steht das Kamerabild als Array an Grauwerten zu Verfügung. Über dieses Array wird iteriert, und dabei die Maskierung des Hintergrundes sowie die Erstellung des Differenzbildes durchgeführt. Für jedes Pixel wird anhand eines Thresholds entschieden, ob es sich stark genug vom Hintergrund unterscheidet, um in die weiteren Berechnungen einzufließen. Ist dies der Fall, wird anhand zweier weiterer Thresholds zwischen den Steinen auf der Oberfläche, und den vom Benutzer in die Granulatschicht gegrabenen Löchern (in der Folge als Ziele referenziert) bzw. Interaktionsmustern unterschieden. Interaktionsmuster und Ziele sind heller als der Hintergrund, Steine naturgemäß dunkler. Zum momentanen Verarbeitungszeitpunkt finden sich im Bild vier Graustufen, mit jeweils unterschiedlicher Bedeutung. Graustufe 128 markiert im Vergleich zum Referenzframe dunklere Stellen (= voraussichtliche Steinbzw. Handpositionen ), Graustufe 250 markiert im Vergleich zum Referenzframe hellere Stellen (= voraussichtliche Interaktionsmuster bzw. Ziele), Graustufe 32 deckt die maskierten Bereiche ab. Die Differenz aller übrigen Pixel im Vergleich zum Referenzbild ist zu gering, sie werden mit dem Grauwert 0 gekennzeichnet und in der weiteren Verarbeitung nicht mehr berücksichtigt. In Abbildung 5.2(d) sind die 4 Graustufen deutlich erkennbar. Alle drei Threshholds können während der laufenden Installation verändert werden, um auf geänderte Beleuchtungsbedingungen reagieren zu können. Regionlabeling Das in vier Graustufen diskrete Bild, bildet die Basis für das Regionlabeling. Dies wurde nicht selbst implementiert, sondern verwendet eine Funktion des ARToolkits. Das folgende Codebeispiel zeigt dessen Aufruf. "!#>" 1234 !% % & % % 619+6;)5;= ")% 12)EF ")!% . Neben dem Pixelarray werden die folgenden Parameter angegeben: Die Dimensionen des Bildes in x- und y-Richtung, der Grauwert auf den der Labelingalgorithmus ansprechen soll, die Datenstruktur die die Labelinformatio- KAPITEL 5. IMPLEMENTIERUNG 51 nen im Abschluss an das Regionlabeling enthält, ein Pointer auf das Array in dem die Regionen eingetragen werden, sowie der Verweis auf ein Array welches temporär während des Regionlabelings zur Verwendung kommt. Bei der Implementierung dieses Verfahrens handelt es sich um einen speziellen Algorithmus der nur einen Durchlauf für das Regionlabelings benötigt. Eine daraus resultierende Besonderheit stellt der Zugriff auf die Pixel, die zu einer Region gehören, dar. Übliche Methoden des Regionlabelings weisen allen Pixeln einer Region ein konstantes Label zu. Nicht so die Methode des ARToolkits. In Abbildung 5.2(e) ist deutlich erkennbar, dass für eine zusammenhängende Region mehrere unterschiedliche Labels (erkennbar an den unterschiedlichen Graustufen) vergeben werden. Der Zugriff auf die Pixel dieser zusammengehörenden Region gelingt daher nur über ein spezielles Codekonstrukt. Das folgende Codebeispiel demonstriert dessen Anwendung. . & " ! )! $")!GH ! & - & - &CC7 ( ( CC7 )! 8 $$ .G)!IEH !6" 7 "! ! ")!DG&(#)*+ C H DJJ B 7 ! ")!DG&(#)*+ C H B B )!CC B Da das Regionlabeling nur jeweils Regionen einer Graustufe markiert, müssen für Steine bzw. Handpositionen und Ziele bzw. Interaktionsmuster zwei separate Bilder generiert werden. Die Ergebnisse sind nach Abschluss des Regionlabelings in jeweils einem eigenen struct gespeichert (vgl. Abbildung 5.2(e)). Dieses beinhaltet für alle detektierten Regionen neben der für diese Region vergebenen einzigartigen ID, auch deren aktuelle Position und Fläche (= Summe aller Pixel). Feature Extraktion Je nach Art der Region werden unterschiedliche Daten berechnet. Bei den Steinen ist nur die Position ausschlaggebend, bei den Interaktionsmustern KAPITEL 5. IMPLEMENTIERUNG 52 muss zuerst das relevante gefunden und anschließend die Richtung von dessen Hauptachse berechnet werden. Als relevante Region wird jene in Betracht gezogen, die die größte Exzentrizität aufweist. Stößt eine Region mit dem Rand der Interaktion zusammen, wird diese als Hand eines Benutzers interpretiert. Hierbei wird nicht mehr die Position des Mittelpunktes sondern die Längsseite des Rechtecks, welches von der Region beschrieben wird, als Position ermittelt und an den Renderclient übertragen (vgl. Abbildung 5.2(f)). Normalisierung Vor der Übertragung via Netzwerkprotokoll müssen alle berechneten Koordinaten vom Bildkoordinatensystem in den Wertebereich [−1..1] übergeführt werden. Dies geschieht durch den Aufruf der Funktion. Zur Berechnung der normalisierten Koordinaten greift diese auf das Konzept der Homografie zurück. Die Parameter der dafür notwendigen Homografiematrix werden einmalig beim Programmstart generiert. Dazu wird einmal mehr, auf die Koordinaten der Region of Interest zurückgegriffen. 5.2.4 Netzwerkkommunikation Zur Netzwerkkommunikation wird zunächst der entsprechende TCP-Socket initialisiert, und an den für den Interaktionsserver spezifischen Port gebunden. Danach wird ein eigener Thread gestartet, der in seinem Mainloop auf einen Request des Interaktionsclients wartet. Zur Implementierung kommt die Funktion !" des ARToolkits zum Einsatz. Sobald ein Request einlangt, wird anhand des ersten Bytes, des empfangenen Datenstroms überprüft, ob dieser Request vom Renderclient stammt. Ist dem so, setzt der Interaktionsserver eine DGMR-Response zusammen, und sendet diese über die bestehende Socketverbindung zurück an den Client. Für eine detaillierte Beschreibung dieser Kommunikation sei auf Abschnitt 5.3.1 verwiesen. 5.3 Kommunikation der Komponenten Um größtmögliche Flexibilität zu gewährleisten, erfolgt die Kommunikation zwischen dem Interaktionsserver und dem Renderclient über TCP-IP Sockets. Somit ist es möglich diese beiden Komponenten der Gesamtinstallation auf zwei verschiedenen Rechnern auszuführen. Um die Kommunikation der Sockets in C (Interaktionserkennung) und Java (Rendering) auf eine solide Basis zu stellen, wurde ein eigenes Netzwerkprotokoll spezifiziert und implementiert. Der Ablauf der Kommunikation folgt einer klassischen Client-Server Architektur. Die Interaktionskomponente analysiert das Videobild, berechnet die Interaktionsdaten und stellt sie zur Verfügung. Der KAPITEL 5. IMPLEMENTIERUNG 53 Abbildung 5.4: Ablaufdiagramm der Gesamtinstallation. mit diesem Interaktionsserver verbundene Renderclient, fragt diese Informationen in einem regelmäßigen Zeitintervall ab und passt das Rendering entsprechend an. Eine Beschreibung des Protokolls folgt im nächsten Abschnitt. 5.3.1 Netzwerkprotokoll Wie beschrieben haben es die Spezifika der Installation erfordert, ein eigenes Protokoll zu spezifizieren. Dieses wird in Folge DGMRP genannt. Es handelt sich dabei um ein Binärprotokoll. Unnötige Overheads werden vermieden, die übertragenen Datenmengen betragen wenige Byte. Laut Protokoll wird die Kommunikation vom Client initiiert. Dieser sendet einen Request an den Interaktionsserver. Dieser Request ist ein Byte lang KAPITEL 5. IMPLEMENTIERUNG 54 und enthält eine eindeutig definierte ID. Entspricht die ID des Requests nicht der Spezifikation, wird dieser vom Server verworfen. Anderenfalls, wird mit einer entsprechenden Response geantwortet. Diese hat folgenden Aufbau: • Byte 0: Framedelimiter • Byte 1-2: Anzahl der Messages Die unterschiedlichen Interaktionsdaten werden in verschiedene Messages gepackt und gemeinsam im Rahmen einer Response verschickt. Eine solche Message hat wiederum folgenden Aufbau: • Byte 0: Message-ID • Byte 1-2: Länge der zu übertragenden Daten • Byte 4-65535: Nutzdaten Das vorgestellte Protokoll hat den Vorteil, dass jederzeit neue Messagetypen definiert werden können, ohne an der Datenübertragung an und für sich etwas ändern zu müssen. Soll die Installation um weitere Interaktionsmuster erweitert werden, müssen nur neue Message-IDs und entsprechende Messages definiert werden. Auch ohne Änderung an der Implementierung des Clients funktioniert die Kommunikation mit diesem weiterhin ohne Probleme. Messages mit unbekannten IDs werden einfach verworfen. Nicht zu vergessen ist natürlich die Implementierung zur Erkennung bzw. zur Reaktion auf die neuen Muster zu beiden Seiten der Kommunikation. Bei den verschickten Daten handelt es sich hauptsächlich um normalisierte Koordinaten. Da diese im Wertebereich [−1..1] liegen, beschreibt der folgende Abschnitt die Übertragung von Fließkommazahlen. Übertragung von Fließkommazahlen Zur Übertragung von Fließkommazahlen im Wertebereich [−1..1] kommen beim Dry Garden MR vier Byte große Integerwerte zum Einsatz. Vor der Übertragung, wird jede Fließkommazahl mit einem konstanten Faktor multipliziert. Um Vorzeichen zu erlauben, beträgt dieser Faktor die Hälfte der größten durch vier Byte darstellbaren Ganzzahl. Das Ergebnis dieser Multiplikation wird in einen vier Byte großen Integerwert umgewandelt. Diese vier Byte werden sequentiell übertragen. Clientseitig werden die vier Byte gelesen und wiederum zu einer einzigen Ganzzahl kombiniert. Durch Division mit derselben Konstanten, die bei deren Erstellung am Interaktionsserver zum Einsatz kam, wird die Zahl wieder in den Bereich [−1..1] gebracht. Die Genauigkeit dieser Technik ist auf 1/1073741823 beschränkt. KAPITEL 5. IMPLEMENTIERUNG 5.4 55 Renderclient Im folgenden Abschnitt wird die Implementierung des Renderings beschrieben. Dies ist laut Vorgabe der Künstlerin Non-Photorealistic. Zur Darstellung der Daten kommt die relativ neue Programmierumgebung Processing zum Einsatz. Eine Einführung in deren Verwendung bildet den ersten Teil des nächsten Abschnittes. Weiters folgt eine Beschreibung der Klassenhierachie, sowie der Ablauf eines Renderdurchlaufes. 5.4.1 Einführung in Processing Zur Einführung sei an dieser Stelle [Fry06] zitiert. Processing is an open source programming language and environment for people who want to program images, animation, and sound. It is used by students, artists, designers, architects, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is developed by artists and designers as an alternative to proprietary software tools in the same domain. Processing ist also Programmiersprache und Entwicklungsumgebung gleichermaßen. Der in dieser Sprache entwickelte Quellcode ist Java-kompatibel. Wird ein mit Processing entwickeltes Programm, in der Processing Nomenklatur Sketch genannt, mit der mit dem Projekt ausgelieferte Programmierumgebung ( Processing Development Environment, PDE ) ausgeführt, so wird dessen Quelltext in Java-Code umgewandelt. Dieser wird mit Hilfe des mit der Installation ausgelieferten Jikes-Compilers, zu Java Bytecode kompiliert. Die so generierten Class-Dateien laufen als Java-Applet. Sketchbook Jeder Sketch liegt, laut Definition, in seinem eigenen Ordner, der den gleichen Namen wie die Datei des Sketches trägt. Diese trägt die Dateiendung .pde“. Der Ordner enthält mit allen Unterordnern die gesamten Daten, die ” zur Ausführung des Sketches notwendig sind. Dieser Ordner wird als Sketchbook bezeichnet. Neben dem Quellcode gehören zu einem Sketch in den meisten Fällen noch weitere Daten (Fonts, Bilder, Modelle,..). Fügt man diese mittels der PDE dem Sketchbook hinzu, wird automatisch ein Unterordner Data angelegt. In jedem Fall sollte der Entwickler die Übersicht über diesen Ordner bewahren. Wird der fertige Sketch als Applet exportiert, werden alle zum Sketch gehörenden pde-Files in, für Applets zulässigen Java-Code übersetzt, kompiliert, und die so entstandenen Class-Dateien gemeinsam KAPITEL 5. IMPLEMENTIERUNG 56 mit allen Dateien die im Data-Ordner liegen, in einem einzigen Java-Archiv (Dateiendung: jar Komprimierung:zip) archiviert. Liegen nicht benötigte Dateien im Data-Ordner, wird die erzeugte jar -Datei unnötig groß. Durch diese Möglichkeit des Exports können Sketches sehr einfach im Web publiziert werden. Zur Betrachtung wird dann nur noch ein Javafähiger Browser benötigt. Seit Version 0115 gibt es sogar die Möglichkeit in solchen Sketches den OpenGL-Renderer zu verwenden. Neben der Export-Funktion für Applets, bietet die PDE seit der Version 0097 auch die Funktion Export to Application. Durch die Auswahl dieser Option werden Standalone-Versionen des Sketches für die Betriebssysteme Windows XP, Linux und MacOS X erstellt. Diese benötigen keine JavaLaufzeitumgebung zur Ausführung und können im Fullscreen-Modus betrieben werden. Jikes Bei Jikes 3 handelt es sich um ein durch IBM initiiertes Projekt, dessen Ziel es ist, die Entwicklung und Ausführung von Java-Programmen zu beschleunigen. Der mit Processing ausgelieferte Java-Compiler, ist eine Entwicklung dieses Projektes. Die im Vergleich zum von Sun entwickelten javac-Compiler bessere Performance, macht sich nur in größeren Projekten bemerkbar [Gri99]. Die Entwickler von Processing haben sich für dessen Einsatz vor allem deshalb entschieden, weil er neben Microsoft Windows auch für Linux und MacOS X zu Verfügung steht. Processing Development Environment Die PDE ist eher an Einsteiger in die Programmierung an und für sich gerichtet, und deshalb sowohl was Bedienung als auch Möglichkeiten anbelangt, bewusst einfach gehalten. Abbildung 5.5 zeigt einen entsprechenden Screenshot. Rechts ist das Ausgabefenster erkennbar, links die Programmierumgebung. Bei der Arbeit an komplexeren Projekten, wird die PDE eher nicht zum Einsatz kommen, ein Befehl sei dennoch der Vollständigkeit halber erwähnt. Durch Selektion des Menüeintrags Tools → Create Font ... ist es möglich einen beliebigen Systemfont in ein Processing-kompatibles Format umzuwandeln. Die PDE steht unter GPL (GNU Public License), ist also im Sourcecode frei verfügbar. Veränderungen an dieser, müssen vom Entwickler wieder unter GPL veröffentlicht werden. Anders verhält es sich bei der Processing Kern-Bibliothek (core.jar ), die für den Zugriff auf Processing Funktionen mit jedem Projekt ausgeliefert werden muss. Diese steht unter LGPL (GNU Lesser General Public License) was zur Folge hat, dass darauf basierende Werke auch Closed Source veröffentlicht werden dürfen. 3 http://jikes.sourceforge.net/ KAPITEL 5. IMPLEMENTIERUNG (a) 57 (b) Abbildung 5.5: Screenshot der Processing Development Environment. (a) Entwicklungsumgebung. (b) Ausgabefenster. Dies stellt beim Einsatz in kommerziellen Projekten ein wichtiges Kriterium dar. Koordinatensystem In Processing kommt ein kartesisches Koordinatensystem zum Einsatz, dessen Ursprung sich in der linken oberen Ecke des Ausgabefensters befindet. Beim Einsatz eines Renderers mit 3D-Funktionalität, haben Objekte die hinter der Bildschirmebene liegen eine negative z-Koordinate. Es handelt sich also um ein rechtshändiges Koordinatensystem. Dies wahrt die Konsistenz zum ebenfalls rechtshändigen Weltkoordinatensystem von OpenGL. Entwicklung unter Eclipse Die PDE, ist bewusst einfach gehalten. Dies erleichtert eine einfache und effiziente Bedienung, bei der Arbeit an komplexeren Projekten vermisst man aufgrund dessen aber äußerst nützliche Features wie einen Debugger, sowie die Möglichkeit von Unit-Tests, einer Code-Completion oder eines Refacto- KAPITEL 5. IMPLEMENTIERUNG 58 rings. Der folgende Abschnitt gibt daher eine Anleitung wie man die Entwicklungsumgebung Eclipse für den Einsatz von Processing konfigurieren kann. Diese Beschreibung bezieht sich auf Eclipse in der Version 3.1.0. Nach dem Start von Eclipse wird über File → New → Project..“ ein neues Projekt angelegt. Anschließend wird Java ausgewählt und ein Name für das neue Projekt vergeben. Anschließend wird mit dem Button Add External JAR“ des Reiters Li” ” braries“ das Java Archiv der Processing Kernbibliothek ( core.jar“) inklu” diert. Im Normalfall genügt es nun die Konfiguration des Projektes, mit Finish zu beenden. Durch core.jar“ werden allerdings nur die Kernfunktionen ” von Processing abgedeckt. Möchte man die durch externe Bibliotheken zu Verfügung gestellte Funktionen, wie Zugriff auf Videomaterial, obj -Loader, etc. einsetzen, müsste man jedes der als Java Archiv ausgelieferten Dateien einzeln zu diesem Projekt hinzufügen. Verwendet man bestimmte Bibliotheken öfter, so macht erscheint es sinnvoll, die von Eclipse angebotene Funktion der Userlibraries zu nutzen. Dabei fasst man einmalig eine bestimmte Anzahl an jar -Dateien zusammen, und muss bei der Erstellung eines neuen Projektes diesem nur noch diese eine Userlibrary hinzufügen. Nachdem das Projekt nun eingerichtet ist, kann mit der Entwicklung begonnen werden. Um die von Processing zu Verfügung gestellten Funktionen zu verwenden, muss eine eigene Klasse angelegt werden, die von # abgeleitet ist. Zur Ausführung des Programms wird die Option Run as → Java Applet ausgewählt. Auf diese Art gestartete Sketches laufen im Appletviewer von Eclipse. Soll ein Sketch (im Codebeispiel trägt dieser den Namen HelloP5) als Java-Applikation ausgeführt werden, gelingt dies durch Hinzufügen der folgenden Codezeilen. >" #!GH !7 1/. #!GH7KJB B Programmiermodi Um für Programmierer vom Einsteiger bis zum erfahrenen Experten ein geeignetes Werkzeug darzustellen, stehen in Processing insgesamt drei verschiedene Modi der Programmierung zu Verfügung. Die nächsten Abschnitte geben darüber Überblick. Basic Mode: Die einfachste Art Sketches zu programmieren wird als Basic Mode bezeichnet. In diesem Modus werden Konzepte wie Funktionen oder Variablen vor dem Programmierer verborgen. Dieser Modus ist an Einsteiger in die Programmierung gerichtet. Es folgt ein kurzes Beispiel. KAPITEL 5. IMPLEMENTIERUNG 59 .! D% D & "!> I "!> DJJ " I > .! > & ED4% ED4% ED4 ! .! ! < 0+5=+2 . E% E% JJ% JJ Continous Mode: Um anspruchsvollere Sketches zu entwickeln, kann auf den so genannten Continous Mode zurückgegriffen werden. Dieser gibt zwei Methoden vor. Die Methode , die nur beim Start der Applikation ausgeführt wird (die Anweisung unterbindet ein mehrfaches Ausführen), sowie die Methode "$ welche den Renderloop repräsentiert. Zusätzlich können eigene Funktionen definiert werden. Außerdem besteht die Möglichkeit, auf Maus und Keyboard zuzugreifen. KAPITEL 5. IMPLEMENTIERUNG 60 >7 D% D "!> DJJ ED4% ED4% ED4 < 0+5=+2 ! B I! 6 .7 .! "!> DJJ > 7 >"> " DJJ% % L B 7 "> ED4% ED4% ED4 D B B > . >0 0 & >07 >0 > ) D B >0 C E >0 CC7 E% E% )% ) B Java Mode: Neben der PDE, ist auch die Processing-Kernbibliothek sowie alle diese erweiternden Bibliotheken in Java implementiert. Erfahrenen Programmierern eröffnet sich somit die Möglichkeit, direkt in Java zu ent- KAPITEL 5. IMPLEMENTIERUNG 61 wickeln. In einem solchen Fall dient Processing nur noch als Bibliothek zur Grafikausgabe. Es folgt die beispielhafte Implementierung eines Sketches im Java Mode. >" <&: 1 7 >7 & >> " +56% L:% D:% M11D: D% D% +56 < 0+5=+2 ED4% ED4% ED4 B B .7 "!> DJJ >(% >-% D% D B Rendermodes Von Processing werden im Moment vier verschiedene Rendermodes unterstützt. Um zwischen diesen umzuschalten, muss der letzte Parameter der -Anweisung spezifiziert werden. Zur Auswahl stehen %&' #' #(' und #). Diese verschiedenen Rendermodes seien in Folge kurz beschrieben. JAVA2D: Wird kein Rendermode explizit definiert kommt dieser Modus zum Einsatz, der auf das AWT (Abstract Window Toolkit) zur Grafikausgabe zurückgreift. Selbstverständlich eignet sich der Einsatz dieses Rendermodes nur zur Ausgabe zweidimensionaler Grafiken. P2D: Bei diesem Rendermode kommt ebenfalls ein Softwarerenderer zur Ausgabe zweidimensionaler Grafik zum Einsatz. Dieser unterscheidet sich vom Java 2D -Mode durch bessere Performance, aber eine visuell geringere Qualität. P3D: Dieser Rendermode setzt zur Ausgabe dreidimensionaler Grafik auf einen Softwarerenderer. Optimaler Einsatzzweck ist die Ausgabe von 3D Grafik, bei Publikation des Sketches im Web. KAPITEL 5. IMPLEMENTIERUNG 62 OPENGL: Um auf die OpenGL-Hardwarebeschleunigung der Grafikkarte zurückzugreifen, steht dieser Rendermode zu Verfügung. Der Zugriff auf OpenGL unter Java wird in diesem Fall durch JOGL4 gewährleistet. Bei JOGL handelt es sich um Java Bindings for OpenGL“ (JSR-231). Diese er” möglichen den direkten Zugriff auf alle OpenGL-Befehle nach Spezifikation 2.0. Texturierung Dreidimensionale Objekte zu texturieren funktioniert in Processing sehr ähnlich wie bei anderen Grafik-APIs. Für jeden Vertex der Geometrie werden entsprechende Texturkoordinaten vergeben. Deren Wertebereich wird durch die Wahl des Texturmodes bestimmt. Durch * " +', liegt dieser zwischen 0 und 1. Wird * " ), gesetzt, beziehen sich alle spezifizierten Texturkoordinaten auf das Bildkoordinatensystem. Dabei reichen die Werte von 0 bis Höhe bzw. Breite der Bilddatei in Pixeln. Sehr einfach gestaltet sich auch die Erstellung von Texturen aus vorhandenen Bilddateien. # stellt dazu die Methode "- zum Instantieren von #--Objekten zu Verfügung. Unterstützt werden im Moment Dateien vom Typ GIF, JPEG, TGA und beim Einsatz von Java 1.3 oder aktueller auch PNG. Um die Transparenz von PNG- und GIF -Dateien für die erstellte Textur zu übernehmen, sollte für das #--Objekt die Instanzvariable - " auf ) gesetzt werden. Das folgende Codebeispiel zeigt eine Methode zum Zeichnen eines texturierten Rechtecks. 4 https://jogl.dev.java.net/ KAPITEL 5. IMPLEMENTIERUNG 63 . > !% . ! .2!=> . % !% )! >% 1 7 >I! & & . $ N> /DJJ% DJJ% DJJ% DJJ " .! ! /"!#1/O31:# & > />> & !& >I ! //% % /&% % //% % /&% % E / /% % /&% E% E / /% % /&% E% B / # 5.4.2 Softwarearchitektur Der folgende Abschnitt beschreibt das zum Einsatz gekommene Klassendesign. Einen ersten Überblick erlangt man bei Betrachtung des Klassendiagramms 5.6. In Folge sind die darin eingetragenen Klassen aufgelistet und näher beschrieben. Die Implementierung dieser Architektur erfolgte in Java, um für das Rendering Processing einsetzen zu können. Renderclient: Die Klasse "! ist die zentrale Klasse des Renderclient. Sie beinhaltet die Eintrittsmethode und kümmert sich um die Initialisierung der Applikation. Sie implementiert das Interface . ", welches den Zugriff auf die Positionen der Steine an der Oberfläche, sowie die beiden Renderer garantiert. Dabei stellt die Klasse "! den zentralen Angelpunkt der Applikation dar. Für die Frontprojektion (") sowie für die Rückprojektion (") hält sie jeweils ein eigenes Objekt sowie eine Instanz eines $/, der die Kommunikation mit dem Trackingserver nach DGMRP übernimmt. Renderer: Bei der Klasse " handelt es sich um die gemeinsame Oberklasse für " und ". Diese unterscheiden sich hauptsächlich in der Art der dreidimensionalen Objekte die sie enthalten, ansonsten gelten die folgenden Aussagen jedoch für Objekte beider Klassen. " ist von der Klasse # abgeleitet, und hat dadurch, Zugriff auf KAPITEL 5. IMPLEMENTIERUNG 64 Abbildung 5.6: Klassendiagramm des Renderclient. alle Funktionen von Processing. Vorgegeben sind damit auch die Methoden zur Initialisierung und "$ zum Rendering. Zur Bezeichnung von Instanzen der Klasse " und deren Unterklassen wird im weiteren Verlauf des Textes der Begriff " verwendet. Beim Instantieren eines " werden im Konstruktor unter anderem die Datenstrukturen, welche die zu rendernden Objekte speichern, und die Projektionsmatrix initialisiert. Zugriff auf Processing-Methoden darf erst innerhalb von und nicht etwa schon im Konstruktor erfolgen, da das Objekt erst zu diesem Zeitpunkt initialisiert ist. In dieser werden grundlegende Einstellungen für das Rendering mit Processing getroffen. Unter anderem werden der Rendermode (vgl. 5.4.1) die Auflösung der Quadrics 5 5 Quadric Surfaces: Durch quadratische Gleichungen beschriebene gewölbte Oberflächen wie z.B.: Kugeln, Zylinder, etc.. KAPITEL 5. IMPLEMENTIERUNG 65 und der Texturmodus 5.4.1 definiert, sowie die Tightness die bei der Kurvendarstellung zum Einsatz kommt, definiert. Im konkreten Fall wird das Antialiasing, durch 0 aus Performancegründen ausgeschalten. Die Methode "$, die das Rendering, übernimmt, folgt als Codebeispiel. >" .7 :.! P "Q "Q " I8 "& 2 9 2 = B :.! '$- setzt die aktuelle Beleuchtung, die Hintergrundfarbe sowie die Kameramatrix. Durch den Aufruf von "12! werden die 12!('-Instanzen deren Verweise der " in einer typsicheren Collection hält, je nach gesetzten Sichtbarkeitsflags dargestellt. Dabei wird über alle Objekte dieser Liste iteriert und jeweils die Methode " aufgerufen. Im weiteren Verlauf wird auf diese Liste als renderList referenziert. Aus Performancegründen ist die 3 nicht Threadsafe. Da aber neben dem Renderthread auch der Netzwerkthread auf diese zugreift, muss die Synchronisierung manuell durchgeführt werden. Abschnitt 5.4.5 geht näher darauf ein. Die Methode ", dient in den konkreten Klassen " und " dazu um die 12!('-Objekte deren Referenzen sie enthalten zu rendern. Die Methode '$- zerstört, während des Renderzyklus als zu löschend markierte Objekte endgültig und entfernt die entsprechenden Referenzen aus der renderList. Um den Zugriff auf die zu rendernden Objekte bestimmter Typen zu optimieren, hält der Renderer nicht alle 12!('-Instanzen in der renderList, sondern stellt für Fische, Blätter und Steine eigene Datenstrukturen zu Verfügung. Beim Aufruf der Methode ""12! wird der Typ des hinzuzufügenden Objektes geprüft, und somit die Zuordnung zu einer dieser spezialisierten Datenstrukturen sichergestellt. Mittels Aufruf von 412!, kann ein Objekt der renderList gelöscht werden. Dadurch wird das zu löschende Objekt der 3 12!4 hinzugefügt. Nach Abschluss des aktuellen Renderzyklus, werden in der Methode ! alle Objekte dieser Liste, aus der renderList gelöscht. Zum Abschluss wird auch 12!4 geleert. Diese Vorgehensweise ist notwendig, da die Elemente der verschiedenen renderLists KAPITEL 5. IMPLEMENTIERUNG 66 auch untereinander verknüpft sind. Ein Entfernen von Elementen während eines Renderzyklus, würde infolge dessen zu Inkonsistenzen im Datenmodell führen, was unbedingt vermieden werden muss. Zu Dokumentationszwecken (unter anderem zur Erstellung dieser Diplomschrift) kann ein " während der Laufzeit, in den Debugmodus versetzt werden. In diesem werden neben Statusinformationen wie der aktuellen Framerate, auch die zur Pfadanimation berechneten Pfade visualisiert. Dabei kommt die processing-Funktion !4 zum Einsatz. Mittels eines Aufrufes von !4- wird zur Darstellung der Kurven der gleiche Wert für die Tension gewählt, wie er auch bei der Interpolation der Pfadpositionen zum Einsatz kommt. Somit entspricht die dargestellte Kurve, dem zur Interpolation eingesetzten Pfad. RendererTop: Diese Klasse wurde entworfen, um das Rendering der Frontprojektion zu implementieren. Dementsprechend werden Instanzen der an der Oberfläche treibenden Objekte in typsicheren 3 verwaltet. Weiters stehen mit "11 # und "5# Methoden zu Verfügung, um die Berechnung neuer Pfadpositionen für diese Objekte zu initiieren. Die Berechnung neuer Pfadpositionen findet in der Klasse #6 ! , durch ! ! ##1! 4" statt. Mit Hilfe der so berechneten Positionen wird ein neues Path-Objekt instantiert. Um das Update der renderLists möglichst schnell durchführen zu können, werden alle Path-Objekte zuerst einer Hilfsliste hinzugefügt. Erst nachdem für alle Objekte an der Oberfläche neue Pfade berechnet wurden, werden die Animationspfade der bestehenden Objekte gegen die soeben neu berechneten Pfade ausgetauscht. Dies erfolgt sehr performant, da keine Objekte, sondern nur Referenzen auf Objekte kopiert werden. RendererBottom: Zur Realisierung der Rückprojektion wird ein Objekt der Klasse " instantiert. Zusätzlich zu den von " geerbten Datenstrukturen enthält der " jeweils eine 3 mit den Positionen der Ziele, sowie den Oberflächenwellen. Object3D: Diese Klasse wurde als Basisklasse für alle dreidimensionalen Objekte des Dry Garden MR entwickelt. Entsprechend enthält sie Instanzvariablen für Position, Rotation, Skalierung, Farbe und Animationsgeschwindigkeit, sowie mehrerer Flags zur Beeinflussung des Stils des Renderings. In der Methode "- werden all diese Statusflags abgefragt, und das Objekt entsprechend im Raum platziert und ausgerichtet. Um ein 12!('-Objekt darzustellen genügt der Aufruf der Methode ". Dies bewirkt den internen Aufruf von "-. Weiters definiert die Klasse die abstrakte Methode "$. Von 12!(' abgeleitete Klassen, müssen diese überschreiben, und darin den Quellcode, KAPITEL 5. IMPLEMENTIERUNG 67 der das Rendering für die Objekte der jeweiligen Klassen beschreibt, enthalten. DGMRProtokoll: Diese Klasse enthält die Definitionen der laut Protokoll vergebenen Message-IDs. Networklistener: Durch diese Klasse wird die Netzwerkkommunikation laut DGMRP implementiert. Nach dem Instantieren der Klasse durch den "6 wird mittels !!!04 die Verbindung zum Interaktionsserver hergestellt. Die dazu hergestellte Socketverbindung wird durch ein Objekt der Klasse 6! gekapselt. Dieses speichert die Verbindungsdaten zum Server und startet einen neuen Thread. Dessen Mainloop wartet eine definierte Zeitspanne (im konkreten Fall eine Sekunde), fordert danach neue Interaktionsdaten vom Interaktionsserver an und leitet diese dann an den ihm zugeordneten $/ weiter. Danach wird der Thread wieder für die definierte Zeitspanne suspendiert, neue Interaktionsdaten werden angefordert und zur Verarbeitung wiederum an den $/ weitergeleitet. Der $/ implementiert das Interface $/ und kann sich deshalb beim 6!-Objekt zum Abarbeiten der Interaktionsdaten, registrieren. Dazu implementiert er die Interface-Methode !'. Dieser wird der '0 übergebene und in einem mehrstufigen Prozess analysiert. Zuerst wird überprüft ob die Response auch wirklich vom Interaktionsserver kommt. Ist dies der Fall, wird anhand der Message-ID entschieden, an welche spezialisierte Methode die Daten weitergegeben werden. Pro Messagetyp ist eine solche Methode definiert. Innerhalb dieser werden aus dem Byte-Strom dann je nach Messagetyp die entsprechenden Interaktionsdaten-Objekte erstellt. Für Steine an der Oberfläche handelt es sich dabei um 1! ', für erkannte Löcher in der Granulatschicht um -' und für Handpositionen um 5"". Um die Erweiterungsmöglichkeit sicherzustellen, sind im DGMRProtokoll Message-IDs zur Übertragung von nicht-linearen Interaktionsmustern, sowie der Übertragung der Umrisse der interagierenden Hand (siehe dazu auch 4.6) bereits definiert. Animator: Diese Klasse stellt die gemeinsame Oberklasse für die unterschiedlichen Spezialisierungen von Animatoren dar. Jede Animatorklasse kümmert sich um die Animation eines bestimmten Wertes. Die bereits in dieser Klasse implementierten Methoden, die dadurch jedem zu Verfügung stehen sind: (zum Start), (zum Zurücksetzen) sowie ". Der Aufruf von " muss jedes Mal erfolgen, bevor der von einem animierte Wert abgefragt werden kann. KAPITEL 5. IMPLEMENTIERUNG 68 PathAnimator: Dieser animiert ein 12!(' entlang eines definierten Pfades. Neben der Position können auch die Rotationswinkel um die Achsen des lokalen Koordinatensystems (durch Vergleich mit der letzten Position, die zwischengespeichert wird) abgefragt werden. RippleAnimator: Dieser implementiert die Animation der unter 4.8.3 beschriebenen Oberflächenwellen. Nach erfolgreichem Update kann neben dem aktuellen Durchmesser auch der entsprechende Alphawert abgefragt werden. PathInterpolatorCatmul: Der # dient dazu, die relative Position entlang eines Pfades, entsprechend dem aktuellen Animationsfortschritt zu ermitteln. Da sich ein Pfad aus einer Menge diskreter Stützpunkte zusammensetzt, muss zur Ermittlung einer dreidimensionalen Position, zwischen den je nach Animationsfortschritt aktuellen Stützpunkten interpoliert werden. Diese Interpolation gelingt mit Hilfe eines Objektes der Klasse # 6 . Der relative Fortschritt (Wertebereich [0..1]) entlang des Pfades wird vom # ermittelt und die entsprechenden Stützpunkte vom #-objekt angefordert. Neben den Start- und Endpunkten des aktuellen Pfadabschnittes werden zusätzlich jeweils ein Punkt vor dem Start und ein Punkt nach dem Ende angefordert. Zwischen diesen vier Punkten wird die in 3.4.2 geschilderte Catmull-Rom Interpolation durchgeführt. SurfaceRipple: Berührt ein Fisch die Wasseroberfläche des Dry Garden MR, werden dadurch Wellen an dessen Oberfläche ausgelöst. Für jedes Auftreten solcher Wellen wird ein eigenes Objekt der Klasse 0! instantiert. Dieses beinhaltet wiederum eine fixe Anzahl an 12!Objekten, welche in einer 3 verwaltet werden. Weiters enthält es eine Referenz auf einen . Dieser berechnet auf Grundlage der seit dem letzten Update vergangenen Zeit, den aktuellen Durchmesser, sowie Alphawert für jedes einzelne 12!. Hierbei tritt ein weiterer Vorteil des Einsatzes von Processing zum Vorschein. Alphablending funktioniert sehr intuitiv. Der Programmierer muss weder wie in OpenGL üblich eine "! spezifizieren, noch muss er für die Tiefen-Sortierung aller Geometriedaten sorgen. Alleine den Alpha-Wert der aktuellen Füllfarbe kleiner als 255 zu setzen reicht aus, um mehr oder weniger transparent zu zeichnen. InteractionData: Diese Klasse bildet die Basisklasse für die Klassen zur Speicherung der verschiedensten Interaktionsdaten. Dazu hält sie eine Position, sowie eine eindeutige ID zur Nachverfolgung des Objektes über mehrere Frames. Diese wird im momentanen Entwicklungsstand, nur durch die Ähnlichkeit der Position gewährleistet. Dazu implementiert !' KAPITEL 5. IMPLEMENTIERUNG 69 das Interface 61 . Der Vergleich der Positionen, findet im normalisierten Wertebereich ([−1..1] statt. CircleData: Objekte dieser Klasse, dienen dem Speichern der Daten der Steine. Zusätzlich zu den Daten der Oberklasse !', wird der Radius eines Hindernisses gespeichert. Steine müssen nicht über mehrere Frames nachverfolgt werden, daher wird diesen keine eindeutige ID zugewiesen. HandData: Ein Objekt dieser Klasse, speichert die Positionsdaten einer Hand im normalisierten Koordinatensystem. TargetData: Objekte der Klasse -' nehmen die Positionsdaten und den Radius von erkannten Löchern in der Granulatschicht auf. PointList: Diese von 3 abgeleitete Klasse dient der Speicherung von Positionsdaten, die die Stützpunkte eines Pfades bilden. Da bei der Animation entlang eines Pfades die einzelnen Stützpunkte in der Reihenfolge ihres Vorkommens in der Liste durchlaufen werden, ist es beim Einfügen neuer Positionen in den Pfad unerlässlich, davor deren Reihenfolge zu prüfen. Aus diesem Grund stellt die # zusätzlich die Methode ""6!" zu Verfügung. Dabei wird für den einzufügenden Punkt, die Distanz vom Ursprung des Pfades ermittelt. Aufgrund dieser Information kann dann ein sortiertes Einfügen gelingen. Utilities: Diese Klasse enthält eine Vielzahl geometrischer Hilfsmethoden, die zum Beispiel Schnittpunkte zwischen Kreis und Gerade berechnen, oder die Umwandlung zwischen den verschiedenen Datentypen, die zum Beispiel eine zweidimensionale Position speichern bereitstellen. Da die Methoden dieser Klasse essentiell für die Funktionalität des Renderclient sind, wurden diese besonders intensiv getestet. Um diese Tests, komfortabel und nachvollziehbar zu gestalten, wurden sie unter dem Einsatz von % durchgeführt. 5.4.3 Ablauf Aus Abbildung 5.4 gehen Datenfluss und Ablauf der Gesamt-Installation hervor. Es folgt eine textuelle Beschreibung der Abläufe des Renderclients. Der $/ empfängt und interpretiert die Daten des Interaktionsservers. Anhand dieser Informationen instantiert er Objekte der Klassen 6! ', -' und 5"'. Diese werden dem "6 per Methodenaufruf übergeben und zur Instantierung von Objekten aus den entsprechenden von Object3D abgeleiteten Klassen herangezogen. Konkret KAPITEL 5. IMPLEMENTIERUNG 70 gelten folgende Zuordnungen. -' – -, 5"' – 5" sowie 6! ' – 1! . Diese Trennung der visuellen Repräsentation von den Daten, wird in der Informatik ganz allgemein als MVC -Architektur (MVC – Model View Controller ) bezeichnet (vgl. dazu Abbildung 5.7). Abbildung 5.7: MVC -Architektur der Gesamtinstallation. Das Model stellen die Objekte der Klassen -', 5"' und 6! ' dar. Der "! hält diese intern als Referenz, und stellt entsprechende Zugriffsmethoden zu Verfügung. Die View wird durch den Renderer implementiert. Dieser enthält die Objekte der von 12!(' abgeleiteten Klassen und stellt sie mit Hilfe von Processing dar. Controller ist im Fall des Dry Garden MR der Interaktionsserver. Der Benutzer kontrolliert demzufolge mittels des TUI, das sich aus dem Granulat und den Steinen zusammensetzt, den Controller, der wiederum eine Änderung am Model veranlasst. Die View reagiert entsprechend und wird über Front- und Rückprojektion ausgegeben. 5.4.4 Datenaustausch Da die Objekte " und " als Referenzen in der selben Applikation zu Verfügung stehen, handelt es sich beim Datenaus- KAPITEL 5. IMPLEMENTIERUNG (a) 71 (b) Abbildung 5.8: Screenshot des Renderings mit rotierter Kamera. Die Weltkoordinatensysteme von und haben die selbe Ausrichtung. (a) . (b) . tausch zwischen den beiden um einfache Methodenaufrufe. Es besteht die Möglichkeit, alle 12!('-Instanzen, zwischen den beiden Renderings auszutauschen. Das Konzept sieht allerdings nur den Austausch einzelner Fische vor. Zu Beginn des Datentransfers, wird das zu transferierende -Objekt dem jeweils anderen Renderer hinzugefügt. Dazu stellt der Renderer eine Methode bereit, die die Synchronität des Zugriffs auf die Renderlist der Fische gewährleistet. Im Anschluss daran wird für das -Objekt, der interne Verweis auf den darstellenden Renderer, neu gesetzt. Zum Abschluss des Transfers, wird der Fisch aus der Renderlist des ursprünglichen Renderers gelöscht. Durch diese Vorgangsweise werden keine Daten kopiert, sondern nur Referenzen mit neuen Werten belegt. Alle Transformationen bleiben erhalten. Da Frontprojektion wie Rückprojektion gleich ausgerichtete Koordinatensysteme besitzen, muss keine Änderung an den Positionsdaten zu erfolgen (vgl. Abbildung 5.8). Vorraussetzung dafür ist, dass beim HardwareSetup darauf geachtet wurde, dass keine der beiden Projektionen gespiegelt ist. 5.4.5 Thread Kommunikation Um den gleichzeitigen Einsatz von Netzwerkkommunikation und Rendering zu ermöglichen kommen beim Dry Garden MR mehrere Threads zum Einsatz. Dadurch ergibt sich naturgemäß die Notwendigkeit, der Kommunikation zwischen diesen beiden Threads, sowie die Notwendigkeit der Synchronisierung beim Zugriff auf gemeinsame Datenstrukturen. Um optimale Per- KAPITEL 5. IMPLEMENTIERUNG 72 formance zu garantieren, hält der Renderer die darzustellenden Objekte in einer 24 3712!('8. Bei deren Verwendung muss die Synchronisierung vom Programmierer sichergestellt werden. Dies gelingt in Java durch die Verwendung des 3! "-Statements. Sowohl der Renderthread, als auch der Netzwerkthread, fordern vor dem Zugriff auf die 3 einen Lock auf diese an. Betritt einer der beiden Threads den 3! "-Block, so werden alle weiteren darauf synchronisierten Threads (im konkreten Fall der Netzwerkthread) bis zum Verlassen dieses Blocks, suspendiert. Dadurch ist garantiert, dass der Netzwerkthread die Datenstrukturen eines "s nicht verändern kann, während der Renderthread zur Darstellung über dessen Objekte iteriert. Um diese soeben erklärte Synchronisierung beim Zugriff auf die 3 sicherzustellen, ist diese durch das Zugriffsattribut 4 geschützt. Ein Hinzufügen und Löschen ist also nur über die dafür implementierten Methoden, die die Synchronisierung gewährleisten, möglich. Kapitel 6 Ergebnisse Das folgende Kapitel ist der Präsentation und Analyse der bei der Implementierung des Dry Garden MR erzielten Ergebnisse gewidmet. Dabei wird zu Beginn die Installation in ihrer Gesamtheit dokumentiert und im Anschluss anhand der in 3.2.1 beschriebenen Taxonomie analysiert. Die Durchführung einer Usability-Studie war aus Zeitgründen nicht mehr möglich. Dennoch wurden in kleinerem Rahmen unterschiedliche Entwicklungsstadien der Installation Probanden der verschiedensten Hintergründe vorgeführt. Einer Diskussion der Reaktionen dieser Testpersonen widmet sich der anschließende Abschnitt. Den Abschluss des Kapitels bilden Überlegungen zur Performance sowohl des Renderclient als auch des Interaktionsservers. 6.1 Detailbeschreibung Der folgende Abschnitt zeigt Details der Komponenten des Dry Garden MR. Abbildung 6.1 bietet eine detaillierte Ansicht der Installation. Der Blauton der Abbildung resultiert aus der LED-Beleuchtung des iPoint. In der Abbildung wurde eine der Seitenverkleidungen entfernt, um Einblick in dessen Innenleben zu gewähren. Gut erkennbar ist der Aluminiumkäfig, der die Basis des Tisches bildet. Durch das relativ große Luftvolumen des Innenraums, gibt es auch während langer Laufzeiten keine Überhitzungsprobleme. Der Einsatz eines aktiven Lüfters ist daher nicht notwendig. In Abbildung 6.1 ist in der Innenansicht der Projektor, der zum Einsatz gekommene Spiegel und die Point Greyscale Dragonfly erkennbar. Um die Verzerrungen, die sich durch die Umlenkung über den Spiegel ergeben auszugleichen, kommt die Trapezkorrektur des Rückprojektors zum Einsatz. Die Detailaufnahme der Point Greyscale Dragonfly (Abbildung 6.1 (a)) zeigt das Objektiv mit aufgesetztem IR-Filter. Der kompakte und schlichte Formfaktor ermöglicht ein direktes Anbringen auf der Bodenfläche des iPoint. Die Detailaufnahme des Steins zeigt die angebrachten Filzknöpfe, die ein Zerkratzen der Rückprojektionsscheibe des iPoint verhindern. Die Steine 73 KAPITEL 6. ERGEBNISSE 74 Abbildung 6.1: Detailaufnahme des iPoint. (1) LED-Beleuchtung, (2) Renderclient, (3) Interaktionsmuster, (4) Stein. (a) (b) Abbildung 6.2: Innenansicht des iPoint. (a) Detailansicht – Dragonfly. (b) Überblicksansicht – Spiegel, Dragonfly, Sanjo SJ345. KAPITEL 6. ERGEBNISSE 75 Abbildung 6.3: Montage von Front-Projektor und IR-Scheinwerfer oberhalb des Dry Garden MR. (a) (b) Abbildung 6.4: Detailaufnahmen der Interaktionselemente. (a) Stein mit Filzknöpfen zum Schutz der Projektionsscheibe. (b) PS1161. KAPITEL 6. ERGEBNISSE 76 sollten möglichst rund sein, da der TrackingServer zwar deren Größe ermittelt, die Steine im Datenmodell allerdings kugelförmig (der Radius der Kugel entspricht immer der längeren Seite der für den Stein ermittelten Boundingbox) sind. Beim Einsatz von länglichen Steinen, ergeben sich Animationspfade, die einen unnatürlich großen Abstand zum Hindernis aufweisen. Um den Kontrast im Kamerabild zu verbessern, kommt wie erwähnt ein zusätzlicher IR-Scheinwerfer zum Einsatz. Dieser ist gemeinsam mit dem Frontprojektor oberhalb der Installation angebracht. Abbildung 6.3 zeigt deren Montage in einer Nahaufnahme. (a) (b) Abbildung 6.5: Detailaufnahme der Frontprojektion. (a) Versuchsaufbau an der FH-Hagenberg. (b) Screenshot. Abbildungen 6.5(b) und 6.5(a) zeigen Screenshot und Projektion der Frontprojektion. In beiden Abbildungen erkennt man, dass an der Stelle der Steine, schwarze Kugeln gerendert werden. Diese stellen die interne Repräsentation des Datenmodells des Dry Garden MR dar. Weiters wird durch deren Projektion von oben vermieden, dass Grafiken auf die Steine projiziert werden. Der Screenshot ist im Debug-Modus des " entstanden. Aus diesem Grund sind die Animationspfade in blau eingezeichnet, der Hintergrund ist weiß. Als Methode der Stützpunktberechnung kommt die in 4.8.1 beschriebene Variante des Einfügens neuer Stützpunkte zum Einsatz. 6.2 Analyse Die folgende Analyse bezieht sich auf das Userinterface des Dry Garden MR. Durch Front- und Rückprojektion wird dessen Granulat mit digitalen Inhalten überlagert. Mit den Steinen steht dem Benutzer ein Alltagsgegenstand als Eingabemedium zu Verfügung, der es ihm erlaubt das digitale Modell des Dry Garden MR sehr direkt zu beeinflussen. In dieser Eigenschaft erinnert der Dry Garden MR an das Projekt Bricks [Ull95]. Bezogen darauf handelt KAPITEL 6. ERGEBNISSE 77 es sich um ein Graspable User Interface. Für das Granulat verschwindet der Unterschied zwischen physikalischer Ein- und digitaler Ausgabe. Laut [Ull97] verwandelt es sich somit zum TUI. Dieses wird in Folge anhand der in Abschnitt 3.2.1 definierten Taxonomie klassifiziert. Durch die Interaktionserkennung des Interaktionsservers wird das Granulat des Dry Garden MR zum Eingabemedium, die Topprojektion zum Ausgabemedium. Somit gilt für das Embodiment ganz klar der Parameter Full. Gleiches gilt für die Parametrisierung der zweiten Koordinate der Taxonomie, der Metaphor. In seinem Interface ist der Dry Garden MR also dem Projekt SandScape sehr ähnlich. Den größten Unterschied bildet die zusätzliche Rückprojektion. Diese stellt eine neue und bisher einzigartige Erweiterung des Interaktionsraumes zu beiden Seiten der Projektionsscheibe dar, bietet aber aus Sicht der Usabilty Anlass zur Kritik. Im Rahmen einer Usability-Studie wäre zu klären, ob das Freischaufeln der Löcher in der Granulatschicht, die Metaphor des Zeichnens von Interaktionsmustern nicht doppelt belegt und den Benutzer somit überfordert. Einen weiteren Kritikpunkt stellt die Reaktionsgeschwindigkeit der Rückprojektion auf Benutzereingaben dar. Auf Zeichnen der Interaktionsmuster und Positionieren der Steine reagiert der Dry Garden MR ohne Verzögerung. Setzt der Benutzer allerdings durch Freischaufeln eines Lochs in der Granulatschicht ein Ziel für die Fische, kommt erst dann ein Fisch an die Oberfläche, wenn er sich direkt unter diesem Loch“ befindet. Zum derzeitigen Entwicklungsstand erhält der ” Benutzer kein Feedback vom Dry Garden MR, dass ein Loch als Ziel erkannt wurde. Eine Visualisierung ähnlich der Oberflächenwellen würde diese Situation in jedem Fall verbessern. 6.3 Performanceüberlegungen Der folgende Abschnitt befasst sich mit Überlegungen zur Performance und allfälligen Verbesserungsmöglichkeiten. Weil die Installation in Renderclient und Interaktionsserver geteilt ist, beide komplett unabhängig voneinander durch den Einsatz verschiedener Programmiersprachen entstanden sind und jeweils andere Anforderungen gelten, folgen auch die anschließenden Ausführungen dieser Zweiteilung. 6.3.1 Renderclient Eines der definierten Ziele des Projektes war es, einen Überblick über Processing zu erlangen, und dessen Eignung für den Echtzeiteinsatz in weiteren Medieninstallationen zu klären. Die Visualisierungskomponente, des Dry Garden MR, verwendet nur Funktionen des dreidimensionalen Renderings und setzt dabei auf den OpenGL-Rendermode von Processing. Viele weitere Möglichkeiten die diese Programmierumgebung bietet (u. a. Verarbeitung von Echtzeitvideo, Soundsynthese und Analyse, Partikelsysteme, KAPITEL 6. ERGEBNISSE 78 Einbindung von Mikro-Kontrollern über Wiring1 ) blieben ungenutzt. Die folgenden Aussagen beziehen sich daher nur auf den Einsatz von Processing als Bibliothek zum Rendering. Bevor konkret auf die Performance des Renderings eingegangen wird, noch ein paar allgemeine Bemerkungen zum Einsatz von Processing. Der Entwicklungsprozess entspricht dem, einer klassischen Java-Applikation. Ein Processing-Projekt ist ein Java-Projekt. Alle Vorteile wie Plattformunabhängigkeit oder online verfügbar machen als Java-Applet (inkl. OpenGLUnterstützung) treffen voll zu. Der Einsatz von Processing bietet neben dem Zugriff auf die große Java-Klassenbibliothek viele weitere Vorteile. So stehen Funktionen für das Laden von Fonts und Texturen oder für das Zeichnen von Splines ohne das Einbinden externer Bibliotheken zu Verfügung. Eine weitere Vereinfachung betrifft den Einsatz von Transparenzen. Unter OpenGL müssen zur korrekten Darstellung von halbtransparenten Objekten alle Objekte der Szene nach ihrer z-Koordinate aufsteigend sortiert sein. Beim Einsatz von Processing fällt diese Notwendigkeit weg. Ein so genanntes Alpha-Blending kann durch einfaches Bestimmen, des Alpha-Wertes der aktuellen Zeichenfarbe definiert werden. Natürlich haben Komfort, Sicherheit und Plattformunabhängigkeit von Java auch einen entscheidenden Nachteil: Trotz OpenGL-Hardwarebeschleunigung sind die unter Processing erzielbaren Frameraten eindeutig niedriger als beim Einsatz von OpenGL unter C++. Um einen besseren Vergleich zu bekommen, wurde eine primitive Szene mit nur einer Lichtquelle und 250 Würfeln ohne Texturen gleichermaßen in Processing sowie in OpenGL unter C++ auf der selben Hardware gerendert. Dabei handelte es sich um einen wenig leistungsstarken Intel 82852 Grafikkontroller. Unter Processing wurden 6–8 fps erreicht, in OpenGL mit C++ 28–30fps. Das Rendering des Dry Garden MR ist sehr schlicht gehalten. Aus diesem Grund werden trotz der Performancenachteile von Processing, befriedigende 30 fps erreicht. 6.3.2 Interaktionsserver Die folgenden Abschnitte geben Auskunft über Verbesserungsmöglichkeiten am Interaktionsserver, die dazu dienen die Robustheit der Interaktionserkennung und die Performance der Gesamtinstallation zu verbessern. Buffering und Mittelwertbildung Da die zur Interaktionserkennung eingesetzte Kamera 30 fps liefert, der Renderclient aber nur im Sekundenintervall neue Interaktionsdaten abfragt, ist es sinnvoll, über die, seit dem letzten Request berechneten Daten den Mittelwert zu bilden. Somit würden Ausreißer“ kaum ins Gewicht fallen. Die ” ermittelten Interaktionsdaten wären entsprechend robuster. 1 http://wiring.org.co/ KAPITEL 6. ERGEBNISSE 79 Identifikation der Interaktionsdaten Im momentanen Entwicklungsstand liefert der Server bei jedem Request alle Interaktionsdaten ohne diesen eine eindeutige ID zuzuordnen. Bei den auf der Oberfläche verteilten Steinen, macht es keinen Unterschied ob die Positionen zweier aufeinander folgender Frames miteinander in Zusammenhang stehen oder nicht. Anders hingegen, bei den Zielen. Sobald ein solches für einen bestimmten Fisch gesetzt ist, muss dieses natürlich über mehrere Frames hinweg bestehen bleiben und in jedem Frame als dasselbe, wie in den vorangegangenen Frames erkannt werden. Diese Nachverfolgung wird im Moment vom Renderclient übernommen. Selbes gilt für die Erkennung der Handpositionen. Sobald ein Fisch vom Benutzer aufgenommen wird, sollte dieser der Position der Hand nachgeführt werden. Dazu wäre es notwendig eine Hand über mehrere Frames als das selbe Objekt zu identifizieren. Handpositionen und Zielen bereits durch den Server eine eindeutige ID zuzuweisen, würde den Renderclient entlasten. Weiterer Vorteil, der Objekterkennung am Server ist der Zugriff auf das Kamerabild. Somit können bessere und robustere Methoden als der reine Ähnlichkeitsvergleich der Position zum Einsatz kommen. 6.4 Benutzerreaktionen Abschließend seien noch einige Worte zu den Benutzerreaktionen auf den Dry Garden MR verloren. Am Tag der offenen Tür wurde das Projekt in einer sehr frühen Version erstmals einer breiten Öffentlichkeit zugänglich gemacht. Vorallem bei Benutzern, die den kulturellen Kontext des Projektes nicht kannten, bestand vor einer Einführung in dessen kulturelle Hintergründe, eine relativ große Skepsis. Sobald diese aber überwunden war, machte es ihnen, wie auch aus den Abbildungen 6.6(a) und 6.6(b) hervorgeht, einfach Spaß mit dem Sand zu interagieren. Zum damaligen Entwicklungsstand, war die Interaktionserkennung noch in einem sehr rudimentären Zustand, das System reagierte nicht immer nachvollziehbar. Trotzdem bereitete es den Benutzern große Freude mit dem Sand zu interagieren. Die Kontrolle des Systems rückt demnach in den Hintergrund, das Interface selbst wird (wie auch von Rokeby in [Rok98] beschrieben) zum Content. Einzig die, durch die Grobkörnigkeit des Granulats bedingte geringe visuelle Qualität der Projektion wurde von den meisten Probanten kritisiert. Da der Einsatz des feinkörnigen Granulats aus den genannten Gründen allerdings keine mögliche Option darstellt, wurde das in Abschnitt 4.7 beschriebene alternative Setup entwickelt. Die finale Version wurde in einem Versuchlabor der FH-Hagenberg getestet. Die mystische Ausstrahlung von Abbildung 6.7 ist Resultat der Verdunkelung des Raumes der Installation, rief bei der Probandin aber keine KAPITEL 6. ERGEBNISSE 80 (a) (b) Abbildung 6.6: Demonstration des ersten Prototyps am Tag der offenen Tür der FH-Hagenberg. KAPITEL 6. ERGEBNISSE 81 Abbildung 6.7: Testlauf der finalen Version mit einer Probandin im Versuchslabor der FH-Hagenberg. negativen Reaktionen hervor. Dieser bereitete es sichtlich großes Vergnügen die Fische zu beobachten, sie an die Oberfläche zu locken und mittels Steinen und Interaktionsmustern die Wasserströmungen zu beeinflussen. Kapitel 7 Resümee Im Rahmen dieser Diplomarbeit wurde eine interaktive Medieninstallation, welche über ein TUI gesteuert werden kann, entwickelt. Für den Autor dieser Arbeit war dies eine große Herausforderung, da er mit der Erarbeitung dieses Themengebietes völliges Neuland betrat. Um das Konzept einer Künstlerin in eine anwendbare Installation umzusetzen, musste eine tiefgehende (und zeitaufwändige) Einarbeitung in die Materie erfolgen. Komplexe technische Konzepte wurden selbstständig erarbeitet. Weiters galt es die inhaltliche Barriere gegenüber dem Projekt zu eliminieren. Dies gelang erst durch eine nähere Beschäftigung mit dessen kulturellen Hintergründen. Die selbe inhaltliche Skepsis macht sich auch bei vielen Benutzern, die den Dry Garden MR in keinen kulturellen Kontext stellen können, bemerkbar. Erst nach Erklärung des (wohlgemerkt gut durchdachten) Konzepts und dessen Hintergründen, ist die inhaltliche Basis für die Befassung mit der Installation gegeben. Danach benötigt es meist nur noch des Satzes: Nicht alles was ” Spaß macht, muss einen Sinn ergeben.“, um die Leute vom Spiel mit Wasser, Sand und Steinen zu überzeugen. Die Tatsache, dass es sich beim User Interface des Dry Garden MR um ein TUI handelt, stellt einen der größten Pluspunkte des Projektes dar. Dies zeigt auch die Reaktion der Benutzer, und legt den Schluss nahe, dass es sich bei Medieninstallationen um den idealen Einsatzzweck für TUI s handelt. Deren Einsatz erlaubt es mehreren Benutzern gleichzeitig, auf intuitive Art und Weise, mit einem Computersystem zu interagieren. Die Greifbarkeit räumt Barrieren klassischer HCIs aus dem Weg, und ermöglicht somit Benutzern aller Altersklassen einen einfachen und schnellen Zugang. Vorraussetzung einer erfolgreichen Umsetzung stellt den Einsatz zuverlässiger Technik, die bestmöglich vor dem Benutzer verborgen werden sollte, dar. Durch die erfolgreiche Implementierung des Projektes wurde die Eignung von Processing für die Entwicklung von Medieninstallationen unter Beweis gestellt. Der optimale Einsatzzweck liegt dennoch in der schnellen Realisierung eines Prototypen, als in der Umsetzung einer finalen Applikation. 82 KAPITEL 7. RESÜMEE 83 Der Entwicklungsprozess wird nicht durch eine mühsame Konfiguration und Einarbeitung in verschiedene externe Bibliotheken verlängert, es ist innerhalb kürzester Zeit möglich Ergebnisse zu erzielen. In Folge dieses raschen Entwicklungsprozesses ist es schon in einem frühen Stadium möglich, Prototypen auf ihre Anwenderfreundlichkeit hin zu überprüfen. Die gewonnenen Schlüsse können wiederum entsprechend rasch eingearbeitet werden, um in zeitlich knapp darauf folgenden weiteren Testläufen den überarbeiteten Prototypen weiteren Überprüfungen zu unterziehen. Erst wenn dieser iterative Prozess ein befriedigendes Ergebnis geliefert hat, wird auf Grund der gewonnenen Erfahrungen eine finale Version entwickelt. Diese finale Version wird in den meisten Fällen mit Hilfe performanterer Programmierumgebungen wie C++ in Kombination mit OpenGL implementiert. Abschließend sei nochmals auf die Zukunft des Dry Garden MR hingewiesen. Bei der Diskussion der Ergebnisse wurden schon etliche Verbesserungsmöglichkeiten genannt. Deren Umsetzung erscheint sehr wünschenswert und wäre vor einer eventuellen öffentlichen Ausstellung sogar zwingend erforderlich. Ob dies aber durch Einsatz des iPoint geschehen wird, ist eher fraglich. Es bestünde allerdings die Möglichkeit, die aus der Entwicklung des Prototypen gewonnenen Erfahrungen zu verwerten, um das in Abschnitt 4.7 gezeigte Konzept umzusetzen. Anhang A Inhalt der CD-ROM File System: Joliet Mode: Single-Session (CD-ROM) A.1 Diplomarbeit Pfad: / iInstallationen.pdf . . . iInstallationen.ps . . . . A.2 Applikation Pfad: /applikation/ readme.txt . . . . . . . Pfad: Installationsanleitung. /applikation/interaktionsServer/ interaktionsServer.exe . dummyServer.exe . . . . calib.exe . . . . . . . . . Pfad: Diplomarbeit (PDF-File). Diplomarbeit (PostScript-File). Interaktionserkennung. Dummyversion. Kalibrierungs-Applikation. /applikation/renderClient/ renderClient.bat . . . . data/images/ . . . . . . data/models/ . . . . . . Batch-Datei zum Start. Texturen. Modelle. 84 ANHANG A. INHALT DER CD-ROM A.3 Sourcecode Pfad: /source/renderClient/ .project . . . Manifest.txt . src/ . . . . . data/images/ data/models/ Pfad: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Eclipse-Projekt. Manifest für JAR-Erstellung. Java-Files. Texturen. Modelle. /source/interaktionsServer/ interactionServer.sln Source/ . . . . . . . Include/ . . . . . . . Lib/ . . . . . . . . . A.4 Quellen Pfad: /quellen/ CatmullRom.pdf . . Rakugaki.pdf . . . . processingLIVE.pdf dryGarden.pdf . . . CGGrundlagen.pdf . SpeedingUp.pdf . . A.5 Bilder Pfad: /bilder/ dragonFly.tif . . . fishSurfaceing.tif . handPlaceStone.tif handsHoldFish.tif . . . . . . . . . . . . Solution-File für VS.NET. Implementierung. Header-Files. Dependencies. . . . . . . . . . . . . Catmull-Rom Einfführung [Twi03]. Projektbeschreibung [Tak01]. Projektbeschreibung [Hod05a]. Projektbeschreibung [Tak05]. CG-Grundlagen [Fil06]. Jikes-Compiler [Gri99]. . . . . . . . . Detailaufnahme der Dragonfly- Kamera. Fisch beim Erreichen der Oberfläche. Ein Stein wird in den Dry Garden MR gelegt. Ein Fisch wird vom Benutzer in der Hand gehalten. installationFinal.tif . . . Probandin bei der Interaktion in einem Versuchslabor der FH-Hagenberg. iPointDetail.tif . . . . . Detailaufnahme des iPoint. iPointDetailNoCaption.tif Detailaufnahme des iPoint (ohne Captions). iPointInside.tif . . . . . Innenaufnahme des iPoint. ANHANG A. INHALT DER CD-ROM iPointRed.tif . . . . . logo.png . . . . . . . . projectionMaterials.tif projectorFront.tif . . . . . . . rake.tif . . . . . . . . screenRendererTop.tif stone.tif . . . . . . . . stoneRipple.tif . . . . stonesAndFish.tif . . . . . . . . strokeLinear.tif . . . . . tdot1.tif . . . . . . . . . tdot2.tif . . . . . . . . . A.6 Video Pfad: /video/ dryGardenMR.mp4 . . . 86 Gesamtansicht der Installation. c Logo des Projekts Florian Bacher. Unterschiedliche Projektionsmaterialien. Projektor und IR-Scheinwerfer oberhalb der Installation. Traditioneller Bambusrechen. Screenshot der Frontprojektion. Detailaufnahme des Steins. Wellen um einen neuplatzierten Stein. Installation mit zwei Steinen und zwei Fischen an der Oberfläche. Lineares Interaktionsmuster. Dry Garden MR am Tag der offenen Tür 2006. Dry Garden MR am Tag der offenen Tür 2006. MPEG4-komprimierte Version der Videodokumentation Literaturverzeichnis [Ben03] Bender, Michael und Brill, Manfred: Computergrafik. Hanser, 2003. [Bur05] Burger, Wilhelm: Digitale Bildverarbeitung. Springer Verlag, 2005. [Cas05] Cassinelli, Alvaro, Ishikawa Masatoshi und Ito Takahito: Khronos Projector. In: SIGGRAPH Emerging Technologies. ACM Press, 2005. [Cat74] Catmull, E. und Rom, R.: A Class of Local Interpolating Splines. In: Computer Aided Geometric Design, Seiten 317–326. Academic Press, San Francisco, 1974. [Dob04] Dobler, Daniel und Stampfl, Philipp: Enhancing threedimensional vision with three-dimensional sound. In: Proceedings of the conference on SIGGRAPH 2004, New York, 2004. ACM Press. [Fel92] Fellner, Wolf-Dietrich: Wissenschaftsverlag, 1992. [Fil06] Filler, A.: Mathematische Grundlagen der 3D-Computergrafik und ihre Umsetzung in Grafiksoftware. URL, http://www. ph-heidelberg.de/wp/filler/CG-Grundlagen.pdf, April 2006. Kopie auf CD-ROM. [Fis04] Fishkin, P. K.: A taxonomy for and analysis of tangible interfaces. Personal and Ubiquitous Computing, 8:347–358, May-June 2004. [Fri] Frigg, Patrick: Tangible User Interfaces - Beispiele und eine Taxonomie. Seminar Verteilte Systeme zum Thema Smarte Ob” jekte und smarte Umgebungen“. [Fry06] Fry, Ben und Reas, Casey: Processing Homepage. URL, http: //www.processing.org/, June 2006. 87 Computergrafik. BI- LITERATURVERZEICHNIS [Gri99] 88 Grinzo, Lou: Speeding up Java development. URL, http: //www-128.ibm.com/developerworks/linux/library/l-jikes.html, September 1999. Kopie auf CD-ROM. [Hod05a] Hodgin, Robert: processing:Live. URL, http://flight404.com/ vj/exhibit.html, April 2005. Kopie auf CD-ROM. [Hod05b] Hodgin, Robert: webcam:tracking. URL, http://www. processing.org/exhibition/works/tracking/index.html, April 2005. [Ish04] Ishii, H., Ratti C. Piper B. Wang Y. Biderman A. und Ben-Joseph E.: Bringing clay and sand into digital design. BT Technology Journal, 22:287–299, 2004. [Lyo02] Lyons, Michael J., Van Tonder Gert J. Shortreed Ian und Tetsutani Nobuji: Calming Visual Spaces: Learning from Kyoto Zen Gardens. In: Conference Abstracts on SIGGRAPH 2002, New York, 2002. ACM Press. [Mor90] Mortenson, Michael E.: Computer Graphics Handbook. Industrial Press Inc., 1990. [Pip02] Piper, Ben, Ratti Carlo und Ishii Hiroshi: Illuminating Clay: A 3-D Tangible Interface for Landscape Analysis. In: Proceedings of CHI 2002, New York, 2002. ACM Press. [Rok98] Rokeby, David: The Construction of Experience: Interface as Content. In: Dodsworth Jr., C. (Herausgeber): Digital Illusion: Entertaining the Future with High Technology, Seiten 27–47. Addison-Wesley Publishing Co., San Francisco, 1998. [Tak01] Takahashi, Keiko: Rakugaki. URL, http://www.th.jec.ac.jp/ September 2001. Kopie auf CDROM. ∼keiko/rakugaki/rkframe.html, [Tak05] Takahashi, Keiko: Project Dry Garden. Konzeptskizzen, July 2005. Kopie auf CD-ROM. [Twi03] Twigg, Christopher: Catmull-Rom Splines. URL, http: ∼ //www.cs.cmu.edu/ fp/courses/graphics/asst5/catmullRom.pdf, March 2003. Kopie auf CD-ROM. [Ull95] Ullmer, Brygg und Ishii, Hiroshi: Bricks: Laying the Foundations for Graspable User Interfaces. In: Proceedings of CHI 1995, Denver, May 1995. ACM Press. [Ull97] Ullmer, Brygg und Ishii, Hiroshi: Tangible Bits: Towards Seamless Interfaces between People, Bits and Atoms. In: Proceedings of CHI 1997, Seiten 234–241, Atlanta, March 1997. ACM Press. LITERATURVERZEICHNIS 89 [Ull01] Ullmer, Brygg und Ishii, Hiroshi: Emerging Frameworks for Tangible User Interfaces. In: Carroll, John M. (Herausgeber): Human-Computer Interaction in the New Millennium, Seiten 579– 601. Addison-Wesley, Atlanta, 2001. [Whi98] White, Tom und Small, David: An Interactive Poetic Garden. In: Conference on Human Factors in Computing Systems. ACM Press, 1998.