Generative Erzeugung von Design mit vvvv

Bitte beachten Sie, dass die HTML Version vor allem dazu dient, die indizierbarkeit des Inhals durch Suchmaschinen zu erleichtern. Eine wesentlich lesbarere Version enthält dieses pdf.

 

{2} vvvv als Beispiel für grafisches Programmieren

Um nun weitere Eigenschaften von generativem Design mit grafischen Programmierumgebungen erörtern zu können, soll eine Programmierumgebung ausgewählt werden und diese näher betrachtet werden.
Zur Erstellung der Beispiele in dieser Arbeit wurde auf die Entwicklungsumgebung „vvvv“ der Firma meso zurückgegriffen, da diese stark visuell ausgerichtet ist und trotz des sehr überschaubaren Funktionsumfangs (etwas mehr als 300 Knoten) und des spartanischen Interfaces, alle benötigten Funktionen bereitstellt. Durch die direkte Integrierbarkeit von Macromedia Flash Animationen und anderen externen Datenquellen, sowie die Möglichkeit eines hochauflösenden Bildexports, ergeben sich weitere Vorteile im Designkontext. Zudem ist die Software für die nicht-kommerzielle Nutzung kostenlos und bietet dabei trotzdem einen guten Support.
Da somit alle definierten Anforderungen erfüllt werden, soll vvvv als Repräsentant der grafischen Programmierumgebungen, in Kapitel 2 näher betrachtet werden.

vvvv ist eine Eigenentwicklung der Firma meso und entstand als firmenintern klar wurde, dass die verfügbaren Softwareprogramme auf dem Markt nicht ausreichten um die aufwendigen Projekte zu realisieren, die meso damals plante. Leider gibt es dazu noch keine publizierten Schriften und das Produkt selbst befindet sich noch im Beta-Stadium. Auf der Webseite vvvv.meso.net findet der interessierte Leser aber eine große Menge an Informationen und auch das Programm selbst zum kostenlosen Download.
Anfangs noch textbasiert entwickelten sich viele Funktionen von vvvv (umgangssprachlich auch kurz v4 oder 4v genannt) mit der Zeit weiter und schließlich wurde der Applikation eine grafische Benutzeroberfläche gegeben und nach einigen weiteren internen Beta Versionen wurde entschieden, vvvv der Öffentlichkeit für nicht-kommerzielle Zwecke kostenlos zu Verfügung zu stellen. Von den Entwicklern, wird ihre Software so beschrieben:

“vvvv is a toolkit for real time video synthesis and connecting physical devices. We use the word “synthesis” because vvvv generates or “synthesizes” video through the usage of moving graphical objects. “
(meso 2005a)

Auf der Webpage findet sich auch eine Liste mit den Funktionen (“Core Features”) von vvvv, wobei nur die relevantesten Punkte hier besprochen werden:

* Sophisticated objects for high level animation and problem solving
* Simple handling of a multitude of logical objects (Spreads)
* Runtime graphical programming for easy prototyping and testing
* High-Speed, High-Quality, High-Resolution DirectX9.0 based rendering
* Runs on standard windows xp platforms. DirectX9.0 graphics card recommended.
[...] (vgl. meso 2005b)

Die große Palette an Funktionen und die einfache Handhabung von vielen Objekten gleichzeitig (siehe „Spreads“ Kapitel 2.3) sind in dieser Auflistung die wichtigsten Punkte um vvvv zur Erstellung von generativem Design einsetzen zu können. Punkt 3 beschreibt die unterbrechungsfreie Arbeitsweise von vvvv. „Runtime“ bedeutet, dass es keinen Unterschied zwischen einem Programmier- und einem Ausführungsmodus gibt. Jede Veränderung im Patch bewirkt sofort eine Veränderung im Verhalten da die mit vvvv erstellten Programme nicht erst in eine ausführbare Datei übersetzt werden müssen um lauffähig zu sein. Es gibt nur den einen Modus in dem das Programm sowohl läuft als auch verändert werden kann. Dies vereinfacht das Erstellen und Testen („prototyping & testing”) von Patches erheblich. Punkt 4 belegt das hochqualitative und auflösungsunabhängige Rendering, was auch die Produktion von großformatigen Designs ermöglicht. Der letzte Punkt stellt die grundsätzliche Benutzbarkeit von vvvv sicher, da es auf allen Standard-Rechnern mit Windows XP läuft und keine exotischen Anforderungen an die Hardware stellt.

 

