Ausführliche Informationen zum mParticles-Kollisionsverfolgungstest

Dieses Thema enthält zusätzliche Informationen zur Verwendung des mParticles-Kollisionsverfolgungstests im Partikelfluss.

Zuerst geht es darum, was die mParticles-Kollisionsverfolgung nicht macht: Sie steuert nicht, ob Partikel miteinander kollidieren. Wenn Partikel an einer mParticles-Simulation beteiligt sind und ihre Kollisionskontur durch einen mParticles-Formoperator definiert wird, kollidieren sie vorgabegemäß miteinander. Dies ist ein wichtiger Teil der Simulation.

Im mParticles-Kollisionsverfolgungstest werden Kollisionen zwischen Partikeln registriert; anschließend werden die Partikel (je nach Kollisionsinformation) zu anderen Ereignissen umgeleitet.

Das Hinzufügen eines mParticles-Kollisionsverfolgungstests zu einem Ereignis entspricht dem Aktivieren der Option "Test = TRUE, wenn Partikel" im mParticles-Kollisionstest: Der Partikelfluss startet das Sammeln von Informationen über Kollisionen. Wie auch der mParticles-Kollisionstest belastet das Erfassen dieser Informationen CPU-Ressourcen. Wenn Sie also Partikel an andere Ereignisse aufgrund der Kollision miteinander nicht unbedingt umleiten müssen, fügen Sie den Test nicht hinzu.



Verwenden Sie die Gruppe "Kollisionsregistrierung mit", um zu bestimmen, welche Kollisionen bestimmter Partikelgruppen registriert werden sollen. Als Vorgabe ist sie auf "Partikel in aktuellem Ereignis" festgelegt. Wenn also ein Partikel im aktuellen Ereignis mit einem anderen Partikel im aktuellen Ereignis kollidiert, wird die Kollision registriert und verarbeitet. Abhängig von anderen Optionen ("Test = TRUE, wenn Partikel") kann durch die Kollision ein Partikel als "Wahr" getestet werden oder nicht. Unabhängig von dem Ergebnis werden nur die Kollisionen zwischen Partikeln im aktuellen Ereignis verarbeitet, wenn Sie die Option auf "Partikel in aktuellem Ereignis" gesetzt haben.

Die alternative Option lautet "Partikel in Ereignissen". Hier können Sie andere Ereignisse hinsichtlich der Kollisionsregistrierung definieren, für die Sie sich interessieren. Die Liste zeigt als Vorgabe alle Ereignisse im aktuellen Partikelsystem an (unter demselben globalen Ereignis "PF-Quelle", da eine Simulation nur pro Partikelfluss-Partikelsystem ausgeführt werden kann). Beachten Sie, dass die Liste auch den aktuellen Ereigniseintrag hat. Wenn Sie nun eine Kollision mit einem Satz an Ereignissen, einschließlich des aktuellen, registrieren möchten, ist dies möglich. Da alle Aktionen bereits aufgeführt sind, müssen Sie die Ereignisse markieren (dunkelblau färben), um anzugeben, welche Ereignisse für die Kollision benötigt werden.

Um den Punkt zum Bereich der Kollisionsregistrierung zu illustrieren, betrachten Sie das folgende Beispiel: MassFXInterCollision01.max .

In diesem Beispiel bilden zunächst alle Partikel einen Quader und fallen dann auf einen Torusdeflektor. Das erste Ereignis, Ereignis 01, enthält zwei Tests: mParticles-Kollision zum Definieren der Kollision mit dem Torusdeflektor und mParticles-Kollisionsverfolgung zum Definieren des Wechsels zum nächsten Ereignis, wenn Partikel miteinander kollidieren. Beachten Sie, dass der Kollisionsregistrierungsbereich auf "Partikel in aktuellem Ereignis" festgelegt ist. Daher kann es passieren, dass einige Partikel nicht mit anderen Partikeln kollidieren, bevor alle Nachbarn bereits miteinander kollidiert sind und an das nächste Ereignis weitergeleitet werden. Wie Sie sehen, befinden sich in dieser Konfiguration Partikel, die "zurückgelassen werden" und grün bleiben (wie im ersten Ereignis).

Um alle Partikel an das nächste Ereignis zu übergeben, ändern Sie den Bereich Kollisionsregistrierung in Partikel in Ereignissen und markieren Sie alle drei Ereignisse in der Liste: Ereignis 001, Ereignis 002 und Ereignis 003. Wenn Sie jetzt die Animation abspielen, erhält jedes Partikel eine Kollisionsbenachrichtigung und ändert die Farbe von Grün zu Gelb zu Blau.

Eine weitere Anmerkung zum Beispiel MassFXInterCollision01.max : Wenn die Partikel das letzte Ereignis erreichen, werden sie statisch, indem Sie die Simulation ausschalten (siehe Operator mParticles-Wechsler im letzten Ereignis). Der statische Aufbau dieser Partikel stellt die zurückgelassenen (grünen) Partikel vor ein Dilemma: Sie werden zwischen statischen Partikeln komprimiert, und es ist nicht genügend Platz für ihre Platzierung vorhanden. Daher können Sie in den grünen Partikeln eine Zufallsbewegung erkennen.

