Simulation

Die meisten der folgenden Einstellungen können animiert werden. Damit ist es möglich, die Einstellungen an die verschiedenen Phasen einer Simulation anzupassen, d.h. zum Beispiel, Sie können rechenzeitintensive Parameter wie Zwischenschritte oder Iterationen dann erhöhen, wenn Sie wirklich gebraucht werden und in Phasen wo z.B. keine Kollisionen stattfinden, stellen Sie diese auf niedrige Werte, um die Simulation dort beschleunigt ablaufen zu lassen.

Zwischenschritte[1..200]

Dieser Parameter ist ausschlaggebend für die Präzision der Simulation. Je höher die Werte, desto genauer wird gerechnet und desto präziser erfolgt die Kollisionsabfrage (allerdings ist auch die Berechnungszeit größer).

Jedes Animationsbild wird intern zeitlich mit den hier angegebenen Zwischenschritten unterteilt. Für jeden Zwischenschritt wird der Simulationsalgorithmus (Berechnung der Constraint-Wirkung, Objektpunktpositionen und -geschwindigkeiten etc.) komplett durchgerechnet.

Besonders im Falle von Durchdringungen bei hohen Geschwindigkeiten sollten Sie diesen Wert erhöhen. Stellen Sie sich ein schnelles Objekt vor, das mit einem herabhängenden Tuch kollidiert. Angenommen, in Bild 12 ist es links neben dem Tuch und in Bild 13 schon rechts daneben. Cinema 4D würde hierbei keine Kollision feststellen (wenn Zwischenschritte auf 1 stünde). Bei mehreren Zwischenschritten, in denen dann z.B. Bild "12.2" und Bild "12.3" berechnet würden, könnte die Kollision festgestellt und korrekter verarbeitet werden.

Jetzt muss leider ein Nachteil hervorgehoben werden: Zwischenschritte (und nicht nur diese, auch Iterationen) haben einen Einfluss auf die Steifigkeit der zu simulierenden Kleidungsobjekte. Je größer Zwischenschritte/Iterationen, desto steifer - oder anders gesagt, desto genauer, also präziser wird z.B. Biegsamkeit/Dehnbarkeit eingehalten - verhält sich der Stoff.

Vereinfacht gesagt passiert das deswegen: erst bei sehr vielen Zwischenschritten und Iterationen nähert sich das Ergebnis der echten Lösung an. Meistens müssen aus Geschwindigkeitsgründen diese Werte kleiner gestellt werden. D.h. der Solver, der zahllose Constraints berücksichtigen muss, kürzt ab und weicht gegenüber dem echten Ergebnis ab. Diese Abweichung macht sich primär in fehlender Steifigkeit (= gummiartiges Verhalten), aber eventuell auch ungenauerer Kollision etc. bemerkbar.

Hinweis: Sollte es zu vielen Durchdringungen kommen, versuchen Sie zuerst Durchgänge zu erhöhen, bevor Sie das dann mit Zwischenschritten tun. Erstere rechnen schneller.

Beachten Sie, dass es bei sehr hohen Werten (z.B. 200) zu paradoxen Verhaltensweisen kommen kann: anstatt dass die Präzision zunimmt, wird sie schlechter. Der Grund hierfür liegt in der 32-Bit-Rechengenauigkeit der GPU. Probieren Sie stattdessen den nächsten Parameter Iterationen - statt Zwischenschritte - zu erhöhen. Siehe auch Tipps und Tricks für weitere entsprechende Maßnahmen.

Iterationen[0..1000]

Intern wird ein iterativer Algorithmus verwendet, der sich dem mathematisch(!) optimalen Endergebnis (= alle Constraints werden eingehalten) möglichst gut annähert. Iterationen legt dabei fest, wie oft die zahlreich wirkenden Constraints pro Zwischenschritt durchgerechnet werden.

Die praktischen Auswirkungen z.B. auf das Kleidungsverhalten ist: der Stoff wird steifer - weil Constraints besser eingehalten werden.

Höhere Werte können Punktezittern (“Jitter”) zu vermeiden helfen.

S.a. vorherigen Parameter Zwischenschritte, beide Einstellungen sind eng miteinander verküpft und haben ähnliche Wirkungen.

