Print view

Animationen - leicht gemacht!

Einleitung

Prinzipielles

Hauptspeicher-Animation
Festplatten-Animation, AVI
Videoaufzeichnung

...und etwas mehr ins Detail

NCAR Graphics
GrADS
Vis5D
Tips und Tricks
Videofilme

Referenzen


Einleitung


Abb. 1: Beispiel einer Animations-Sequenz

Kurz vorab: Heutzutage kann jeder Nutzer des DKRZ seine zeitabhängigen Daten in recht einfacher Weise und schnell als Film darstellen, und das häufig ohne großen zusätzlichen Aufwand mit der ihm vertrauten Graphik- und Visualisierungssoftware wie GrADS, NCAR Graphics oder VIS5D. Generell gilt, daß sich alles, was auf einer Workstation über X-Windows dargestellt werden kann, im DKRZ-Videolabor auch auf Video aufzeichnen läßt.

Solche Filme bzw. Animationen[1] können oft helfen, die enormen Datenmengen, die bei Klimasimulationen entstehen, besser zu verstehen. In der Bewegung werden Abläufe sichtbar, die bei der Betrachtung nur einzelner Momentaufnahmen nicht zu erkennen sind. Auch als schnelle Qualitätskontrolle hilft das Werkzeug Animation, außergewöhnliche Ereignisse oder Fehler in Modellergebnissen zu lokalisieren.

Prinzipielles      

Das Entstehen einer Animation läßt sich gut mit der Technik des guten alten Daumenkinos erklären: Die aufeinanderfolgenden Phasen einer Bewegung werden einzeln gezeichnet und dann schnell nacheinander dargestellt. Aus den einzelnen Momentaufnahmen entsteht eine scheinbar flüssige Bewegung, wenn die Bildwechselfrequenz hoch genug ist, um das langsame menschliche Auge zu betrügen und wenn die Bilder sich nicht zu drastisch ändern. Man stellt also beispielsweise den Zustand einer physikalischen Größe zu verschiedenen Zeitpunkten dar und "merkt sich" die Bilder, um sie dann auf der Workstation schnell wieder abzuspielen.

Dieses "Merken" der berechneten Raster-Bilder kann technisch gesehen in zwei Komponenten der Workstation erfolgen: im Hauptspeicher oder auf der Festplatte. Es gibt viele verschiedene Dateiformate für digitales Video (AVI, MPEG, Quicktime, Real). Zum Wiedergeben solcher Video-Dateien benötigt man jeweils den richtigen "Player", den es in der Regel leider nicht für jedes Betriebssystem gibt.

Man kann die Animationen im DKRZ allerdings auch im DKRZ-Videolabor aufzeichnen lassen, um sie in Form einer Videocassette oder DVD einem Fernsehredakteur zu geben, einem Kollegen zu schicken oder zuhause seinen Freunden zu zeigen.

Hauptspeicher-Animation     

Idealerweise speichert man die Einzelbilder als Rastergraphiken im Hauptspeicher der Workstation ab, da die CPU sie dann viel schneller auf den Bildschirm zaubern kann, als wenn sie von der Festplatte gelesen oder gar neu berechnet werden müssen. Visualisierungsrogramme, welche diese Technik direkt beherrschen, sind beispielsweise "idt", der Metafile-Viewer von NCAR-Graphics, und "vis5d", das 3-D-Visualisierungsprogramm für meteorologische Datensätze. Es gibt aber auch "allgemeine" Animationsprogramme, die vorberechnete Rasterbilder von der Festplatte lesen, in den Hauptspeicher laden und animieren können: z.B. "animate" (eine Komponente des PD-Bildbearbeitungs-Toolsets "ImageMagick").

Die Anzahl der Bilder, die auf diese Art animiert werden können, hängt von der Bildgröße, Farbtiefe der Graphikkarte (8 oder 24 Bit pro Pixel) und der Größe des Hauptspeichers ab.

