Das Simulationssystem
Allgemein
Maxon legt mit einer neuen Simulationstechnik den Grundstein für ein neues Dynamicssystem in Cinema 4D. Es handelt sich dabei um ein System, das alle möglichen Arten von physikalischem Verhalten berechnen kann, als da wären z.B. Rigid/Soft Body-, Kleidung- und Spline-Simulation ("Seil"). Zudem gehört auch das Pyro-System in diese Kategorie, mit dem sich Rauch, Feuer und Explosionen simulieren lassen.
Derzeit funktionieren mit dem neuen Simulationssystem alle Tags, die Sie im Tag-Unterverzeichnis Simulations-Tags finden:
-
Rigid Bodies sind unverformbare, feste Objekte, die Gravitations- und Kollisionsgesetzen folgen. Sie können polygonalen Objekten und polygonerzeugenden Generatoren zugewiesen werden.
-
Kleidung, Soft Body, Ballon: kann polygonalen Objekten und polygonerzeugenden Generatoren zugewiesen werden. Soft Body und Ballon nutzen ebenfalls das Kleidungs-Tag - nur mit anderen Voreinstellungen.
-
Seil (das frühere Spline-Dynamics-Tag): kann Splines zugewiesen werden.
-
Konnektor: wird Seil-, bzw. Kleidungs-Tag tragenden Objekten, sowie Rigid Bodies zugewiesen und befestigt diese aneinander.
-
Kleidungsgürtel (das frühere Gürtel-Tag): wird Kleidungs-Tag tragenden Objekten zugewiesen und befestigt diese an anderen polygonalen, nicht simulierten Objekten.
-
Seilgürtel (das frühere Haar-Constraint-Tag): wird Seil-Tag tragenden Objekten zugewiesen und befestigt diese an anderen polygonalen, nicht simulierten Objekten.
-
Kollision: wird nicht simulierten polygonalen Objekten und polygonerzeugenden Generatoren zugewiesen, die dem Simulationssystem als Hindernis dienen, d.h. Objekte können mit diesen kollidieren und druchdringen sie nicht.
-
Pyro: weisen Sie Polygon- oder Spline-Objekten zu, die als Emitter für Rauch und Feuer oder als Ausgangsbereich für Explosionen dienen sollen. Die Voreinstellungen der Parameter sorgen für eine Erzeugung von Rauch und Flammen.
-
Pyro Brennstoff: ist mit dem Pyro-Tag identisch, nur dass hier die Voreinstellungen bereits für die Erzeugung von Explosionen angepasst wurden.
Das neue Kleidungs/Spline-Simulationssystem arbeitet intern anders als das alte System. Es gibt folgende grundlegenden Unterschiede:
-
Altes System: das alte System basierte auf Impulsen und Kräften, die zu Beschleunigungen und Geschwindigkeiten führten. Massen und Federn spielten dabei eine große Rolle.
-
Neues Simulationssystem: Objektpunkte werden mit je nach Anwendungsgebiet spezifische Regeln (Constraints genannt) verbunden. So gibt es für Kleidung z.B. 2 Haupttypen von Constraints: Abstandsbeschränkungen für Punkte, die durch Mesh-Kanten verbunden sind und Biegebeschränkungen für nebeneinanderliegende Mesh-Polygone. Erstere versuchen den Punktabstand konstant zu halten, letztere den Winkel zwischen den Polygonen. Dann gibt es z.B. noch Kontakt-Constraints, die Punkte (bzw. Kanten, Dreiecke), die sich zu nahe kommen, sachte auseinanderschieben, um Durchdringungen zu vermeiden. Für jedes Animationsbild muss ein sogenannter “Solver” dies alles unter einen Hut bringen und die Punkte entsprechend positionieren.
Das klingt alles kompliziert, reduziert sich im Endeffekt aber auf die folgenden Vorteile: Das neue Simulationssystem ist schneller (lässt sich z.B. auch auf der GPU berechnen), präziser, realistischer, stabiler und einfacher in der Bedienung. Außerdem ist mit dem neuen System folgendes möglich:
-
Die meisten der Simulations-Kraftobjekte wirken.
-
Die Zerreissenfunktionalität benötigt kein Kleidungs-Oberflächen-Objekt.
-
Das Kleidungs-Tag tragende Objekt muss nicht mehr polygonal sein, kann also auch ein Generator sein.
-
Bei klonenden Generatoren wie z.B. Array- oder Klon-Objekt gehören die Simulations-Tags an diesen Generator, jeder Klon erhält dann diese Eigenschaften. Bei gewöhnlichen Hierarchien muss jedes Unterobjekt mit einem Simulations-Tag ausgestattet werden, das an der Simulation teilnehmen soll - hier ist also die Hierarchie bzgl. übergeordneten Objektbewegungen aufgehoben (gilt nicht für die Vererbung von Pyro-Emittern auf Unterobjekte).
Das neue Simulationssystem hat - wie von Simulationssystemen allgemein gewohnt - ebenfalls Solver-Grundeinstellungen, die Sie unter “Projekteinstellungen/Simulation” finden. Da sich diese Voreinstellungen - natürlich - auf das Simulationsverhalten auswirken, können Sie verschiedene Simulationen mit unterschiedlichen Voreinstellungen versehen, indem Sie mehrere Simulationsszenen-Objekte verwenden, die identische Parameter wie die Simulations-Projektvoreinstellungen vorhalten. Den Simulationsszenen-Objekten können dann unterschiedliche Tags/Kräfte/Kleidungsgürtel und -Kollisionsobjekte zugewiesen werden. Die in einem Simulationsszenen-Objekt enthaltenen Tags interagieren miteinander, nicht jedoch mit denen eines anderen Simulationsszenen-Objekts.
Tipps und Tricks für Kleidungs-, Ballon- und Soft-Body-Simulationen
-
Zu Beginn einer Simulation sollte es unter Berücksichtigung der Einstellung Dicke zu keinen Kontakten kommen. Ansonsten wird bei Simulationsstart innerhalb eines Animationsbildes alles aus der Kontaktzone weggeschoben, was dann zu Knittern und Zittern führen kann.
-
Bei zu schnellen oder abrupten Bewegungs- oder Deformationsänderungen kann es zu Durchdringungen bei der Kollision kommen. Allgemein hilft hier das Erhöhen der Zwischenschritte.
-
Bei Simulationselementen, die weit vom Weltursprung entfernt sind, kann es zu mathematischen Rundungsfehlern kommen (GPUs rechnen mit 32 Bit - statt 64 Bit bei der CPU), was sich in seltsamem Simulationsverhalten äußern kann (z.B. verschiedenes Kleidungsverhalten bei gleichen Einstellungen, z.B. 2 Fahnen, die weit voneinander entfernt sind flattern total unterschiedlich). Hier kann es helfen, die zu simulierenden Objekte näher an den Weltursprung zu rücken oder Szenenskalierung zu variieren.
-
Es ist z.B. nicht ganz einfach, physikalisches Textilverhalten zu kontrollieren. Hauptsächlich ist textiler Stoff charakterisiert durch seine Steifigkeit. Im neuen Simulationssystem gibt es zwar einen entsprechenden Parameter Biegsamkeit, allerdings ist dieser von einer ganzen Reihen Faktoren abhängig, die die Steifigkeit beeinflussen. Es sind dies z.B. Zwischenschritte, Iterationen (beide Simulations-Projekteinstellungen), Biegsamkeit, Dehnbarkeit (Kleidungs- bzw. Seil-Tag) und auch der Meshdichte. Deshalb können Angaben wie z.B. “Biegsamkeit = 1 und das Objekt verhält sich wie Leder” nicht gemacht werden.
-
Die eben schon erwähnte Meshdichte und -verteilung hat ebenfalls großen Einfluss auf das Verhalten einer Simulation.
Sie sehen auf dieser Abbildung 5 Kugeln mit gleichem Durchmesser, exakt gleichen Kleidungs-Tag-Einstellungen, aber verschiedenen Meshes. Beim Fallen und Kollidieren mit der Ebene werden sich diese Objekte völlig unterschiedlich verhalten. Die zweitletzte Kugel mit dem dichten Mesh wird sich viel stärker verformen als die anderen, die Kugel rechts hat auf der rechten Seite eine viel höhere Meshdichte, was die Masse dort konzentriert. Somit wird sich diese nach Bodenkontakt nach unten rechts drehen.
-
Sie können Rechenzeit sparen, wenn die Simulation mit einem niedrig aufgelösten Ersatz-(Proxy-)Objekt arbeitet, während z.B. der Mesh-Deformer dafür sorgt, dass die Deformation auf ein hochaufgelöstes “Beauty”-Objekt übertragen wird. Beachten Sie in diesem Zusammenhang die Option Vor Generatoren simulieren in den Projektvoreinstellungen.
-
In seltenen Fällen kann es vorkommen, dass zu viele Kollisionen gleichzeitig erfolgen und die Simulation mit einer entsprechenden Fehlermeldung anhält. In solchen Fällen sollten Sie die bei der Kollision beteiligten Objekte in einer kleineren Auflösung (oder lassen Sie niedrig aufgelöste Proxy-Objekte kollidieren) verwenden. Alternativ erhöhen Sie Durchgänge in den Projektvoreinstellungen - die Anzahl der gleichzeitigen Kollisionen sinkt dadurch (s.a. Geschwindigkeit abschneiden).
Limitationen
-
Der Geschwindigkeitsvorteil bei der Berechnung auf der Grafikkarte (GPU) stellt sich erst bei hinreichend komplexen Simulationen ein. Bei kleinen Szenen, bei denen nur ein paar hundert Polygone beteiligt sind, kann die CPU schneller sein.
-
Beim Berechnen auf der GPU kommt es beim Starten der Simulation zu einer kleinen Verzögerung. In dieser Zeit werden eine Vielzahl von Daten kompiliert bzw. in den Grafikkartenspeicher geladen. Das passiert nur bei Erststart, wenn Sie zurückspringen und erneut starten, geht es unverzüglich los.
-
Simulationen führen auf verschiedenen Rechner zu verschiedenen Ergebnissen. Ebenso kommt es zu Unterschieden, wenn Sie die Simulation auf der CPU oder der GPU (auszuwählen hier: Hardware) berechnen lassen. Deswegen sollten Sie Simulationen immer backen/cachen, wenn Sie identische Ergebnisse benötigen (z.B. beim Rendern auf einer Renderfarm). Sie tun das das z.B. beim Kleidungs-Tag im Tab “Cache”.
-
Simulationen mögen starke, gegensätzliche Kräfte oder Constraints nicht. Dabei kann es zu paradoxen Kräften und Bewegungen kommen. Eine mögliche Lösung wäre z.B. wirkende Kräfte zu reduzieren. So können Sie z.B. bei den Konnektoren Dehnbarkeit erhöhen. Und/oder vermeiden Sie zu große Massen (und damit zu große Gewichtskräfte).
-
Beim Verlassen der Szene wird das Simulationsergebnis aus dem Speicher gelöscht. Die Simulation muss erneut berechnet werden. Sie können die Simulation allerdings backen, um sie stets parat zu haben.
-
Beachten Sie, dass Simulationen beim Laden oder Wechseln zu einer anderen Szene aus dem Speicher gelöscht werden. Lassen Sie die Szene ggf. neu berechnen.
.