Wenn Sie Iterationen auf 0 stellen, kommt intern ein anderer Solver zum Einsatz, der langsamer als der Standard-Solver konvergiert, im übertragenen Sinne also die Constraints etwas laxer behandelt. Gleichzeitig wird Glätteniterationen auf 1 gesetzt.

Damit erzielen Sie sich eine größere Robustheit und Homogenität der Simulation. Allerdings wirken Kleidung und Seile dann dehnbarer.

Besonders bei Simulationen mit vielen Constraints, die mitunter gegeneinander arbeiten - Constraint A will z.B. einen Punkt nach links bewegen, Constraint B nach rechts - kann es zu Punktezittern (s.a. nächsten Absatz) kommen. In solchen Fällen kann der andere Solver bessere Ergebnisse liefern.

Um die größere, gummiartigere Dehnbarkeit auszugleichen, wird empfohlen, Zwischenschritte zu erhöhen.


Vermeiden von Punktezittern (“Jitter”)

Die folgenden beiden Einstellungen dienen primär dazu, ein auf kleine Bereiche reduziertes Punktezittern zu reduzieren.

Allgemein kann es auch helfen, Zwischenschritte zu reduzieren und Iterationen zu erhöhen.

Glätteniterationen[0..1000]

Bei den internen Punktberechnungen durch die verschiedenen Constraints, die an diesen “zerren”, kann es zu großen Punktabweichungen kommen, die den Eindruck erwecken können, dass zusätzliche, plötzlich auftretende Impulse wirken.

Mittels Glätteniterationen > 0 werden zusätzliche, mittelnde Berechnungen vorgenommen, wodurch dieser Effekt an Wirkung verliert, es also zu weniger Zittern kommt.

Verwenden Sie diesen Parameter nur, wenn er notwendig ist, da er Nebeneffekte wie etwa sich ändernde Steifigkeiten zur Folge haben kann.

Dämpfung[0..100%]

Mittels dieses Parameters kann Geschwindigkeit bzw. Energie aus dem System genommen werden. Es sind kleine Werte so bis ca. 3% angeraten. Höhere Werte lassen die Simulation dann zunehmend wie unter Wasser getaucht erscheinen.

Simulationen neigen dazu, gelegentlich zu “explodieren”, dem kann durch vorsichtiges Erhöhen dieses Wertes entgegen gearbeitet werden.

Sie können Dämpfungswerte - hier sogar getrennt für lineare und Drehbewegungen - auch auf entsprechender Tag-Ebene (z.B. Überschreiben) einstellen

Geschwindigkeit abschneiden

Beschleunigung abschneiden

Diese beiden Einstellungen dienen primär dazu, instabile Simulationszustände - die in einem Einfrieren der Simulation gipfeln könnten - zu verhindern. Es werden dabei zu große Geschwindigkeiten bzw. Beschleunigungen (beide auf Punktebene) begrenzt. Das hilft dabei, Kollisionen zu verringern und Durchdringungen zu vermindern, die andernfalls nur durch rechenzeitaufwendiges Hochsetzen der Parameter (Kollisions)-Durchgänge und/oder Zwischenschritte in den Griff zu bekommen wären.

Es sei hier noch ein Effekt namens “TDR (Timeout Detection & Recovery)” erwähnt, ein Betriebssystemschutzmechanismus, der bei überlasteter Grafikkarte die Simulation mit einer Fehlermeldung stoppt. Dieser Effekt kann durch die beiden Einstellungen ebenfalls gemindert werden.

Die beiden Methoden haben den Nachteil, dass die Simulation zwar stabiler läuft, das aber auf Kosten des Realismus geht, da die gesamte Simulation gedämpft wird.

Verwenden Sie dann:

Beachten Sie den grundlegenden Unterschied zwischen dem Abschneiden der Geschwindigkeit und der Beschleunigung: im ersten Fall wird die Geschwindigkeit tatsächlich effektiv begrenzt, während es bei letzterem zwar zu keinem Beschleunigungszuwachs, aber trotzdem noch zu einem Geschwindigkeitszuwachs kommen kann (solange eine - positive - Beschleunigung herrscht, so lange wächst die Geschwindigkeit).