2.1. Die zugrunde liegende Funktionsweise

Wie aus den Abbildungen 9 und 10 ersichtlich, besteht ein vvvv-Programm aus einzelnen, mit Namen versehenen Blöcken („Knoten“ genannt) und Verbindungen zwischen diesen. Auf der Oberseite des Knotens befinden sich alle Eingänge, auf der Unterseite alle Ausgänge. Jeder Knoten, von denen es bisher über 300 Stück gibt, bearbeitet die Daten mit denen er gefüttert wird auf eine vorgegebene Art und Weise und reicht das Ergebnis über seine Ausgänge weiter an andere Knoten.

Abb. 9Abb. 10
Es gibt sehr einfache Knoten, wie etwa die Addition von 2 Werten (2 Eingänge, ein Ausgang) aber auch komplexe Knoten mit dutzenden Ein- und Ausgängen. Die Ein- und Ausgänge werden als „Pins“ bezeichnet. Durch diese Pins fließen alle Datenströme und auch wenn einzelne Knoten, an sich betrachtet, nicht besonders mächtig sind, lassen sich durch eine kreative Kombination dieser Knoten äußerst komplexe Vorgänge berechnen und darstellen.
Einige Beispiele, für Anwendungen für die vvvv eingesetzt werden kann:

* Analyse von Daten (Bilderkennung, Audioanalyse, Sensoren…)
* Rendering und Shading von importieren oder live erstellten 3d Objekten
* Kontrolle von angeschlossenen Geräten wie Motoren, Lichtern und Computern
* Erzeugung von komplexen Formen mit Hilfe von mathematischen Algorithmen

 

2.2. Die Generierung von primitiven Objekten

Da der Schwerpunkt dieses Werks auf der Generierung von Design liegt, wird hier nur auf den letzten Punkt eingegangen. vvvv soll nun also dazu verwendet werden, große Objektmengen in regelbasierte Strukturen zu verwandeln. Doch bevor diese Erzeugung von komplexen Formen in Angriff genommen werden kann, muss erst geklärt werden, woraus diese Gebilde überhaupt bestehen sollen.
vvvv bietet ein breites Spektrum an Funktionen zur Erzeugung von primitiven Objekten an, welche sich in die Kategorien „Punkt“, „Linie“, „Fläche“ und „Körper“ einteilen lassen. Es ist hier unabdingbar, etwas über die Dimensionalität zu sprechen, insbesondere in Bezug auf die Positionierung, Darstellung und der eigentlichen Konstruktion eines Elements.

 

2.2.1. Punkte

Ein Punkt ist ein 0-dimensionales mathematisches objekt, das in einem n-dimensionalen Raum mit n Koordinaten definiert werden kann (“A point 0-dimensional mathematical object, which can be specified in n-dimensional space using n coordinates.” (Wolfram Research 2005a)). Im Allgemeinen leichter verständlich scheint Euklids Definition: „Was keine Teile hat, ist ein Punkt.“ (Euklid 2003).
Sobald jedoch ein definiertes Ausgabemedium vorhanden ist (Papier, Bildschirm), ist ein Punkt einfach nur das kleinste darstellbare Objekt dieses Ausgabemediums. Also ein Punkt auf dem Papier oder ein Pixel auf dem Bildschirm.
In vvvv gibt es nur einen Knoten, „Point (GDI)“ der die Darstellung von beliebig vielen Punkten explizit ermöglicht und auch dies nur auf einer Ebene, sodass diese Punkte in zwei Dimensionen positionierbar sind. Implizit ermöglicht aber jeder Knoten, der im Renderer gezeichnet werden kann, auch eine Darstellung als Punktewolke der Eckpunkte. Der Knoten der einen gefüllten Würfel zeichnet, kann also auf eine Darstellung umgeschaltet werden, die nur die 6 Eckpunkte des Würfels zeigt.

 

