Prozedurale Animation
# Prozedurale Animation

Prozedurale Animation (engl.: procedural animation) ist ein Sammelbegriff für eine Reihe von Animationstechniken für Filme und Computerspiele, bei denen Bewegungen nicht anhand von Schlüsselbildern, sondern anhand definierter Regeln und Abläufe berechnet und kontrolliert werden. Sie werden hauptsächlich zur Darstellungen physikalischer Phänomene (Feuer, Rauch) und natürlicher Bewegungsabläufe (Gestiken, Vogelflug, u. ä.) eingesetzt.

## Beschreibung

Prozedurale Animationen basieren auf algorithmischen Verhaltensbeschreibungen und enthalten sämtliche Details einer Animation. Anhand des zugrunde liegenden Regelwerks müssen Animationen nicht zuvor exakt spezifiziert, im Voraus erstellt und abgespeichert werden, sondern können bei Bedarf situationsgerecht errechnet werden. Das erfolgt durch die Übergabe entsprechender Parameter, beispielsweise über eine Benutzeroberfläche oder auch durch andere Programme. Die Zahl der Parameter ist üblicherweise kleiner als die für eine exakte Animationsbeschreibung notwendige Informationsmenge, weswegen hier auch von einer Datenvermehrung (database amplification) gesprochen wird und ein wesentliches Merkmal prozeduraler Animationen ist. Ebenfalls kennzeichnend ist das sogenannte Kontrollproblem der prozeduralen Animationen, denn nach der Initiierung der Animation gibt es nur noch wenige Möglichkeiten, das Ergebnis zu beeinflussen. Lösungsansätze sind entweder die Anpassung der zugrunde liegenden Funktion oder die Veränderung der Parameter.

Prozedurale Animationen haben den Vorteil, dass sie aufgrund ihrer Eigenschaften sehr kompakt sind und in der Regel wenig Speicherplatz verbrauchen. Auch sind sie nicht in der Auflösung festgelegt, sondern können an die Anforderung angepasst werden. Nachteilig ist dagegen, dass sie einen hohen Entwicklungsaufwand mit sich bringen, sowie schwer zu implementieren und zu testen sind. Für neue Animationseffekte müssen zudem entsprechende Spezialfunktionen entwickelt werden. Auch können aufgrund des Kontrollverlusts bei der Ausführung unerwartete Ergebnisse entstehen.

### Verwendung im Film

In Star Trek II: Der Zorn des Khan kamen erstmals Partikelanimationen in einem Kinofilm zur Anwendung, um das Feuer der sogenannten Genesis-Sequenz zu simulieren. Mit Hilfe sogenannter Flocking-Systeme wird das Verhalten von Schwärmen berechnet, wie etwa die Bewegungen zahlreicher Büffel einer Herde in Disneys Der König der Löwen.

### In Computerspielen

Im Computerspiel-Bereich bilden prozedurale Animation den Kern von Grafik-Engines, beispielsweise in Form von Partikelsystemen zur Animation von Feuer-, Rauch- oder Explosionseffekten. Das Action-Adventure Outcast verwendet prozedurale Animationen zur Darstellung von Gestiken und Bewegungsabläufen der Spielfiguren, hier auch in Verbindung mit Schlüsselbildanimation und Motion Capture.

## Programmierung

Prozedurale Animation wurde ursprünglich im Bereich Computeranimation verwendet, später erkannte man jedoch, dass es auch für die Steuerung von humanoiden Robotern angewendet werden kann. Es werden Computerprogramme genutzt, um die Animation zu berechnen. In seiner Basis-Funktionalität bestehen diese Computerprogramme aus einer sogenannten Finite-State-Maschine. Das ist in der Informatik die kleinste Form eines Computerprogramms. Es kann genau einen Zustand einnehmen und dann zu einem anderen Zustand wechseln. Man kann eine Finite-State-Maschine auch in der Sprache C implementieren, dazu erstellt man eine globale Variable, welche den aktuellen Status des Programms besitzt, und im Programm nutzt man if-then-Bedingungen um die Variable zu verändern.

Obwohl derartige Automaten nicht sehr praxistauglich scheinen, werden sie in der Kreativ-Branche zur Entwicklung von Computerspielen häufig eingesetzt. Ein Charakter kann sich immer nur in einem Modus befinden: schwimmen, gehen, rennen oder springen. Über einen Tastendruck kann der Spieler den Modus ändern, wodurch eine vorgefertigte Animation abgespielt wird. Um das Jahr 2000 herum hat die Firma NaturalMotion dieses Konzept zu einer Animation Engine erweitert, welche in zahlreichen Computerspielen eingesetzt wird. Das neue daran ist, dass auch die Übergänge zwischen den Aktionen flüssig sind und eine realistische Animation erlauben.

Von Anfang an wurde prozedurale Animation mit verschiedenen Techniken implementiert. Einmal die bereits genannte Finite-State-Maschine, aber auch objektorientierte Techniken(, page 86ff), neuronale Netze ( page 16) oder genetische Algorithmen wurden verwendet. Als klassische echte prozedurale Animation gilt jedoch bis heute diejenenige, welche aus manuell erstelltem Sourcecode besteht, meist in der Programmiersprache C++. Um den Programmieraufwand zu minimieren, wurden diese Programme in Bibliotheken gekapselt. Meist als closedSource Projekte aber in neuerer Zeit auch als Open Source.

Um eine simple Prozedurale Animation zu programmieren, reichen weniger als 100 Zeilen Quellcode aus. Man definiert darin eine Klasse, die verschiedene Methoden enthält und jede Methode aktiviert eine vordefinierte Animationsabfolge. Jetzt kann man die Klassenmethoden von außerhalb triggern (beispielsweise über eine Joystickabfrage) und wenn der Spieler auf die Taste A drückt, wird Motion Sequence A abgespielt. Dieses Konzept lässt sich nach oben skalieren, indem man den Codeumfang erhöht, mehr Motion Primitive einbaut, und einen Planner nutzt um Bewegungsübergänge zu berechnen. Teilweise werden auch Inverse Kinematiken und gait-Patterns (Vorgaben zum Setzen von Beinen) mit in eine Animation Engine aufgenommen.

Programmtechnisch als schwer zu realisieren gelten komplexe Animationen, bei denen eine Figur ein Objekt aufnehmen soll und die Finger realistisch animiert sind. In einfachen Spielen wird auf derartig hochentwickelte prozedurale Animation verzichtet und die Bewegung wird nur angedeutet. Das beste Beispiel ist im Computerspiel Maniac Mansion zu sehen, wo nur sehr primitive Animationen implementiert sind.

Schaut man sich die Geschichte der prozeduralen Animation an, so stand das Konzept von Anfang an in der Kritik, weil der Programmieraufwand als zu hoch eingeschätzt wurde. Man hat früh damit begonnen, nach vermeintlichen Alternativen zu suchen. Beispielsweise dadurch, dass man mit Motion Tracking zuerst Datenbanken von Schauspielern erzeugt hat, diese in Einzelsequenzen unterteilt hat und dann die Sequenzen neu zusammengebaut hat. Tatsächlich ist für diese Animationsfolge keine Programmierung erforderlich, vielmehr arbeitet das Konzept datengetrieben (datadriven). Leider wirken die Resultate häufig unrealistisch, so dass bis heute keine Alternative zur prozeduralen Animation in Sicht ist.