Für Geschwindigkeit abschneiden haben Sie folgende Optionen:

Das ist alles nicht ganz einfach zu verstehen. Im Prinzip definieren Sie maximal zulässige Geschwindigkeiten, die in einigen Fällen von bestimmten Gegebenheiten abhängen.

Hinweis:Wenn Sie sehr schnelle, animierte Kollisionsobjekte vorliegen haben, die mit einem Kleidungsstück/Soft Body kollidieren, kann es bei zu großer Geschwindigkeits- bzw. Beschleunigungsbegrenzung insofern problematisch werden, als dass das Kollisionsobjekt einfach durchschlägt, weil den Objektpunkten schlicht nicht gestattet wird, sich schnell genug zu bewegen.

Von Bounding Box

Definieren Sie hier die maximal zulässige Geschwindigkeit, wenn Sie oben Szenenskalierung eingestellt haben.

Größe

Definieren Sie hier die maximal zulässige Geschwindigkeit, wenn Sie oben Absolut eingestellt haben.

Radius

Definieren Sie hier die maximal zulässige Geschwindigkeit, wenn Sie oben Kollisionsradius eingestellt haben.

Für Beschleunigung abschneiden haben Sie folgende Optionen:

Von Bounding Box

Definieren Sie hier die maximal zulässige Beschleunigung, wenn Sie oben Szenenskalierung eingestellt haben.

Kollisionen

Die Kollisionsabfrage ist immens wichtig, erstens sieht es unschön aus, wenn es zu Durchdringungen kommt und zweitens: ist das erst mal passiert, haften die durchdrungenen Bereiche zäh aneinander und sind nur noch schwer voneinander zu trennen. Deshalb gibt es im Folgenden eine ganze Reihe von separaten Einstellungen, die nur die Kollision betreffen und schneller berechnet werden können, als alternativ Zwischenschritte und Iterationen hochzusetzen, die sehr rechenintensiv sind und darüber hinaus auch noch wesentliche Eigenschaften wie z.B. die Textilsteifigkeit stark ändern.

Diese Kollisionseinstellungen beziehen sich auf interne Rechenvorgänge und klingen in der Beschreibung kompliziert - und das sind sie auch prinzipiell, obwohl schon möglichst einfach beschrieben. Deshalb sei allgemein geraten, diese Werte bei Kollisionsproblemen vorsichtig zu erhöhen.

Durchgänge[0..1000]

Ein sich schnell bewegendes Textil kollidiert mit einem Zylinder, bei Durchgänge 0 kommt es linker Hand zu Durchdringungen, rechts bei einem Wert von 5 nicht.

Hiermit definieren Sie, wie oft pro Animationsbild eine Kollisionsabfrage vorgenommen wird. Wird eine Kollision erkannt, werden dynamisch und temporär Kollisions-Constraints (deren Präzision mit den nächsten 2 Parametern kontrolliert werden kann) erzeugt, die dann dafür sorgen, dass das Tag-tragende Objekt nicht in andere - oder auch seine eigene - Kollisionsgeometrie eindringen kann.

Definieren Sie hier einen Wert von 1, wird am zeitlichen Beginn des Simulationbildes eine Kollisionsabfrage vorgenommen. Die eventuell dabei erzeugten Kollisions-Constraints bleiben bis zur nächsten Kollisionsabfrage erhalten und werden für jeden Zwischenschritt berücksichtigt und ausgewertet.

Besonders für schnelle, schnell rotierende oder allgemein nicht geradlinig bewegte Geometrie kann das Hochsetzen dieses Wertes Vorteile bringen. In so gut wie jedem Durchdringungsfall ist das Erhöhen von Durchgänge hilfreich.

Achten Sie darauf, dass Zwischenschritte nicht kleiner als Durchgänge ist, sonst passiert nichts.

Hinweis:Stellen Sie Durchgänge auf 0, werden sämtliche Selbstkollisionen und Kollisionen untereinander (also z. B. auch mit/zwischen Rigid Bodies) ausgeschaltet: es funktioniert dann nur noch die Kollision mit Kollisionsobjekten - also Objekten mit Kollisions-Tag.