2.2.2. Linien

Linien dienen dazu, mindestens zwei, aber auch mehr Punkte im Raum miteinander zu verbinden. Wie sich schon anhand dieser Definition erkennen lässt, greift eine Linie zwingend auf Punkte zurück, da diese zur Beschreibung des Linienverlaufs unabdinglich sind. Eine gerade Linie, in der euklidischen Geometrie entspräche dies einer Geraden mit unendlicher Länge oder einer Strecke mit endlicher Länge (vgl. Wolfram Research 2005b), wird als eindimensional bezeichnet, da sie sich nur in eine Dimension ausdehnen kann, aber keine Dicke besitzt.
vvvv bietet jedoch Möglichkeiten, sowohl gebogene Linien, zum Beispiel mit „BézierLine (GDI)“ zu zeichnen, als auch das Aussehen (Dicke und Stil) dieser Linien zu definieren. Des Weiteren können alle Objekte auch als Gitternetz dargestellt werden.

 

2.2.3. Flächen

Flächen, oder auch Polygone, sind eine Sammlung von mindestens 3 Punkten, zwischen denen eine gefüllte Fläche aufgespannt wird. Das einfachste Polygon ist das Dreieck, welches aus genau 3 Punkten besteht. Das Hinzufügen eines weiteren Punktes ergibt ein Rechteck, mit weiteren Punkten entsprechende Flächen mit mehr Eckpunkten.
Ein Gedanke, der zwar offensichtlich erscheint, aber während der Arbeit mit solchen Flächen immer wieder Kopfzerbrechen bereitet ist die Tatsache, dass die Reihenfolge, in welcher die Punkte verbunden werden, von entscheidender Bedeutung für das Aussehen der Fläche ist. vvvv bietet diverse Flächen an (Quadrate, abgerundete Quadrate, Dreiecke etc.) die als Ausgangsobjekte für generative Designs verwendet werden können.

 

2.2.4. Körper

Körper setzten sich aus unterschiedlichen Flächen zusammen, die so angeordnet werden, dass ein dreidimensionales Modell eines Objektes entsteht. In vvvv können solche Körper entweder generiert (Sphere (DX9), Cylinder (DX), usw.) oder importiert werden. So kann mit jedem 3D Modelling Programm ein Modell erstellt werden, das dann in vvvv in direkt manipulierbar ist.
vvvv stellt jedoch auch Knoten bereit, die die Erstellung von Körpern aus Punktewolken ermöglichen. So können komplexe 3D-Objekte direkt generiert und punktgenau manipluliert werden. Zudem existiert ein Knoten, der 3D-Text erzeugen kann. Dies funktioniert mit allen installierten Fonts und Symbol-Fonts.

 

2.3. Die Vervielfältigung von Objekten um komplexere Gebilde zu erhalten

Um die Grundformen nun in komplexere Objekte verwandlen zu können, stellt vvvv diverse Knoten ad hoc zur Verfügung. Ein zentraler Begriff ist hierbei das Konzept der Spreads:

“vvvv can simultaneously handle a large count of objects, either graphical or data, with very little effort by the user. This means that it is just as easy to do an operation on a single value or on a hundred, in the same sense it is as easy to draw one object as it is to draw a whole swarm of objects. This technique is called spreading. It is somehow similar to the concept of vectors, arrays or lists in other programming languages, but it lacks most of the overhead usually associated with these constructs.”
(meso 2004b)