Reicht der Hauptspeicher der zur Verfügung stehenden Workstation nicht aus, um alle notwendigen Einzelbilder zu halten, merkt man dies sehr eindrucksvoll an dem Erlahmen der Maschine. Das Betriebssystem versucht, durch "Swappen", also der Auslagerung von z. Zt. inaktiven Programmen oder Programmteilen aus dem schnellen Hauptspeicher auf eine (langsame) Festplatte, der Situation Herr zu werden. Übersteigt allerdings die Größe der Animation (bei einem 8-Bit-Display: Bildgröße in Pixel mal Anzahl der Einzelbilder gleich Größe des Datensatzes in Bytes) die Größe des physikalischen Hauptspeichers, sind diese Rettungsversuche des Betriebssystems zum Scheitern verurteilt.

Festplatten-Animation, AVI   

Video-Dateien, die unabhängig von der Visualisierungssoftware sind, haben den Vorteil, dass man sie auf verschiedenen Rechnern abspielen und auch Dritten zur Verfügung stellen kann. Um Animationen bei Vorträgen einzusetzen zu können, müssen sie in einem Format vorliegen, die von der Präsentationssoftware (unter Windows meist "Microsoft Powerpoint") unterstützt wird. Microsofts AVI-Format ist in diesem Bereich sehr verbreitet. In unserem Artikel AVIs mit Linux erstellen wird detailliert beschrieben, wie man aus Einzelbildern unter Unix/Linux das eher Windows-typische Format erzeugen kann.

Videoaufzeichnung     

Digitale Videodateien, wie AVI, können trotz "intelligenter" Kompression unhandliche Größen erreichen - außerdem gibt es sicher Fälle, wo es besser ist, Videobänder oder DVDs für Präsentationen oder den Austausch wissenschaftlicher Ergebnisse zu verwenden. Mit dem Medium Video können auch längere Animationen in guter Qualität aufgezeichnet und "flüssig" abgespielt werden.

Generell gilt, daß sich alles, was auf einer Workstation über X-Windows dargestellt werden kann, im DKRZ-Videolabor auch auf Video aufzeichnen läßt. Um flüssige Animationen zu erhalten, werden die Einzelbilder auf einen speziellen Video-PC übertragen, der diese dann mit der vollen Video-Bildwechselrate von 25 Vollbildern bzw. 50 Halbbildern pro Sekunde wieder geben kann.

...und etwas mehr ins Detail     

Wie man konkret zu den Einzelbildern einer Animation kommt, hängt von der gewählten Visualisierungssoftware ab. Nachfolgend ist die Vorgehensweise für NCAR Graphics, GrADS und Vis5D beschrieben.

NCAR Graphics     

Wie oben erwähnt, bietet das Metafile-Preview-Programm "idt" die Möglichkeit der Hauptspeicher-Animation. Es ist also zunächst ausreichend, z.B. im Fortran-Programm eine ncgm-Datei mit verschiedenen Einzelbildern zu erzeugen, die dann beim Preview mit "idt" schnell hintereinander abgespielt werden können. Im NCAR-Fortran-Programm sieht die Struktur bei einer Animation über die Zeit so aus:

PROGRAM ANIM
...
CALL OPNGKS
DO N=1,NTIMES
[Lese Zeitschritt]
[Plotte Daten]
CALL FRAME
ENDDO
CALL CLSGKS
STOP
END

Die resultierende 'ncgm'-Datei "gmeta" wird mit dem Aufruf "idt gmeta" geladen. Die Betätigung des [>]-Buttons zeigt das erste Bild. Wurde im Programm ein nicht-quadratisches Aspektverhältnis eingestellt, so kann man die Nutzung der Bildfläche durch das Menü [Set Window] verbessern. Hat man viele Einzelbilder, so sollte man das Fenster relativ klein machen, damit eine Chance besteht, alle Bilder in den Hauptspeicher zu bekommen.


Abb. 2: idt-Player für NCAR-Graphiken

