Systeme im Visual Effect Graph

Knotenarbeitsbereich

Ein System bezieht sich auf einen oder mehrere Kontexte, die einen eigenständigen Teil eines visuellen Effekts definieren.

Systeme

Ein System kann ein Partikelsystem, ein Partikelstreifensystem, ein Netz oder eine Spawn-Maschine sein. In der Diagrammansicht zeichnet ein System einen gestrichelten Rahmen um die Kontexte, aus denen es besteht.

Schnee

In einem visuellen Effektdiagramm können mehrere Systeme miteinander interagieren:

Ein Spawn-System kann Partikel in einem oder mehreren Partikelsystemen erzeugen. Dies ist die Hauptmethode zum Erschaffen von Partikeln.

Partikelsysteme können GPU-Ereignisse verwenden, um Partikel in anderen Partikelsystemen zu erzeugen. Diese alternative Methode kann Partikel aus anderen Partikeln erzeugen, basierend auf Simulationsereignissen wie dem Tod von Partikeln.

Ein Spawn-System kann andere Spawn-Systeme aktivieren und deaktivieren. Auf diese Weise kann ein Master-Spawn-System verwendet werden, das andere Spawn-Systeme verwaltet, um die Partikelemission zu synchronisieren.

Systeme aus Vorlagen erstellen

Das visuelle Effektdiagramm wird mit vorgefertigten Systemvorlagen geliefert, die dem Diagramm hinzugefügt werden können. So wird ein System aus einer Vorlage erstellt:

Klicke mit der rechten Maustaste in einen leeren Bereich des Arbeitsbereichs und wähle Knoten erstellen.

Knoten erstellen
Wähle im Menü System.

System
Wähle eine Vorlage aus der Liste aus.

Systemauswahl

Systemsimulationsräume

Einige Systeme verwenden eine Simulationsraum-Eigenschaft, um den Referenzraum zu definieren, den sie zum Simulieren ihres Inhalts verwendet:

Lokale Raumsysteme simulieren den Effekt lokal für das GameObject, das die Visual Effect-Komponente enthält.
World Space Systems simulieren den Effekt unabhängig von dem GameObject, das die Visual Effect-Komponente enthält.
Unabhängig vom Simulationsbereich des Systems können mit Spaceable Properties auf Local- oder World-Werte zugegriffen werden.

 

Festlegen eines Systemsimulationsbereichs

Ein System zeigt seinen Simulationsbereich in der rechten oberen Ecke jedes Kontexts an, aus dem es besteht. Dies ist die Simulationsraumkennung des Systems. Wenn in einem Kontext kein Prozess verwendet wird, der vom Simulationsbereich abhängt, wird die Simulationsbereichskennung nicht angezeigt.

Um den Simulationsraum für ein System zu ändern, klicken Sie auf die Simulationsraum-ID des Systems, um durch die kompatiblen Räume zu blättern.

Simulationsraumbezeichnung in Eigenschaften

Einige Spaceable Properties zeigen eine kleinere Version der Simulationsraumkennung an. Dies ändert nicht den Simulationsbereich des Systems, sondern ermöglicht es, einen Wert in einem Bereich auszudrücken, der sich vom Simulationsbereich des Systems unterscheidet. Zum Beispiel könnte ein System im Weltraum simulieren, aber eine Eigenschaft könnte eine lokale Position sein.

Contexts

Kontexte sind die Hauptelemente der Grafik-Workflow-Logik (vertikal) und definieren die Abfolge und die Beziehungen von Operationen und Simulationen. Jeder Kontext definiert eine Stufe des Rechnens, zum Beispiel das Berechnen, wie viele Partikel erzeugt werden müssen, das Erstellen neuer Partikel oder das Aktualisieren aller lebenden Partikel.

Kontextverbindung herstellen, wenn es eine Bedeutung gibt: Nach dem Erstellen neuer Partikel kann ein Initialisierungskontext eine Verbindung zu einem Aktualisierungspartikelkontext oder direkt zu einem Ausgabepartikelkontext herstellen, um die Partikel zu rendern, ohne sie zu simulieren.