Technisch gesehen ist ein Spread nichts weiter als eine Liste von Werten, die in vvvv von vielen Knoten generiert und von praktisch jedem Knoten verarbeitet werden kann. So kann die Rotation eines Objektes um eine Achse mit einem Wert von 0 bis 1 (mit allen dazwischen liegenden Kommawerten) beschrieben werden. Ist dieser Wert 0, beträgt die Drehung 0°, bei 1 360°. Wenn jedoch statt nur einem Wert ein Spread mit zwei Werten eingegeben wird, entstehen zwei Objekte. Jedes mit seiner eigenen Drehung.

Abb. 11Abb. 12
Abbildung 11 zeigt ein Beispiel für einen Knoten (Linear Spread), der eine definierte Anzahl von Werten auf einer Achse liefert, die alle den selben Abstand voneinander haben. Diese Werte werden dann an einen Knoten übergeben, der Punkte zeichnet. Abbildung 12 zeigt einige Knoten, die vvvv zur Erzeugung von Spreads bereithält und welche Formen diese erzeugen.
Dies sind nur sehr einfache Beispiele und Komplexität wird vor allem durch Verknüpfung dieser Knoten untereinander und mit anderen Knoten erreicht. So zeigt Abbildung 13, wie die Elemente eines kachelförmigen Spreads (Cross) mit der Maus beeinflusst werden können.
Hier wurden nur sehr wenige Spreads verwendet um die Übersichtlichkeit nicht zu beeinträchtigen, auch wenn vvvv seine Stärken erst bei sehr großen Spreads (1000+ Elemente) voll ausspielt, da durch die sehr effiziente Verarbeitung von eindimensionalen Arrays (d.h. Listen), die vorhandene Hardware optimal ausgenutzt wird. Durch die individuelle Verknüpfbarkeit jedes Pins mit einem Spread entsprechenden Datentyps (d.h. Farben zu Farben, Textstrings zu Textstrings etc.), lassen sich auch mehrere verschiedene Typen von Spreads mit unterschiedlicher Größe an einen Knoten hängen.

 

2.4. Mathematische Algorithmen zur Formengenerierung

Da nun alles nötige Wissen vermittelt wurde um ein grundsätzliches Verständnis von vvvv gewährleisten zu können, soll nun eine erste Anwendung gezeigt werden, die die bisher erklärten Punkte visualisieren soll.
Auch wenn es an den Designern liegt, zu entscheiden, welche Werkzeuge sei für welche Aufgaben einsetzt, sind gewisse Arbeiten dazu prädestiniert, von einem Computerprogramm erledigt zu werden. Die Konstruktion einer Spirale ist ein gutes Beispiel. Jeder der schon einmal versucht hat, diese eigentlich äußerst simpel anmutende Form mit der Hand zu zeichnen, weiß, welcher Aufwand dazu erforderlich ist. Das erzielte Ergebnis kann dabei nicht annähernd so perfekt sein, wie die Spirale, die von einem Computer erzeugt wurde. Alles was zu tun ist, ist ein mathematisches Formelsystem in den Computer einzugeben und diese von ihm berechnen zu lassen.
Das Ergebnis dieser, mit vvvv ausgeführten, Berechnungen zeigt Abbildung 14.

Abb. 15


Anzumerken ist, dass dem Zeichner die Formel in jedem Fall bekannt sein muss um die gewünschte Spiralform – im vorliegenden Fall, die schon von Archimedes für seine Studien verwendete Variante – zu erhalten. Sich von Hand die benötigten Punkte auszurechnen und die Figur dann zu konstruieren, erfordert einige Geduld und ist nur sehr engagierten Lesern zu empfehlen. Deren Umsetzung in vvvv ist jedoch sehr einfach zu lösen und sollte mit Hilfe von Abbildung 15 leicht reproduzierbar sein. Zudem kann dieser Patch zusammen mit allen anderen zur Erstellung dieses Werks verwendeten Patches von diploma.ampop.net heruntergeladen werden.