Drückt man den [>>]-Knopf, so sieht man eine Art Festplatten-Animation - vorausgesetzt, daß der Rechner schnell genug und das Bild relativ einfach ist. Störend ist dabei der Bildaufbau, da die vektoriell gespeicherten Bildelemente der Reihe nach gezeichnet werden, und nicht ein Einzelbild das andere komplett und schlagartig ersetzt. Um dies zu vermeiden, rastert und lädt man die Einzelbilder über den [animate]-Button in den Hauptspeicher der Workstation. Wenn alle Bilder hineinpassen, kann man jetzt mit dem [>>]-Button die Animation starten. Bei zu hohem Tempo kann man die Animation mit dem [delay]-Knopf bremsen.

Wenn die gesamten Einzelbilder in der notwendigen Größe nicht in den Hauptspeicher passen, kann man sich entweder eine MPEG-Datei mit der Animation erzeugen oder die Einzelbilder im DKRZ-Videolabor aufzeichnen und auf ein Videoband spielen lassen. In beiden Fällen muß die gesamte "ncgm"-Datei zunächst gerastert werden. Dies geschieht z.B. durch:

ctrans -d sgi -pal mypal.txt -resolution 720x576 -window 0.0:0.0:1.0:0.7 gmeta > film.sgi

rassplit film.sgi

Die resultierenden Rasterdateien film.0001.sgi, film.0002.sgi, film.0003.sgi usw. können im DKRZ-Videolabor direkt aufgezeichnet werden. Die Aufzeichnung dauert in der Regel nur etwa 1-2 Sekunden pro Bild, so daß man (nach vorheriger Absprache) in der Regel nach einer Stunde das Ergebnis (d.h. eine Minute Videosequenz) auf einer VHS-Kassette erhält.

Um einen AVI-Film zu erzeugen, den man auch ohne Fernseher und Videorecorder auf dem eigenen Rechner abspielen kann, müssen noch einige weitere Arbeitsschritte erfolgen.

GrADS     

Das interaktive 2-D-Datenanalyse und Graphik-System GrADS unterstützt Animation direkt; allerdings wird hier pro Zeitschritt jeweils eine neue Vektorgraphik aus den Modelldaten berechnet und dargestellt. Hat man einen zeitabhängigen Datensatz geladen, muß nur ein Zeitbereich statt eines einzelnen Zeitpunktes ausgewählt werden:

set t 1 100

d temp

Für einfache Darstellungen (z.B. einige wenige Isolinien) ist die Geschwindigkeit dieser Animation in der Regel - abhängig von der Workstation und Feldgröße - ausreichend.

Eine weitere Möglichkeit besteht darin, einen GrADS-Metafile mit allen Bildern der Animation zu erzeugen. Hier ist allerdings schon ein GrADS-Script erforderlich, welches eine Schleife über die Zeit beinhaltet.

...
'enable print <Grads-Metafilename>'
...
t=1
while (t < tmax))
'set t 't
...
'd temp'
'print'
...
t = t + incr
endwhile

Diesen Metafile kann man mit dem GrADS-Metafile-Interpreter "gxtran" als Animation anschauen:

gxtran -i <Grads-Metafilename> -a

Gegenüber der direkten Animation innerhalb von GrADS müssen hier die Isolinien und Farbflächen nicht erst aus den Rohdaten berechnet werden, so daß die Animation etwas schneller ablaufen kann. Da hier jedoch die als Vektorgraphik abgespeicherten Bildinformationen aus einer Datei gelesen, über die CPU interpretiert, gerastert und in einem X-Fenster dargestellt werden muß, kann sich auch diese Methode als ungünstig erweisen. Komplexere Darstellungen können erforderlich machen, diese als Rastergraphik-Dateien abzuspeichern und mit anderen Werkzeugen weiterzuarbeiten.

Seit GrADS 1.8 lassen sich Rasterbilder (png, gif) innerhalb eines GrADS-Scriptes mit dem Befehl 'printim' abspeichern - mit dem Vorteil, das dies auch im Batch Mode und mit beliebigen Auflösungen funktioniert! Die abgespeicherten Bilder können gleich während der Ausführung des Scriptes umbenannt, skaliert und in das "gewünschte" Zielformat gebracht werden.

Es folgt ein Beispiel-Gerüst für ein Script, in dem in einer Schleife über die Zeit eine physikalische Größe dargestellt, die Bilder als Rasterdateien abgespeichert und mit dem Programm "convert" (ImageMagick) in das gewünschte Ausgabeformat gebracht werden:

...
t=1
while (t < tmax))
'set t 't
...
...
...
'd temp'
pic = lead(t)
'printim bild.'pic'.png x1080 y864'
'c'
'!convert -scale 720x576 bild.'pic'.png bild.'pic'.jpg'
'!\rm bild.'pic'.png'

...
t = t + incr
endwhile

***************************************
function lead(n)
***************************************
* leading zeros
if (n <10); r='000'n; return r; endif
if (n <100); r='00'n; return r; endif
if (n <1000); r='0'n; return r; endif
if (n <10000); r=n; return r; endif

In diesem Beispiel wurde das ".jpg"-Datenformat und die Fenstergröße 720 mal 576 gewählt, weil dieses Format ist, welches von vielen Programmen unterstützt wird. Mit der "function lead(n)" werden in diesem Beispiel die führenden Nullen in den Dateinamen erzeugt, die für die Weiterverarbeitung zu einem Film oft notwendig sind.

Vis5D     

Dieses frei verfügbare 3-D-Visualisierungsprogramm für meteorologische Modelldaten läßt sich besonders gut auf Graphik-Workstations einsetzen, die über eine Hardware-3D-Beschleunigung verfügen. Speziell auf Maschinen, bei denen die Graphik-Sprache OpenGL direkt über die Graphik-Hardware unterstützt wird (z.B. Silicon Graphics), bietet dieses Programm ein sehr hohes Maß an Interaktivität selbst bei komplexen Darstellungen. Dies gilt für die Animation zeitabhängiger Abläufe des modellierten Wettergeschehens - ohne die Notwendigkeit der expliziten Zwischenspeicherung von Einzelbildern.


Abb. 3: Vis5D-Oberfläche

Doch auch mit weniger leistungsstarken Workstations läßt sich dieses Programm sinnvoll einsetzen, um die zeitlichen Änderungen visualisierter Modellgrößen zu studieren. Hier muß die Darstellung allerdings für jede Änderung der 3-D-Perspektive komplett neu berechnet werden, was je nach gewählter Feldgröße und Komplexität der Darstellung einen hohen Rechenaufwand erfordern und einige Sekunden dauern kann.

Bei Plattformen ohne 3-D-Beschleunigung bietet Vis5D das Werkzeug "Hauptspeicheranimation" als Ersatz an: Die Betätigung des Buttons "ANIM-REC" bewirkt, daß die aktuelle Darstellung (Kameraperspektive sowie Werkzeugauswahl und Einstellungen) für alle im Datensatz enthaltenen Zeitpunkte berechnet und die resultierenden Rasterbilder im Hauptspeicher gesammelt werden. Wenn alle Bilder hereinpassen, läßt sich z.B auch mit einer SparcStation 20 eine flüssige Animation auf den Bildschirm zaubern.

Auch hier gibt es die Möglichkeit, die Einzelbilder einer Animation zum Zwecke der Erstellung von MPEG-Filmen oder der Aufzeichnung von Videos abzuspeichern. Leider geht dies nicht direkt - man muß ein TCL-Script ("Tool Command Language") schreiben (oder kopieren) und über den "SCRIPT"-Button aufrufen. Hier ist ein Beispiel-Script[2], welches die Bilder für alle vorhandenen Zeitpunkte bei unveränderten Werkzeugeinstellungen berechnet, ausgegeben und analog zu obigem GrADS-Beispiel mit dem SDSC-Tool "imscale" in das gewünschte Ausgabe-Format bringt:

# save_anim.tcl

set base "test."
set ext ".sgi"

# Prozedurdefinition----------------------------------
proc lead {num} {
# Fuehrende Nullen fuer vierstellige Numerierung
set leadstr "000"
if {$num>=10} {set leadstr "00"}
if {$num>=100} {set leadstr "0"}
if {$num>=1000} {set leadstr ""}
return $leadstr
}

# Main script -----------------------------------------
set ext0 ".xwd"
set format VIS5D_XWD
set numtimes [ vis5d_get_numtimes $ctx ]

