Prozedurale Animation

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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.[1]

Beschreibung[Bearbeiten | Quelltext bearbeiten]

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[2]. 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.[3]

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.[4]

In diesem Beispiel einer prozeduralen Animation treibt ein Rad ein zweites Rad an, das wiederum ein drittes bewegt. Der Radius und die Position des zweiten Rads variieren dabei mit der Zeit, die Geschwindigkeit und Rotation des dritten Rads werden durch Berechnung entsprechend daran angepasst.

Verwendung im Film[Bearbeiten | Quelltext bearbeiten]

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.[5]

In Computerspielen[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Prozedurale Animation wurde ursprünglich im Bereich Computeranimation verwendet[6], 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[7]. 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[8], 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([9], page 86ff), neuronale Netze ([10] 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[11].

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[12] (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.[13] 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[11]. 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)[14]. Leider wirken die Resultate häufig unrealistisch, so dass bis heute keine Alternative zur prozeduralen Animation in Sicht ist.

Literatur[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Siemon, Andreas: Avatare in Katastrophensimulationen -- Entwicklung eines Katastrophen-Trainings-Systems zur Darstellung von Beteiligten in Großschadenslagen. In: Dissertation, kassel university press. 2013, S. 38.
  2. Dill, Kevin and Dreger, Oliver: Building an Angry Grandmother. In: Proceedings of the 2011 Spring Simulation Interoperability Workshop. 2011.
  3. Jackèl et al. 2006, 141f.
  4. Jackèl et al. 2006, 142.
  5. Barbara Flückiger: Computer-Animation II: Verfahren. In: Lexikon der Filmbegriffe, Institut für Neuere Deutsche Literatur und Medien, Christian-Albrechts-Universität zu Kiel. Zuletzt abgerufen am 11. Juli 2012.
  6. Reynolds, Craig W: Computer animation with scripts and actors. In: ACM SIGGRAPH Computer Graphics ACM. 16, 1982, S. 289--296.
  7. Kalisiak, Maciej and Van de Panne, Michiel: A grasp-based motion planning algorithm for character animation. In: The Journal of Visualization and Computer Animation Wiley Online Library. 12, 2001, S. 117--129.
  8. Okan Arikan and David A. Forsyth and James F. O Brien: Motion synthesis from annotations. In: ACM SIGGRAPH 2003 Papers on - SIGGRAPH 03 Association for Computing Machinery ({ACM}). 2003.
  9. Faloutsos, Petros and Van de Panne, Michiel and Terzopoulos, Demetri: Composable controllers for physics-based character animation. In: Proceedings of the 28th annual conference on Computer graphics and interactive techniques ACM. 2001, S. 251--260.
  10. Brock, Oliver and Kuffner, James and Xiao, Jing: Motion for manipulation tasks. In: Springer Handbook of Robotics Springer. 2008, S. 615--645.
  11. a b Gillies, Marco and Spanlang, Bernhard: Comparing and evaluating real time character engines for virtual environments. In: Presence MIT Press. 19, 2010, S. 95--117.
  12. Karim, Ahmad Abdul: Procedural locomotion of multi-legged characters in complex dynamic environments: real-time applications. In: Universite Claude Bernard-Lyon I. 2012.
  13. Wheatland, Nkenge and Wang, Yingying and Song, Huaguang and Neff, Michael and Zordan, Victor and Jörg, Sophie: State of the art in hand and finger modeling and animation. In: Computer Graphics Forum Wiley Online Library. 34, 2015, S. 735--760.
  14. Lee, Yoonsang and Kim, Sungeun and Lee, Jehee: Data-driven biped control. In: ACM Transactions on Graphics (TOG) ACM. 29, 2010, S. 129.