Als zweites Beispiel in diesem Kapitel wird eine mathematische Formel präsentiert, die, obwohl für gänzlich andere Anwendungsgebiete bestimmt, sich sehr gut zur Erzeugung von generativen Bildern eignet. Mit einem Algorithmus zur Berechnung von seltsamen Attraktoren (ein Attraktor mit einer nicht ganzzahligen Dimension) kann ein Spread (d.h. Liste) generiert werden, die dann in ein zwei- oder dreidimensionales Koordinatensystem übersetzt werden kann um Objekte mit chaotischen Eigenschaften zu erzeugen. Dieses Kapitel stützt sich zum großen Teil auf Informationen aus dem, leider vergriffenen, Buch „Strange Attractors: Creating Patterns in Chaos“ (Sprott 2000) in welchem die hinter Fraktalen und chaotischen Funktionen steckenden Konzepte sehr ausführlich und verständlich besprochen werden. Es ist sogar der Quelltext (Basic und C+) von Programmen zur Generierung von Fraktalen abgedruckt und dokumentiert. Diese wurden vom Autor als Inspirationsquelle verwendet und in vvvv Patches übersetzt.
Die Formel Xn+1 = a + b*Xn + c*Xn² enthält die 3 Kontrollparameter a, b und c. Sie stellt die allgemeinste eindimensionale quadratische Funktion dar. Eindimensional, wegen der einen freien Variable x, quadratisch, weil die höchste Potenz, die x in dieser Formel besitzt 2 ist.

Abb. 17Abb. 18
Gefüttert mit unterschiedlichen Werten für die 3 Kontrollparameter ist es möglich, dass die Ergebnisse nach einigen Iterationen (Schleifendurchläufen) gegen unendlich streben oder sich auf einem gewissen Wert einpendeln und dort für immer verbleiben. Die ersteren werden als „uneingeschränkt“ bezeichnet – die letzteren nennt man „Punkt-Attraktoren“ – doch beide sind optisch relativ uninteressant. Ebenso verhält es sich mit zyklischen Attraktoren bei denen der Ausgabewert nach ein paar Iterationen nur noch zwischen zwei Werten hin und her springt. Die optisch interessanten Attraktoren hingegen sind die Instabilen, aber doch Eingegrenzten.
Die Variable x springt unvorhersagbar von einem Wert zum anderen, bleibt aber immer innerhalb gewisser Grenzen. Es gilt nun also Tripletts von Kontrollparametern a, b und c zu finden, damit die Formel Xn+1 = a + b*Xn + c*Xn² das gewünschte chaotische Verhalten zeigt. Da chaotische Prozesse extrem empfindlich auf die Ausgangsbedingungen reagieren und selbst kleinste Abweichungen das Aussehen dieser Funktion extrem verändern, ist es sehr schwierig solche Tripletts zu finden.
Trial-and-Error ist laut Sprott nicht zielführend, jedoch gibt es den sogenannten „Lyapunov Exponenten“.
Dieser kann Aussagen über das Verhalten einer Funktion treffen und so lassen sich interessante Werte zum Einsetzen in die Formel finden. (vgl. Sprott, 2000, 14ff)
Anhand dieser, von Sprott gezeigten Methoden, wurden vvvv-Patches angefertigt, die eine Berechnung von einfachen, eindimensionalen Funktionen ermöglichen, ebenso wie die Übersetzung derer Ergebnisse in zweidimensionale Kurven (Abb. 17-19), aus denen schließlich dreidimensionale Objekte (Abb. 23-25) generiert werden können.

Abb. 20Abb. 21

Der in den Abbildungen 20 und 21 gezeigte Patch ist für die Berechnung der Grundkurve zuständig. Diese Kurve dient dann als Grundelement, das in einem dreidimensionalen Raum dupliziert und unterschiedlich transformiert werden kann. Dies geschieht mit dem in Abbildung 22 gezeigten Patch.