for {set time 1} {$time<=$numtimes} {set time [expr $time+1]} {
vis5d_set_timestep $ctx [expr $time-1]
vis5d_draw_frame $ctx
set L [ lead $time ]
set name1 $base$L$time$ext0
set name2 $base$L$time$ext
vis5d_save_window $ctx $name1 $format

# Konvertieren der .xwd-Dateien in das gewuenschte Output-#  Format
# ----mit SDSC image tools "imscale"
set cmd "imscale -xsize 720 -ysize 576 $name1 $name2"
eval exec $cmd
set cmd "rm -f $name1"
eval exec $cmd
}

Über TCL-Scripts läßt sich bei der Erzeugung von Animationen mit Vis5D noch einiges mehr bewirken als nur die reine Abspeicherung der Bilder: Beispielsweise lassen sich die Kameraposition und die Werkzeugparameter (u.a. die Position eines Schnittes durch die Daten) ebenfalls variieren.

Tips und Tricks     

Wie erhält man eine möglichst gute Bildqualität? Diese Frage ist von besonderer Bedeutung, wenn man eine Animation auf Video aufzeichnen möchte. Die Eigenheiten des Mediums "Analoges Video" machen es erforderlich, schon bei der Konzeption der aufzuzeichnenden Graphiken einige Grundregeln zu beachten, da sich das Ergebnis auf dem Fernsehschirm sonst nicht wie gewünscht darstellt.

Dünne (waagerechte) Linien verbunden mit einem starken Helligkeitskontrast bewirken beispielsweise aufgrund der Halbbildtechnik ein starkes "Flickern", was von den eigentlichen Bildinhalten ablenkt.

Unterscheidet sich ein Bildelement vom Hintergrund oder benachbarten Bildelementen nur durch einen Farbkontrast und nicht durch einen Helligkeitskontrast, so wird die Grenze dieses Elements spätestens beim Abspielen vom VHS-Band unscharf und schlecht zu erkennen sein. Das Videosignal räumt dem Helligkeitssignal eine wesentlich höhere Bandbreite ein als den Farbsignalen.

Ein weißer Hintergrund lenkt ab.

Stark gesättigte Farben meiden!

Ein probates Mittel, um das unschöne Flickern von Linien zu reduzieren, ist das Oversampling. Man benutzt einfach dickere Linien und speichert größere Rasterbilder (z.B. 1080x864, 1440x1152) ab, die dann in einem zweiten Schritt wieder auf die gewünschte Bildgröße herunterskaliert werden. Das kann bei Vis5D oder GrADS schon innerhalb der Scripte durchgeführt werden: In obigen Beispielen ist aus diesem Grund das Programm "convert" mit der angegebenen Zielgröße 720 mal 576 eingesetzt worden. Der Erfolg ist ein ruhigeres Bild und weniger Geflimmer.

Videofilme     

Eigentlich ist oben schon alles gesagt worden, was notwendig ist, um Bilder für die Aufzeichnung im DKRZ-Videolabor zu erzeugen. Wer also eine oder mehrere Filmsequenzen aufzeichnen und als Kassette mitnehmen möchte, meldet sich bitte einfach telefonisch oder per Email beim DKRZ:

Michael Böttinger; Tel.: 040 460094 - 344
 
 
Und nun viel Spaß beim Animieren und Filmeproduzieren!

Referenzen     

NCAR Graphics Manpages (z.B. "man idt")

Interactive Documentation for NCAR Graphics Version 4.3 ( http://www.dkrz.de/ngdoc/ng4.0.1 )

DKRZ Einführung in GrADS (http://www.dkrz.de/pdf/manuals/vis/GrADS_intro_dt_v2.2.pdf) )

GrADS Homepage ( http://grads.iges.org/grads/head.html )

Vis5D-Homepage ( http://www.ssec.wisc.edu/~billh/vis5d.html )


[1] Animation bedeutet die Erstellung von Bildserien, die bei hinreichend schneller Wiedergabe den Eindruck von kontinuierlicher Bewegung hervorrufen.
Web-Administration; 26. Juli 2004
Deutsches Klimarechenzentrum GmbH | Impressum