Sie können dies vermeiden, indem Sie den Operator "mParticles-Wechsler" im letzten Ereignis anpassen. Anstatt die Simulation zu deaktivieren, können Sie "Position anpassen" aktivieren. Auf diese Weise nehmen alle Partikel aus den letzten und ersten Ereignissen an der Simulation teil. Sie sind zu Simulationszwecken auf eine Art gleich: alle sind dynamisch. Daher ist für die grünen Partikel etwas freier Raum verfügbar, und eine Gleichgewichtsplatzierung ist erreichbar.

Um die Differenz zwischen den Optionen Kollidiert und Mehrmals kollidiert im Bereich "Test = TRUE If Particle" zu illustrieren, ist ein weiteres Beispiel vorhanden: MassFXInterCollision02.max. Dieses Beispiel enthält zwei Ereignisse und die Partikel werden zum zweiten Ereignis umgeleitet, wenn sie 15-mal miteinander kollidieren, gemäß der Option Anz. Koll. Im nächsten Ereignis sind Partikel statisch: Geschwindigkeit und Drehung sind gleich 0. Die Werte für "Geschwindigkeit" und "Drehung" werden von regulären Partikelfluss-Operatoren festgelegt ("Geschwindigkeit 01" und "Drehung 01"). Um die Partikel jedoch statisch zu machen, wird ein Operator "mParticles-Wechsler" verwendet.

Wenn Sie die Animation abspielen, können Sie sehen, dass nicht alle Partikel das zweite Ereignis erreichen konnten. Dies liegt daran, dass einige von ihnen nicht mindestens 15-mal im Verlauf der Animation kollidiert sind. Verringern Sie als Übung den Wert "Anz. Koll.", um zu ermitteln, wie hoch dieser Wert sein kann, und gleichzeitig sicherzustellen, dass alle Partikel an das nächste Ereignis weitergeleitet werden. Dieser Wert ist die kleinste Anzahl an Kollisionen eines Partikels mit anderen Partikeln während der Animation. Beachten Sie außerdem, dass der Bereich "Kollisionsregistrierung" auf "Partikel in Ereignissen" festgelegt ist, wobei alle Ereignisse markiert sind. In diesem Beispiel heißt das, dass alle Kollisionen zwischen Partikeln gezählt werden.

Im letzten Beispiel MassFXInterCollision03.max wird die Verwendung der Optionen Bericht an Datenoperator und Additive Anzahl erläutert. Hier sind beide Optionen aktiviert. Während folglich alle Kollisionen wie im Bereich "Kollisionsregistrierung" definiert registriert werden, werden sie über einen Ganzzahl-Datenkanal gemeldet, der von einem Datenoperator verwendet wird. Beachten Sie, dass der mParticles-Kollisionsverfolgungstest mit keinem Ereignis vernetzt ist. Unterhalb des Tests befindet sich jedoch ein Datenoperator. Der Datenfluss dieses Operators enthält am oberen Rand Eingabe-mParticles-Unteroperatoren. Dies wird auf der linken Seite der folgenden Abbildung angezeigt. Einer von ihnen zählt alle Kollisionen mit Deflektoren (in diesem Fall handelt es sich um den Deflektor "Torus"), während der andere alle Kollisionen zwischen Partikeln zählt. Diese Werte werden zusammengefasst und als relativer Versatz für ein Mapping mit einem Texturgradienten verwendet. Je öfter ein Partikel kollidiert, desto heller ist seine Farbe.

Eine Anmerkung zur Verwendung von "Bericht an Datenoperator": In diesem Beispiel wird die Option "Test = TRUE, wenn Partikel" auf "Mehrmals kollidiert" gesetzt, während der Test nicht vernetzt ist. Diese Option bietet im Vergleich zu den anderen Einstellungen die höchste Genauigkeit beim Zählen von Kollisionen. Der Parameterwert für "Anz. Koll." macht jedoch hinsichtlich der Genauigkeit keinen Unterschied.

Eine zusätzliche Anmerkung zu diesem Beispiel: Die Abspielgeschwindigkeit im Ansichtsfenster ist im Vergleich zu den ersten beiden Beispielen langsam, vor allem, weil es eine Weile dauert, bis im Ansichtsfenster die sich ändernden Partikelfarben aktualisiert werden. Wenn Sie den Operator "Anzeigen" in "Ticks" ändern, sehen Sie eine erhebliche Verbesserung in der Wiedergabegeschwindigkeit, aber nicht die Farbveränderung der Partikel während der Animation.

Die Optionen "Ist nach Kollision(en) langsam" und "Ist nach Kollision(en) schnell" sind mit den Optionen desselben Namens in den mParticles-Kollisions- und den regulären Kollisionstests vergleichbar.

Anmerkung: Da der mParticles-Kollisionsverfolgungstest nicht steuert, ob Partikel miteinander kollidieren, Partikel jedoch miteinander kollidieren, wenn sie sich in einer Simulation befinden, kommt eine Frage auf: Wie können Partikel aus unterschiedlichen Ereignissen daran gehindert werden, miteinander zu kollidieren? Dies kann mit einer ordnungsgemäßen Verwendung des Parameters "Kollisionsgruppe" in den entsprechenden Operatoren "mParticles-Kollisionskontur" und durch Hinzufügen eines Ausnahmepaars mit dem Helfer "mParticles-Welt" erzielt werden.