Kontexte erstellen und verbinden

Kontexte sind Diagrammelemente. Sie können daher mit der rechten Maustaste> Knotenmenü hinzugefügt, mit der Leertaste oder durch Herstellen einer (vertikalen) Workflowverbindung aus einem anderen Kontext erstellt werden (wobei nur kompatible Kontexte bereitgestellt werden).

Kontexte werden über die Ports oben und unten miteinander verbunden.

Kontexte konfigurieren

Durch Anpassen der Kontexteinstellungen in der Knoten-Benutzeroberfläche oder im Inspector können  das Aussehen und Verhalten des Operators geändert werden.

Wenn beispielsweise der UV-Modus eines Kontexts mit vier Ausgängen von “Einfach” in “FlipbookMotionBlend” geändert wird, werden dem Kontext-Header die Eigenschaften “Zusätzliche Flipbook-Größe”, “Bewegungsvektorkarte” und “Bewegungsvektorskala” hinzugefügt.

Durchflusskompatibilität

Nicht alle Kontexte können in beliebiger Reihenfolge miteinander verbunden werden. Es gelten einige Regeln, um einen konsistenten Workflow aufrechtzuerhalten:

  • Kontexte werden nach kompatiblem Eingabe- / Ausgabedatentyp verbunden.
  • Ereignisse können sich mit einem oder mehreren Ereignissen verbinden / Kontexte initialisieren.
  • Initialisierungskontexte können eine oder mehrere SpawnEvent-Quellen oder eine oder mehrere GPUSpawnEvent-Quellen enthalten, diese Datentypen schließen sich jedoch gegenseitig aus.
  • Es kann nur eine Initialisierung mit einem Aktualisierungskontext verbunden werden
  • Es können beliebige Ausgabekontexte mit einem Initialisierungs- / Aktualisierungskontext verbunden  werden.

Die Kontextkompatibilität:

Event Keiner SpawnEvent (1+)  
Spawn SpawnEvent (1+) SpawnEvent (1+) Zwei Input-Pins starten und stoppen den Spawn-Kontext
GPU Event Keiner SpawnEvent Ausgaben zum Initialisieren des Kontexts
Initialize SpawnEvent (1+) / GPUSpawnEvent (1+) Particle (1) Kann zur Partikelaktualisierung oder zur Partikelausgabe ausgegeben werden. Die Eingabetypen SpawnEvent / GPUSpawnEvent schließen sich gegenseitig aus.
Update Particle (1) Particle (1+) Kann auf eine Partikelaktualisierung oder eine Partikelausgabe ausgegeben werden
Particle Output Particle (1) Keiner Kann entweder Eingaben von einem Initialize- oder UpdateOutput-Objekt haben
Static Mesh Output Keiner Keiner Eigenständiger Kontext

Übersicht über den Kontexttyp

Dieser Abschnitt behandelt alle allgemeinen Einstellungen für jede Art von Kontext.

Event

Ereigniskontexte zeigen nur einen Namen als Zeichenfolge an, die in der Komponenten-API aufgerufen werden muss, um dieses Ereignis an das Diagramm zu senden und einen Workflow von diesem Knoten aus zu aktivieren.

Spawn

Spawn definiert, wie viele Partikel in welcher Zeit erschaffen werden. Spawn-Blöcke sind für die Verarbeitung von Spawn-Events ausgelegt.

Spawn-Kontexte sind eigenständige Systeme mit drei Zuständen: Abspielen, Anhalten und Verzögert.

  • Looping (Running) -Zustand bedeutet, dass die Blöcke berechnet werden und neue Partikel erzeugt werden
  • Beendet (Leerlauf) bedeutet, dass die Spawn-Maschine ausgeschaltet ist und keine Partikel erzeugt
  • Der Zustand DelayingBeforeLoop / DelayingAfterLoop (Waiting) stoppt das Spawnen von Partikeln bis zum Ende einer vom Benutzer festgelegten Verzögerung und startet das Spawnen von Partikeln erneut.

Ein- und Ausschalten vom Spawn-Kontext