Zusätzliche Iterationen[0..100]

Mittels dieses Parameters werden nur für die vorher von Durchgängen und Durchgang Endbild gefundenen, bereits vorhandenen Kollisions-Constraints noch einmal zusätzliche Iterationen vorgenommen. Auch das hilft, Kollisionen zu vermeiden.

Achten Sie darauf, dass bevor Sie Durchgänge, Durchgang Endbild und/oder Zwischenschritte erhöhen, es erst hier einmal mit der Aktivierung dieser Option probieren. Eventuell ist es damit schon getan. Zusätzliche Iterationen lässt sich relativ schnell berechnen.

Durchgang Endbild

Dieser Parameter fügt am zeitlichen Ende des Simulationbildes, bei der eigentlich schon alle neuen Punktepositionen berechnet wurden, zusätzliche Kollisionsabfragen ein. Damit soll verhindert werden, dass existierende Durchdringungen (die dem Algorithmus zunächst durch die Lappen gegangen sind) beim Berechnungsstart des nächsten Simulationbilds vorhanden sind, was sich problematisch auf die Simulation auswirkt. Bei jedem Durchgang werden die dabei neu entdeckten Kollisions-Constraints mehrfach (und zwar so oft wie bei Iterationen definiert) durchgerechnet.

Beachten Sie, dass nur kleine Werte im Bereich von 1-3 einen Nutzen bringen.

Sie könnten alternativ auch Durchgänge hochsetzen, aber Durchgang Endbild ist meist schneller.

Insbesondere auch bei sich bewegenden Kollisionsobjekten kann das Erhöhen von Durchgang Endbild (und auch Zusätzliche Iterationen) zu besseren Ergebnissen führen.

2025

Bewegungsbegrenzung gegen Kontakte

Bei Bewegungsbegrenzung gegen Kontakte wie auch der Kollisionspriorität handelt es sich um 2 zusätzliche Methoden, die Ihnen helfen, Durchdringungen bei Kollisionen zu verbessern und im besten Fall zu vermeiden.

Zunächst zur Bewegsbegrenzung gegen Kontakte: was passiert hier? “Verbotene Bewegungen” - die zu Durchdringungen von z. B. Kollisionsobjekten oder anderen simulierten Objekten (z. B. Kleidung, Seile, Rigid Bodies etc.) führen würden, werden einfach abgeschnitten.

Für sich genommen, ist das ein starker Eingriff in das Simulationsgeschehen, da Bewegungen/Geschwindigkeiten einfach auf 0 gesetzt werden, womit praktisch Energie vernichtet wird. Es kann deshalb zu unrealistischem Verhalten kommen. Oftmals hat aber das Verhindern von Durchdringungen oberste Priorität, so dass dies je nach Anwendungsfall in Kauf genommen werden kann.

Kontakttyp

Sie haben hier die Auswahl, worauf die eben beschriebene Funktionalität wirken soll:

Beachten Sie, das Bewegungsbegrenzung gegen Kontakte keine Wunder vollbringen kann und Durchdringungen nicht in jedem Fall verhindert. Es kann daher auch sinnvoll sein, die Bewegungsbegrenzung mit der Kollisionspriorität zu kombinieren!

Für die Bewegungsbegrenzung gilt: Kollisionen mit sich schnell bewegenden Kollisionsobjekten profitieren kaum.

Kollisionspriorität

Bei Kollisionen des Simulationssystem muss man grundsätzlich zwei Arten von Kollisionstypen unterscheiden:

1. Kollisionen von simulierten Objekten (also z. B Objekte mit Kleidungs- oder Rigid Body Tag) untereinander .

2. Kollisionen von simulierten Objekten mit Kollisionsobjekten (also Objekte mit Kollisions-Tag).

Diese beiden Kollisionstypen können, wenn sie gleichzeitig an einem Objekt auftreten, einander widersprechende Positionen vorgeben. Was passiert in einem solchen Fall? Vereinfacht gesagt: bisher (vor Cinema 4D 2025.1) war es so, das bei jedem einzelnen Kontakt beide Kollisionstypen unabhängig voneinander für sich berechnet und für die Rigid Body- bzw. Punktposition einfach der Durchschnitt herangezogen wurde. Dabei wurden beide Kollisionstypen gleichermaßen berücksichtigt. Das funktioniert oft gut, manchmal aber auch nicht, und dann entstehen z.B. Durchdringungen.