Abb. 22

Durch Veränderung der Kontrollparameter, insbesondere bei einer großen Anzahl an Objekten lassen sich die, in den Abbildungen 23 & 24 gezeigten, Rotationskörper erzeugen. Die Rotationen beschränken sich jedoch nicht auf eine Achse, sondern schließen alle drei Dimensionen ein. Auch die Skalierung und Positionierung der Einzelteile kann variiert werden. Diese so erzeugten Körper können nun wiederum als Basisobjekt für eine noch komplexere Transformierung in ein neues Objekt (Abb. 25) verwendet werden.

Abb. 23Abb. 24Abb. 25
Dies ist eine Methode die in ausgereifterer Form zur Erzeugung einiger der im Bildband gezeigten Werke verwendet wurde und stellt ein mächtiges Werkzeug dar, um die Beschränkung auf elementare Objekte zu umgehen. Ein Objekt wird mittels Algorithmen erzeugt und dann als Basisobjekt definiert, auf welches weitere Transformationen angewendet werden können. Sollte es hier noch an Komplexität mangeln, kann dieser Schritt beliebig oft wiederholt werden.


2.5. Single Source Publishing mit vvvv

Während im vorherigen Kapitel gezeigt wurde, wie generative Grafiken erzeugt werden können, soll nun gezeigt werden, wie die so erhaltenen Bilder in anderen Applikationen weiterbearbeitet werden können und wie dies mit größtmöglicher Effizienz geschieht.
Eine zentrale Rolle beim Austausch von Daten zwischen verschiedenen Applikationen und Betriebssystemen spielt der immer mehr in Mode kommende XML Code. XML ist die Abkürzung für „Extensible Markup Language“ und ist eine so genannte Beschreibungs- oder auch Auszeichnungssprache (ähnlich HTML) zum zeichensystemunabhängigen Austausch von Informationen zwischen verschieden Applikationen und sogar Betriebssystemen. Als Referenz und einfacher Einstieg in die Thematik empfiehlt sich hier „XML. Der einfache Einstieg in den führenden Dokumenten- und Web-Standard“ von Günther Born. (Born 2005, 442)
XML ist eine gar nicht so neue Technologie, deren Vorläufer (GML, „Generalized Markup Language“) bereits in den siebziger Jahren von Dr. C. F. Goldfarb bei IBM entwickelt wurde und zur Verwaltung großer Dokumentmengen für Militär- und Raumfahrtprojekte entwickelt wurde. Daraus entwickelten sich dann SGML („Standardized Generalized Markup Language“), HTML und XML, das sich allerdings erst in den letzten Jahren zu einem verwendbaren Standard gemausert hat.
Auch vvvv arbeitet intern mit XML und alle Programme („Patches“) werden ausschließlich als XML Dateien gespeichert. Hier ein einfaches Beispiel für einen Patch mit zwei Knoten und einer Verknüpfung zwischen diesen:


<!DOCTYPE VVVV SYSTEM “http://vvvv.meso.net/versions/vvvv33beta8.1.dtd” >

<PATCH nodename=” addittion.v4p” componentmode=”InAWindow”>
<BOUNDS type=”Window” left=”5775” top=”5790” width=”9000” height=”6000”></BOUNDS>

<NODE nodename=”Add (Value)” id=”2”>
<BOUNDS type=”Node” left=”2670” top=”2205” width=”0” height=”0”></BOUNDS>
<PIN pinname=”Input 1” visible=”1”></PIN>
<PIN pinname=”Input 2” visible=”1”></PIN>
<PIN pinname=”Output” visible=”1”></PIN>
</NODE>