Spawn-Kontexte haben zwei Flow-Eingabefelder: Start und Stop:

  • Start input setzt das Spawn-System zurück und / oder startet es: Wenn keine Verbindung besteht, ist es implizit an das OnPlay-Ereignis gebunden. Das mehrmalige Drücken von Start hat den gleichen Effekt wie das einmalige Drücken.
  • Eingabe stoppen hält das Spawn-System an: Wenn keine Verbindung besteht, ist es implizit an das OnStop-Ereignis gebunden

Looping und Verzögerung

Spawn-Kontexte enthalten einen Status und führen das Spawnen von Partikeln, basierend auf einem Schleifensystem durch.

  • Der Spawn-Kontext kann während definierter Dauer für die Schleifen ausgegeben werden (dh die interne Spawn-Zeit wird zu Beginn jeder Schleife zurückgesetzt). Standardmäßig ist die Dauer unendlich. Um den Loop-Modus einzustellen, wählen Sie den Kontext in der Grafik aus und ändere das Popup-Fenster für die Loop-Dauer im Inspektor.

Loop-Einstellungen

(Mögliche Werte: Unendlich, Konstant, Zufällig)

Loop-Dauer

  • Spawn-Kontexte können eine, mehrere oder unendlich viele Schleifen ausführen.
    Um diese Einstellung festzulegen, wähle den Spawn-Kontext im Diagramm aus und ändern Sie das Popup-Fenster “Loop count” im Inspector (Mögliche Werte: Infinite, Constant, Random).
  • Spawn-Kontexte können vor und / oder nach jeder Schleife verzögert werden. Während einer Verzögerung (Delay Mode) läuft die Spawn-Zeit normal ab, es wird jedoch kein Spawn durchgeführt.
    Um diese Einstellung festzulegen, wählen Sie den Spawn-Kontext im Diagramm aus und ändere im Popup-Menü Verzögerung vor Loop und Verzögerung nach Loop im Inspector (Mögliche Werte: Keine, Konstante, Zufällig)

Durch Festlegen einer Schleifenzahl, einer Schleifendauer und / oder von Verzögerungen werden neue verbindbare Eigenschaften im Header des Kontexts angezeigt.

Veränderung im Header

Die Bewertung dieser Werte erfolgt nach folgenden Regeln:

Wenn gesetzt: Loop Count wird ausgewertet, wenn die Eingabe Start Workflow des Kontexts getroffen wird.
Wenn gesetzt: Loop Duration wird bei jedem Start eines Loops ausgewertet
Wenn gesetzt: Die Schleifenverzögerung (Vorher / Nachher) wird bei jedem Start einer Verzögerung ausgewertet.

Spawn-Kontexte können mit kompatiblen Blöcken angepasst werden.

Constant Rate: Die konstante Spawnrate erschafft N Partikel in der Sekunden

Variable Rate: Eine variable Rate gibt ein zeitbasiertes Minimum und Maximum für das Spawnen der Partikel an.

Single Burst: Eine bestimmte Menge von partikeln wird einmal zu einem festgelegten Zeitpunkt erzeugt

Einstellungen:

Spawn-Modus: Konstant / Zufällig – Wird verwendet, um zu steuern, ob der Burst eine konstante oder eine zufällige Zählung ausgibt.

Verzögerungsmodus: Konstant / Zufällig – Wird verwendet, um zu steuern, ob der Burst gleichzeitig oder mit einer zufälligen Verzögerung erfolgt.

Periodische Bursts

Periodische Bursts haben etwas dasselbe Verhalten wie Single Bursts, treten jedoch im Laufe der Zeit wiederholt auf. Bei jedem Burst kommt es zu einer zufälligen Verzögerung und / oder Zählung.

 
SetEventAttribute
 
SetEventAttribute ist ein reiner Spawn-Block, der das Speichern von SpawnEvent-Attributen ermöglicht. Da Attribute über die C # -Komponenten-API festgelegt werden können, können sie auch über die Spawn-Kontexte festgelegt werden, um Werte zur Spawn-Zeit zu berechnen, anstatt die Zeit zu initialisieren.
 
Benutzerdefinierte Spawn-Blöcke
 