Betrachten Sie sich folgendes Video:

Einige durch erhöhte Massen schwere Würfel kollidieren mit einem langgezogenem Würfel, im Folgenden "Brett" genannt und einer Kugel. Würfel und Brett sind Rigid Bodies, die Kugel ein Kollisionsobjekt. Mit den voreingestellten Einstellungen durchdringt linker Hand das Brett die Kugel. Warum? Im Augenblick des Kontakts gibt es viele Kollisionen zwischen Würfel und Brett (1. Kollisionstyp), aber nur sehr wenige zwischen Brett und Kugel (2. Kollisionstyp). Da aber alle Kontakte gleichberechtigt behandelt werden, ergibt sich ein starkes Übergewicht für die Würfel-Brett-Kollisionen und das Brett wird durch das Kollisionsobjekt durchgedrückt.

Rechter Hand sehen Sie dann die Wirkung der Kollisionspriorität: die beiden Kollisionstypen können unterschiedlich - sogar stufenlos - gewichtet werden: soll der Schwerpunkt auf Kollisionstyp 1 oder Kollisionstyp 2 liegen? Das Problem liegt bei der Kollision mit einem Kollisionsobjekt, also wurde rechts der 2. Kollisionstyp (simulierte Objekte (Brett) mit Kollisionsobjekt (Kugel)) präferiert, indem Kollisionspriorität auf Kollisionsobjekte gestellt wurde: das Brett kollidiert korrekt mit der Kugel und bleibt darauf stehen.

Für die Kollisionspriorität gibt es daher folgende Optionen:

Hinweis: Es kann sinnvoll sein, die Kollisionspriorität mit der Bewegungsbegrenzung zu kombinieren!

Lösungsmethode

Wichtung[50..95%]

Ging es beim vorherigen Parameter darum, welcher Kollisionstyp bevorzugt werden soll, so gibt Kollisionspriorität die Art und Weise vor, wie die Priorität berechnet werden soll.

Es gibt 2 Optionen:

In folgendem Beispiel rechts sehen Sie ganz anschaulich, wie Geteilter Durchschnitt dafür sorgt, dass Rigid Bodies die Ebene kaum noch durchdringen. Links Kollisionspriorität ausgeschaltet.

Spielen Sie etwas mit dem Parameter Wichtung herum und sehen Sie, wie die Durchdringungen mit höherem Wert abnehmen. Dabei kann es durch die Prioritätsverschiebung durchaus passieren, dass es zu Durchdringungen der Fragmente untereinander kommt, diese fallen aber bei der Fragmentvielzahl kaum auf.

Bei aufwendigeren Szenen sollten Sie zunächst immer Geteilter Durchschnitt ausprobieren, da hier schneller gerechnet wird.

2025

Kollisionsnoise[0..100%]

Bei der Berechnung von Simulationen gibt es oft das Problem, dass Simulationen zu ähnlich berechnet werden. Stellen Sie sich 10 identische Kugeln vor, die parallel eine Ebene herunter rollen: bei exakt gleichen Einstellungen nehmen alle eine parallele, aber identische Bahn. Das hat mit der Realität wenig zu tun, denn es gibt dort überall Unregelmäßigkeiten, die die Bahn beeinflussen, z. B. ist eine Kugel einen Bruchteil schwerer als die andere, im Boden ist eine kleine Vertiefung etc. Außer unter Laborbedingungen werden sich immer Unregelmäßigkeiten ergeben!

Beachten Sie, dass sich z.B. bei rollenden oder rutschenden Objekten ständig Kollisionen ergeben und der Kollisionsnoise somit ständig wirkt - und nicht nur vordergründig zu Beginn einer Simulation.

Im Allgemeinen sollten Sie bei Rigid Bodies hier eher kleinere Werte im niedrigen, einstelligen Prozentbereich verwenden, bei Kleidungssimulationen sind meist höhere Werte möglich.

