Unteroperatoren vom Typ "Ausgabe", einschließlich "Betragsänderung", verfügen über Optionen, mit denen sie die Prioritäts- und Ausführungsreihenfolge definieren können. Beim Erstellen komplexer Einrichtungen ist es wichtig, diese Optionen zu beachten.
Die Reihenfolge der Datenbearbeitung und -verarbeitung wird durch die Unteroperatoren "Ausgabe" definiert. Die Unteroperatoren "Ausgabe" steuern die Datenbearbeitung. Sie rufen Partikeldaten aus Unteroperatoren höherer Ebenen im Datenfluss ab, und legen die Daten als Partikeleigenschaften ab.
Unteroperatoren "Ausgabe" mit demselben Wert für "Ausführungsreihenfolge" verarbeiten die gleichen Eingabedaten. Wenn der Wert für "Ausführungsreihenfolge" identisch ist, definiert der Wert für "Prioritätsreihenfolge" die Reihenfolge, in der die Unteroperatoren "Ausgabe" die Daten in Steigrichtung abrufen. Erst wenn alle Daten abgerufen wurden, werden sie auf die Partikeleigenschaften angewendet.
Wenn Unteroperatoren einen unterschiedlichen Wert für "Ausführungsreihenfolge" besitzen, können sie andere Eingabedaten verarbeiten, auch wenn sie die Daten aus demselben Unteroperator "Eingabe" abrufen. Dies liegt daran, dass ein Unteroperator "Ausgabe" mit einer niedrigeren Ausführungsreihenfolge die Daten in einigen Partikeleigenschaften ändern kann. Wenn der Unteroperator "Ausgabe" mit einer höheren Ausführungsreihenfolge die Daten abruft, wurden sie bereits geändert.
Betrachten Sie dieses Beispiel: Wenn die Partikel in ein Ereignis eintreten, müssen Sie die Anfangswerte für alle neuen Partikel berechnen. Anschließend sollten Sie die Artikeleigenschaften in jedem Frame ändern (unabhängig davon, ob ein Partikel neu in einem Ereignis vorhanden ist oder nicht). Während dieser Bearbeitung müssen Sie die Anfangswerte für alle Partikel festlegen.
In dieser Situation haben Sie zwei Datenströme: der erste Strom berechnet die Anfangswerte, und der zweite Strom ändert die Partikeleigenschaften. Der Unteroperator "Ausgabe" für den ersten Strom sollte die Ausführungsreihenfolge = 1 haben, und seine Filtereingabe wird höchstwahrscheinlich auf "Eingabestandard" "Neu in Ereignis" festgelegt. Der Unteroperator "Ausgabe" im zweiten Strom sollte die Ausführungsreihenfolge = 2 haben.
Betrachten Sie ein anderes Szenario: Sie möchten in allen Partikeln Geschwindigkeitsdaten analysieren, und auf Grundlage einiger Bedingungen möchten Sie zwei Untergruppen von Partikeln definieren, deren Geschwindigkeit auf unterschiedliche Art und Weise geändert wird. Für diese Aufgabe verwenden Sie zwei Unteroperatoren "Ausgabe" mit derselben Ausführungsreihenfolge. So gewährleisten Sie, dass die anfänglichen Eingabegeschwindigkeitswerte für jede Ausgabe gleich sind.
Da der Unteroperator "Betragsänderung" die Anzahl der Partikel ändert, kann er den Wert für "Ausführungsreihenfolge" nicht gemeinsam mit einem anderen Unteroperator verwenden. Sicherungen im Programm hindern Sie daran, dies zu tun.
Darüber hinaus besitzt die Gruppe "Prioritäts- und Ausführungsreihenfolge" auch die Optionsfelder "Vor"/"Normal"/"Nach". Diese Option definiert die Verarbeitungsreihenfolge auf einer höheren Ebene. Wenn sie auf "Vor" festgelegt ist, erfolgt diese Ausgabe, bevor alle Operatoren im aktuellen Ereignis ausgeführt werden. Wenn sie auf "Normal" festgelegt ist, wird der Unteroperator "Ausgabe" in der normalen Reihenfolge ausgeführt, und zwar zwischen den anderen Operatoren in demselben Ereignis. Wenn sie auf "Nach" festgelegt ist, wird die Ausgabe verarbeitet, nachdem alle Operatoren und Tests in diesem Partikelsystem ihre Aufträge für diesen Integrationsschritt abgeschlossen haben.
Ein Beispiel veranschaulicht die Verwendung von "Vor"/"Normal"/"Nach". Öffnen Sie hierfür die beigefügte Datei CollisionAsBody.max.
In diesem Beispiel wird der Operator "Daten" verwendet, um eine schnelle, den vollständigen Körper betreffende Kollision ohne viel Aufwand zu erzeugen. Wie Sie wahrscheinlich wissen, behandeln die Partikelsysteme in 3ds Max die Partikel in Bezug auf Kollisionen und Deflektoren als Punktelemente. Wenn daher ein Partikel eine Kontur mit sichtbarer Größe hat, durchdringt die Kontur die Deflektoroberflächen, was den gesamten visuellen Effekt ruinieren kann. Das Beispiel zeigt, wie Partikeldaten zum Versetzen der Partikelposition um die Größe der Durchdringung vernetzt werden.
Zunächst wird als erforderlicher Positionsversatz zum Vermeiden der Durchdringung ein benutzerdefinierter Datenkanal erstellt, um reelle Werte zu speichern. Für alle neuen Partikel wird dieser Wert zu Beginn auf Null gesetzt (siehe Datenblock 01).
Nachdem alle anderen Operatoren und Tests abgeschlossen wurden, wird der Umfang der Durchdringung und des Versatzes der Partikelposition der Phase "Nach" berechnet. Auf diese Weise können Partikelpositionen angepasst werden, um Durchdringung zu vermeiden, und die Partikel sind bereit zum Rendern. Die Operatoren "Ausgabe" auf der rechten Seite führen ihren Auftrag in der Phase "Nach" aus.
In der Phase "Vor" müssen Sie die Partikel zurück in ihre Position ohne Versatz verschieben, damit die Kollisionstests den Auftrag fortsetzen können, als ob nichts passiert wäre.
Partikelsysteme sind von Natur aus verlaufsabhängig. In anderen Worten, um den Status eines Partikelsystems beispielsweise bei Frame 100 festzulegen, muss der Status aller vorherigen Frames, die seit dem ersten Partikel erzeugt wurden, berechnet werden. Dies liegt daran, dass die Änderungen an den Partikeleigenschaften, z. B. die Positionen der Partikel, aufgrund der ständigen Änderungen in anderen Parametern, wie Geschwindigkeit, akkumuliert werden.
Bei bestimmten Einrichtungsschritten sind manche Partikeleigenschaften nicht verlaufsabhängig und können aus dem aktuellen Status der Partikel berechnet werden, wenn zum Beispiel die Partikel auf etwas wie die Kamera ausgerichtet sind oder die Geschwindigkeit der Partikel verfolgt wird. Hier hängt die Ausrichtung der Partikel entweder von der Partikelposition, wie vor der Kamera, oder der Geschwindigkeit der Partikel ab. In diesem Fall müssen Sie nicht den gesamten Verlauf der Partikel kennen, um die aktuelle Ausrichtung der Partikel zu berechnen, Sie müssen nur die aktuelle Geschwindigkeit oder Position kennen.
In diesem Sinn ist der Operator, der die Partikelausrichtung berechnet, nicht verlaufsabhängig. Der Operator muss keine Aktionen durchführen, während das System alle vorherigen Frames durchläuft, um bis zum aktuellen Frame zu gelangen. Der Operator muss nur das letzte Frame bearbeiten, um Position und Geschwindigkeit der Partikel im letzten Frame zu analysieren und die entsprechende Partikelausrichtung zu berechnen.
Wenn Sie sich sicher sind, dass das Ergebnis des Unteroperators "Ausgabe" nicht vom Verlauf der Partikel abhängt, können Sie die Option "Verlaufsabhängig" deaktivieren. Dies kann die Gesamtberechnung beschleunigen, da der Operator "Daten" dadurch nur auf dem letzten Frame ausgeführt wird.