Benutzerdefinierte Spawn-Blöcke sind in C # geschriebene Spawn-Funktionen, mit denen der Benutzer eine benutzerdefinierte Laufzeitlogik auf Spawn-Ebene ausführen kann. Diese Blöcke werden bei jedem Frame ausgeführt und enthalten spezielle Funktionen, die ausgeführt werden, wenn ein Spawn-Kontext aktiviert oder deaktiviert wird.
 

Diese Blöcke können für viele Zwecke verwendet werden:  

  • Spawn-Ausgabe steuern (einschließlich der Lese-Ausgabe von vorherigen Blöcken)
  • Steuerung der Ereignisattributausgabe
  • Spawn-Kontext steuern (Abspielen, Stoppen, Zugriff auf DeltaTime und TotalTime)
 

GPU-Ereignisse

GPU-Ereigniskontexte sind experimentelle Kontexte, die Eingaben mit GPU-Ausgangsereignissen anderer Systeme verbinden. Sie unterscheiden sich vom traditionellen Spawn, da sie von der GPU berechnet werden. Es kann nur eine Art von Spawn mit einem Initialisierungskontext verbunden werden (GPU-Ereignis und Spawn / Ereignisse schließen sich gegenseitig aus)

GPU-Ereigniskontexte können nicht mit Blöcken angepasst werden.

GPU-Event

Initialize Contexts

Durch das Initialisieren von Kontexten werden neue Partikel basierend auf SpawnEvent-Daten generiert, die aus Ereignissen, Spawn- oder GPU-Ereigniskontexten berechnet werden.

Beispiel: Wenn du den Befehl zum Erstellen von 200 neuen Partikeln aus einem Spawn-Kontext erstellst, wird der Kontext verarbeitet und führt die Kontextblöcke für alle 200 neuen Partikel aus.

Initialisierungskontexte können mit kompatiblen Blöcken angepasst werden.

Initialisierungskontexte sind der Einstiegspunkt für neue Systeme. Als solche zeigen sie Informationen und Konfiguration in ihrer Kopfzeile an:

Grenzen (Eigenschaft): Steuert die Begrenzungsbox des Systems
Capacity: Kapazität (Einstellung): Bestimmt, wie viele Partikel gleichzeitig im System existieren können

Initialize Particle

Aktualisieren (Update)

Update Particle

Update-Kontexte aktualisieren alle lebenden Partikel basierend auf Partikeldaten, die aus dem Initialisieren und Aktualisieren von Kontexten berechnet wurden. Diese Kontexte werden in jedem Frame ausgeführt und aktualisieren jeden Partikel.

Partikelaktualisierungskontexte verarbeiten auch automatisch einige Berechnungen für Partikel, um die allgemeinen Bearbeitungsaufgaben zu vereinfachen.

Aktualisierungskontexte können mithilfe kompatibler Blöcke angepasst werden.

Integration:

Keine: Keine Geschwindigkeitsintegration
Euler: Wendet eine einfache Euler-Geschwindigkeitsintegration auf die Partikelpositionen in jedem Frame an.

Winkelintegration (Angular Integration):

Keine: Keine Geschwindigkeitsintegration
Euler: Wendet eine einfache Euler-Winkelgeschwindigkeitsintegration auf die Partikelwinkel in jedem Frame an.

Alterspartikel (Age Particles):

Wenn das Attribut “Alter” verwendet wird, wird gesteuert, ob durch die Aktualisierung Partikel im Laufe der Zeit altern

Particle beseitigen (Reap Particles):

Wenn die Attribute “Alter” und “Lebensdauer” verwendet werden, kann gesteuert werden, ob bei der Aktualisierung alle Partikel getötet werden, deren Alter über der Lebensdauer liegt.

Output

Ausgabekontexte rendern ein System mit verschiedenen Modi und Einstellungen, abhängig von den aus einem Initialisierungs- oder Aktualisierungskontext eingehenden Partikeldaten. Jedes Element wird mit einer bestimmten Konfiguration als bestimmtes Grundelement gerendert.

Ausgabekontexte können mit kompatiblen Blöcken angepasst werden.

Schlagwörter:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.