Beispiel

In obiger Szene rollen eine Reihe Kugeln eine schiefe Ebene hinunter. Linker Hand ist Kollisionsnoise = 0%, rechts = 2% (hier werden die Kollisionsauswirkungen variiert, was in ungleichmäßigem Lauf resultiert).

Wie funktioniert das ganze? Der Kollisionsnoise fügt jeder Kollisionsberechnung einen zufälligen Vektor hinzu. Je höher der Wert für Kollisionsnoise, desto größer der zufällige Vektor. Mit größer werdenden Werten entsteht zunehmend chaotisches Verhalten. 0 schaltet den Kollisionsnoise ab.

Dieser Kollisionsnoise wirkt bei jeder Kollision der Simulation, bei Kleidung, Seilen, ebenso wie bei Soft- oder Rigid Bodies.

Zeichnen

Aktivieren

Mit diesen Einstellungen können Sie sich einige Simulationselemente anzeigen lassen. Diese haben informellen Charakter. Mit Zeichnen können kann die Anzeigekonfiguration der folgenden Einstellungen zusammen ein- und ausgeschaltet werden.

Beachten Sie, dass die Elemente tatsächlich erst mit Start der Simulation (normalerweise also ab Bild 1) angezeigt werden.

Partikel

Lassen Sie sich hiermit die simulierten Objektpunkten anzeigen. Der Kollisionsradius (Dicke bzw. Radius bei Meshes bzw. Splines) wird dabei ebenfalls angezeigt.

Kollisionsradius

Hier kann für die meisten kollisionsfähigen Simulationsobjekte der durch den Parameter Dicke festgelegte Kollisionsradius angezeigt werden. Für Kleidung, Soft Bodies etc. werden diese um jeden Meshpunkt angzeigt, während für Rigid Bodies die Kollisionsform plus die addierte Suchradius visualisiert wird.

Seilausrichtungen

Diese Option ist für Splines mit Seil-Tag gedacht. Zwischen jedem Splinepunkt wird ein grüner Vektor eingeblendet. Je stärker die internen Spline-Constraints sind, desto weniger weichen die Vektoren im Laufe der Simulation von der Ausrichtung ihrer Nachbarn ab (beachten Sie hier im Besonderen die Option Torsion).

Dehnungs-Constraints

Hiermit können die strukturerhaltenden Dehnungs-Constraints eingeblendet werden. Diese erstrecken sich stets zwischen benachbarten Objektpunkten und zuschaltbaren (s.a. Vierecksdiagonalen) Diagonalverbindungen.

Biegungs-Constraints

Dieser - zugegebenerweise nicht all zu informative Modus - zeigt die Biegungs-Constraints, die dafür sorgen, dass ein Kleidungsobjekt nicht einfach in sich zusammenfällt, sondern Winkeländerungen zwischen Polygonen einen gewissen Widerstand entgegengesetzt.

Streben-Constraints

Mittels dieser Option können Streben-Constraints (selbst wenn deren Darstellung im Soft Body Tag ausgeschaltet ist) eingeblendet werden. Sollten Streben reißen, so wird das ebenfalls abgebildet, indem diese ausgeblendet werden; im Tag sollte Zeichnen dazu auf Aus stehen.

Konnektoren

Mittels dieser Option können Konnektor-Constraints (selbst wenn diese im Konnektor-Tag ausgeschaltet sind bzw. kein Konnektor-Tag selektiert ist) eingeblendet werden. Sollten Constraints reißen, so wird das ebenfalls abgebildet, indem diese ausgeblendet werden.

Rigid Body Mitten

Hiermit wird für Rigid Bodies der Massenschwerpunkt mit einem kleinen Achsensystem markiert. Hier fasst die Gewichtskraft an. Der Massenschwerpunkt kann in den Rigid Body Einstellungen frei positioniert werden.

Rigid Body Formen

Unter Kollisionsformen kann z.B. eine schnell berechenbare Ersatzkollisionsform festgelegt werden. Mit dieser Option wird die wirkende Kollisionsform in der Ansicht angezeigt. Sollten Rigid Bodies deaktiviert sein, so wird deren Form schwarz eingeblendet.