<NODE nodename=”IOBox (Value Advanced)” componentmode=”InABox” id=”3”>
<BOUNDS type=”Node” left=”1920” top=”1635” width=”0” height=”0”></BOUNDS>
<BOUNDS type=”Window” left=”7560” top=”7080” width=”215” height=”160”></BOUNDS>
<BOUNDS type=”Box” left=”1920” top=”1635” width=”795” height=”240”></BOUNDS>
<PIN pinname=”Y Output Value” visible=”1”></PIN>
<PIN pinname=”Y Input Value” slicecount=”1” values=”2.00000”></PIN>
</NODE>

<LINK srcnodeid=”3” srcpinname=”Y Output Value” dstnodeid=”2” dstpinname=”Input 1”></LINK>

</PATCH>

Wie aus dem XML-Code klar ersichtlich wird, setzt sich das XML File aus verschiedenen Elementen zusammen. Zuerst werden die Eigenschaften des gesamten Patches deklariert, dann die Eigenschaften einzelner Knoten und schließlich die Verknüpfungen zwischen den Knoten.
Ein wichtiges Konzept von XML ist, dass es dem Anwender erlaubt, genau jene Tags zu deklarieren die für eine gewisse Anwendung gebraucht werden und nach deren Deklaration (mittels dtd Datei oder XML-Schemata) nur noch die deklarierten Tags unter genau festgelegten Umständen zulässt.
XML stellt nur Regeln für den Aufbau von Tags zur Verfügung, nicht aber die Tags selbst. Im Gegensatz zu HTML, wo alle Tags genau vordefiniert sind und dem User nichts anderes übrig bleibt, als die vorhanden Tags zu benutzen. Neue Tags zu erstellen ist nicht möglich.
HTML kann also spätestens seit der Einführung von XHTML als XML Dokument gesehen werden, das vom w3 Komitee (www.w3.org) mit genau definierten Tags spezifiziert wurde. Dementsprechend besitzt die für das folgende Beispiel gewählte Struktur der XML Daten für den Datenaustausch zwischen einer Online-Bilddatenbank und einer InDesign-Dokumentvorlage für ein Buch gänzlich andere Tags:


<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE book SYSTEM “vvvvmanual.dtd”>
<book>

<chapter id=”10”>
<h1>Chapter Headlines</h1>
<text><h2>Headline 2</h2>Here comes lots of text …</text>

<!-- defining the images belonging to a chapter -->
<images>
<image id=”0” size=”100” href=file:///images/bild_1.tif comment=”Ein Kommentar”></image>
<image id=”1” size=”100” href=file:///images/bild_2.tif comment=”zu Bild 2”></image>
</images>

<!-- defining the footnotes belonging to a chapter -->
<footnotes>
<note id=”0”>Note #1</note>
<note id=”1”>Note #2</note>
</footnotes>

</chapter>

</book>


Hier gibt sich die Grundstruktur des Buches sehr gut zu erkennen. Jedes Kapitel enthält eine Kapitelüberschrift (<h1>), den dazugehörigen Fließtext mit allen benötigten Formatierungstags (<h2>, <h3>, <b>, <i>, <code>, <link> und <node>), Bildern und Fußnoten.
XML Files sehen also immer ähnlich aus, die verwendeten Tags und die damit geschaffenen Strukturen sind aber nur für eine spezielle Anwendung ausgelegt.
Da vvvv viele Funktionen zur Manipulierung von Texten bereithält, lässt es sich hervorragend für die Erstellung von XML Dokumenten aus vorhandenen Datenbeständen verwenden. Der dieser Diplomarbeit beiliegende Bildband wurde vollständig automatisch, anhand von ausgewählten Bildern und dazugehörigen Bildbeschreibungen erstellt und für den Export als pdf und für die Publikation im Internet aufbereitet. In der Werkdokumentation im Anhang wird dieser Prozess ausführlich erklärt und auf
diploma.ampop.org können Beispieldateien und Stilvorlagen heruntergeladen werden.

 

 

< prev

back to index

next >

     
 

(c) by Thomas Hitthaler, ampop.net