Veröffentlicht am 16-03-2019

Unity 101 für den VFX Artist

Einheit wird oft als Engine des Programmierers bezeichnet. Es ist einfach, schnell Mechanismen und Konzepte zu prototypisieren, und Programmierer werden nicht durch den Bau von Blueprint-Akteuren gefesselt. Stattdessen können sie ein Skript schreiben und es auf einem Objekt ablegen. Aber wo bleiben die Künstler? C # ist großartig, aber es ist viel schwieriger zu visualisieren, was Sie benötigen, um schreiben zu können, als dies mit UE4-Blaupausen der Fall ist. Viele VFX-basierte Tutorials konzentrieren sich mehr auf das Shader-Diagramm und das Partikelsystem, auf das ich eingehen werde, aber nicht viel darüber, wie Sie eine Animation einrichten oder wie eine Animation mit einem Partikeleffekt verknüpft wird ein Knopfdruck. Für die ersten beiden Blogs des neuen Jahres werde ich einige der weniger erläuterten Funktionen und Techniken für einen VFX-Künstler zeigen, die mit der Unity Engine beginnen.

Im ersten Teil behandeln wir:

· Mein Demonstrationseffekt

· Renderpipelines und Package Downloader von Unity

· Lernen zu C #

· Animationen einrichten

· Shader-Diagramm von Unity

· Das Partikelsystem

· Nachverarbeitungsstapel

Die Wirkung wird gemacht

Dies ist der Effekt, den ich zur Demonstration der Unity-Funktionen verwenden werde:

Effekt in der Unity Engine eingebaut

Es ist das Poundland-Äquivalent des legendären Versteck-Eröffnungseffekts in Sea of ​​Thieves.

Es besteht aus 10 Emittern, 8 Materialien, 4 Shader, 2 Skripten und 1 animiertem Mesh.

Renderpipelines und Paket-Downloader von Unity

Unity ist eine sehr flexible Engine. Es kann viel tun, wenn es richtig ausgerichtet wird. Unity erreicht dies durch die breite Palette von Addons, die der Engine hinzugefügt werden können, um verschiedene Ziele zu erreichen. Diese finden Sie im Unity-Asset-Store, der verschiedene von der Community erstellte Addons enthält, oder für Inhouse-Addons, die von Unity erstellt werden, dem Package-Manager-Fenster, das in die Engine integriert ist.

Dieses Mal werde ich nur eingebaute Pakete verwenden. Der Paketmanager befindet sich unter der Dropdown-Box des Fensters. Um das Beste zu erreichen, müssen die Vorschau-Pakete auffindbar sein. Diese können über die erweiterte Dropdown-Box aktiviert werden.

In meiner Datei habe ich die Core Render-Pipeline-Bibliothek heruntergeladen. Dies ist erforderlich, um die neue Lightweight-Render-Pipeline und die HDRP (High Definition Render-Pipeline) zu verwenden. Dies ermöglicht uns die Verwendung des Unity Shader-Graph-Addons. Ich lade auch das Nachbearbeitungs-Stack-Addon herunter. Das Shader-Diagramm und der Post-Processing-Stack werden im Blog weiter erläutert. Wozu werden die Render-Pipelines verwendet?

Unity veröffentlichte 2018 zwei neue Renderpipelines für die Engine, die High Definition Renderpipeline und die Lightweight Renderpipeline. Ich habe die beiden Blogs für alle verlinkt, die sich für das leichte Lesen interessieren. Der Kernpunkt ist jedoch, dass das LWRP auf Leistung ausgerichtet ist und der HDRP auf High-End-Visuals ausgelegt ist.

Für diesen Effekt verwende ich das HDRP, aber für andere Blogs werde ich das LWRP verwenden.

Lernen zu C #

Unity ist sehr schwer programmierfähig, weshalb sich viele Kunstprojekte in Richtung UE4 bewegen. Es ist freundlicher zu Künstlern, die nicht gut kodieren können. Die Menge an Wissen, die erforderlich ist, um grundlegende Aufgaben in Unity auszuführen, ist jedoch nicht sehr groß. Ein weit verbreitetes Missverständnis, wenn es um das Programmieren von aufgabenbezogenen Aufgaben geht, ist, dass dazu eine umfassende Sachkenntnis einer Sprache erforderlich ist. Jemand muss fließend sein und alles wissen, was in C # zu wissen ist, ob eine Tür auf Befehl geöffnet werden soll. Das stimmt überhaupt nicht. Verdammt, sogar die Programmierer, die jeden wachen Moment damit verbringen, in C # zu programmieren, wissen nicht einmal die Hälfte davon. Sie wissen, wie man eine Aufgabe in kleinere Aufgaben aufteilt und daraus die Antwort findet.

Beim Programmieren geht es nicht darum, einen Planeten in die Existenz zu schreiben. Es geht darum, die richtige Frage zu finden, um ein Genie zu stellen. Anstatt zu fragen, wie ich eine Tür mit einem Tastendruck aufmachen kann, zerlegen Sie sie in kleinere Fragen. Wie aktiviere ich eine Animation, drücke einen Tastendruck, wie weise ich den Tastendruck eine Variable zu, damit ich ändern kann, welche Taste den Tastendruck aktiviert?

Variablen werden weiter unten erklärt. Dieses Bild ist nur dazu da, um den Text aufzuteilen.

Ich werde meine beiden am häufigsten verwendeten Skripte abbauen, aber zuerst muss jeder, der in Unity arbeiten möchte, zumindest ein oberflächliches Verständnis von C # -Code aufbauen. Hauptsächlich nur die Grundlagen wie if-Anweisungen, Funktionen, der Unterschied zwischen Coroutinen und Methoden. Dafür empfehle ich mir die Brakeys C # YouTube-Serie. Er leistet einen tollen Job, wenn er alle Einzelkomponenten einfach erklärt. Es kann hier gefunden werden

Bei der Entwicklung von VFX zu den zwei größten Herausforderungen, für die ich eine Lösung benötige, ist Folgendes:

· So erstellen Sie einen Animationsauslöser

· Wie lässt sich eine Partikelsequenz auf Befehl spielen?

Bevor ich mir die Skripts anschaue, kann ich nicht genug betonen, dass es in Ordnung ist, etwas nicht zu wissen. Habe niemals Angst, um Hilfe zu bitten.

Soweit Animationen ausgelöst werden, sieht das von mir verwendete Skript folgendermaßen aus

Hier werden diese Variablen erklärt.

Der erste Teil:

using System.Collections;
using System.Collections.Generic;
mit UnityEngine;

Stellen Sie sich vor, Sie fügen Ihrer Sammlung einen weiteren Eimer Lego-Steine ​​hinzu. In jedem Bucket befindet sich guter Code, der von kompetenten Leuten geschrieben wurde, den wir in unseren aktuellen Builds verwenden können.

Der nächste Teil erklärt, was die Klasse ist.

öffentliche Klasse Animation_Trigger: MonoBehaviour
{
}

Etwas öffentlich zu sagen bedeutet, dass außerhalb des Skripts darauf zugegriffen werden kann. In diesem Fall erkläre ich, dass die Klasse selbst öffentlich ist. Klassen müssen immer denselben Namen wie das Skript haben, andernfalls wird der Code vom Compiler fehlerhaft angezeigt. Der "MonoBehaviour" -Teil ist etwas für Leute, die viel klüger sind als ich. Es wird standardmäßig hinzugefügt, wenn Sie ein neues C # -Skript erstellen. Ich gehe davon aus, dass es wichtig ist.

Als Nächstes deklariere ich meine Variablen.

Animator Animator;
bool hasOpened = false;
Öffentliche Float-Verzögerung = 1f;
public KeyCode key = KeyCode.Space;

Ich habe einen Animator (mehr dazu bald), einen Boolean, einen Float und einen KeyCode erklärt. Ein Boolean ist nur ein Ja / Nein-Zweig, der für if-Anweisungen und andere Logikgatter verwendet wird. Ein Float ist eine Dezimalzahl und ein Keycode ist eine Taste einer Tastatur oder eine Taste einer Maus.

Zwei meiner Variablen sind public, dh sie können außerhalb des Skripts bearbeitet werden, wenn sie einem Objekt als Komponente hinzugefügt werden.

Der Spaß am Skript sind die Methoden. Die zwei Methoden, die ich verwende, sind die Startmethode und die Aktualisierungsmethode. Die Methoden Start () und update () sind Teil des zuvor genannten MonoBehavoir. Der Teil, von dem ich nicht wusste, was er war, nahm an, dass es wichtig war. Normalerweise werden Methoden in den Skripten selbst erstellt. Betrachten Sie sie als die Ereignisse von UE4s Blueprinting. Es gibt einige intrinsische Ereignisse, aber für alles Gewöhnliche muss ein neues erstellt werden.

void Start ()
{
animator = GetComponent ();
}

Bei meiner Startmethode weise ich der Animator-Komponente die Animator-Variable aus dem Asset zu.

Animationskomponente aus einem animierten Netz

Dadurch kann das Skript auf die Funktionen des Animationscontrollers für das Treppenelement zugreifen, zu dem dieses Skript hinzugefügt wird. Wir werden sehen, warum das in einer Sekunde nötig ist.

Als nächstes ist die Update-Methode.

void Update ()
{
if (Input.GetKeyDown (Schlüssel) &&! hasOpened)
{
StartCoroutine (Schießen ());
}
}

Diese Methode verwendet If-Logik, um eine Coroutine zu starten. Wenn eine Taste gedrückt wird und der boolesche "hasOpened" falsch ist, wird der Coroutinenschuß gestartet. && bedeutet nur, dass beide Dinge wahr sein müssen, und "! hasOpened" ist eine Abkürzung für "hasOpened = false".

Zum Schluss der IEnumerator.

IEnumerator Shoot ()
{
hasOpened = true;
Rendite Rückkehr neue WaitForSeconds (Verzögerung);
animator.SetTrigger ("Öffnen");
}

IEnumerators sind eines der Dinge, mit denen viele Anfänger Probleme haben. Im Allgemeinen verstehe ich nicht ganz, was sie sind und wie sie funktionieren. Was ich jedoch weiß, ist, dass es das einzige ist, was mir erlaubt, etwas zu verwenden, das einem Verzögerungsknoten von UE4 ähnelt. Wenn dies aktiviert ist, setzt Shoot () den Boolean "hasOpened" auf "true", sodass das Skript nicht mehrmals aktiviert wird. Es verzögert die Skripte um einige Sekunden, die von unserer öffentlichen Float-Variablenverzögerung vorgegeben werden, und aktiviert schließlich den Trigger in unserem Animator-Controller Open.

Das ist alles, was benötigt wird, um Animationen auf Umgebungsobjekten zu aktivieren, die immer nur eine Animation enthalten. Ob es sich um eine Tür handelt, die geöffnet werden muss, Treppen, die von meinem Effekt herunterkommen, oder Houdini-Simulationen, die aktiviert werden müssen. Dieses Framework ermöglicht es einem Entwickler, eine Animation über ein Skript zu aktivieren.

Wie wäre es mit Partikeleffekten?

Das ist noch einfacher. Das Skript, das ich dazu benutze, ist hier:

Das Partikelskript ist lang. Aber das liegt daran, wie viele wiederholte Elemente es gibt.

Es sieht nach viel aus, kann aber bei genauer Betrachtung in drei Abschnitte unterteilt werden.

  • Die Variablen, bei denen ich mein Partikelsystem deklariere und ihm einen Namen gebe.
    • Die Startfunktion, bei der ich das Partikel anhalte ().
    • Die Update-Funktion, bei der ich die gleiche If-Logik im Animations-Trigger zum Abspielen der Partikelsysteme finde.
    • Es ist sehr einfach und kann mit wenig oder gar keinem Aufwand angepasst werden. Dieses Skript ist auf die Partikelsysteme in der Treppenöffnung spezialisiert. Wenn ich jedoch modularer sein wollte, könnte ich mehrere Skripts schreiben, bei denen ich meinem Partikelsystem nicht einen Namen gab, den ich System_1, System_2 usw. nenne. Um dies auf ein Partikelsystem anzuwenden, mache ich ein leeres Spielobjekt, füge dieses Skript hinzu und mache schließlich alle Partikelsysteme zu Kindern dieses Spielobjekts.

      Wie das Skript als Komponente aussieht.

      Der Weg, den ich hoffe, dass jeder von all dem bekommt, ist, dass das Codieren nicht schwierig ist, ein VFX-Künstler muss nicht jeden Code kennen, um Erfolg zu finden es verstehen. Die Schlüsselkompetenz besteht darin, die richtigen Fragen zu lernen, um den magischen 8-Ball zu stellen.

      Animationen einrichten

      Animierte Netze bestehen aus 3 Hauptkomponenten, damit sie in Spielen funktionieren. Die Animation selbst, der animierte Controller und ein Skript zum Auslösen der Animationen. In 3DS Max baute ich die Treppe für den Effekt, fügte für jeden Schritt einen Knochen hinzu und fügte zu allem einen Stamm als übergeordnetes Element hinzu. Meine letzte Hierarchie sah so aus.

      Hierarchie in 3Ds max.

      Wenn das in Unity importiert wird, kommt es als dieses Asset:

      Importiertes Asset in Unity.

      Das einzige, was wir je berühren müssen, ist der Animationsclip, der hier als Take 001 bezeichnet wird. Nachdem ich ihn in die Szene gezogen habe, muss ich der Controller-Box in der Animatorkomponente einen Animationscontroller zuweisen.

      Animator-Komponente

      Ein Animator-Controller wird erstellt, indem Sie mit der rechten Maustaste auf den Inhaltsbrowser klicken, den Mauszeiger über "Erstellen" bewegen und mit der linken Maustaste auf den Animationscontroller unten im Dropdown-Menü klicken. Ein Doppelklick auf den Controller öffnet das Animator-Fenster. Hier werden die Flussdiagramme implementiert, die eine Asset-Animation vorgeben. Mein Asset verfügt nur über eine einzige Animation, sodass das Flussdiagramm schön und einfach aussieht.

      Unity Animator Graph

      Es werden zwei Zustände hinzugefügt, ein Verzögerungszustand, für den keine Animation vorhanden ist, der das Diagramm dort ruhen lässt, und einen Animationszustand, bei dem die Animation aktiv ist. Im seitlichen Panel habe ich einen Parameter, der den Trigger geöffnet hat.

      Auslöser genannt Open.

      Dies ist der Auslöser, den ich im Abschnitt C # erwähnt habe, wo ich das Animationsskript abgebrochen habe. Es kann durch Klicken auf das kleine + Symbol gemacht werden. Stellen Sie sicher, dass der Parameter ein Trigger und kein Boolean ist. Ich habe diesen Fehler in der Vergangenheit schon ein paar Mal gemacht.

      Verzögerungs-Animationszustand

      Meistens war alles im Verzögerungszustand auf Standard gesetzt. Das einzige, was ich tat, war, einen Übergang zum Animationszustand hinzuzufügen, der auf dem geöffneten Trigger beruhte.

      Bewegungs-Animationszustand.

      Für den Animationszustand habe ich der Animation die Treppenanimation hinzugefügt. Ich habe auch die Geschwindigkeit auf 0,25 reduziert und ist damit viermal langsamer als meine ursprüngliche Animation. Mein Timing ist nicht so gut, so dass ich meine Bewegung auf einfache Weise glätten kann, ohne zu 3DS Max zurückzukehren und Keyframes zu bearbeiten. Ich habe auch einen Übergang zum Ausgang. Irgendwann wusste ich den Zweck dafür, aber momentan ist dieses Wissen verloren gegangen. Ich schalte auch das Kontrollkästchen "Exit Time" aus. Das Kontrollkästchen ist ein spezieller Übergang, der nicht von einem Parameter abhängt, sondern benötigt eine normalisierte Zeit des Status und lässt den in den Einstellungen angegebenen Übergang fallen. Ich schalte es immer aus, weil ich eine direktere Kontrolle über meine Übergänge haben möchte, aber für Dinge wie das Beenden von Türen können sie dazu verwendet werden, sie nach einer bestimmten Zeit zu schließen. Wenn Sie dieses Kontrollkästchen angekreuzt haben, hat dies meine Animationen zerstört. Daher ist es eine reaktionäre Angewohnheit, es einfach auszuschalten.

      Um dies spielbar zu machen, müssen Sie das Kontrollskript hinzufügen, das ich zuvor erstellt habe.

      Steuerungskomponente.

      In der Komponente setze ich die öffentlichen Variablen auf das, was ich will, also möchte ich, dass die Animation nach 7 und eine halbe Sekunde stattfindet und ich sie über die Leertaste aktivieren möchte.

      Wie bei allen prozessgesteuerten Blogs, die ich mache, muss ich betonen, dass dies nicht die einzige Möglichkeit ist, eine Aufgabe zu erledigen. Es gibt 101 Möglichkeiten, einen Effekt aufzubauen. Dies ist nur eine Sammlung von Techniken, die ich im Laufe meiner Zeit mit Unity aufgebaut habe, was mir schon bei einigen Projekten geholfen hat.

      Unitys Shader-Diagramm

      Das erste, was mit dem Shader-System von Unity hervorgehoben werden muss, sind die Namenskonventionen von Materialien. Was in UE4 ein Material wäre, wird in Unity Shader genannt, und was als Materialinstanz betrachtet wird, ist nur ein Material. Das Unity-Shader-Grafiksystem ist im Vergleich zu UE4 ein Barebone. Allerdings können viele mathematikbasierte Probleme, die in der Materialgrafik gelöst werden, relativ gut in die Unitys-Shader-Grafik übersetzt werden.

      Für meinen Effekt brauchte ich 4 separate unbeleuchtete Shader:

      · Ein grundlegender Partikel-Shader

      · Ein Shader, der ein- und ausgeblendet werden kann und sich ein- und ausblendet.

      · Ein Shader, der von den Seiten eingeblendet wird

      · Ein Shader mit UV-Verzerrung

      Ich entschied mich für meinen eigenen einfachen Shader, anstatt die integrierten Shader zu verwenden, sodass ich die Farbe basierend auf einer Variablen ändern kann, anstatt das Partikelsystem zu verwenden. Ich arbeite immer noch in der Pipeline, über die ich im letzten Jahr aus dem Infinity War-Blog geschrieben habe, und finde es einfacher, die Farben im Material zu bearbeiten, als in Partikel-Editoren. Das Setup für diesen Shader ist leicht.

      Grundlegender Partikel-Shader

      Der Hauptunterschied zwischen diesem und einem UE 4-Setup besteht darin, dass wir einen Vertex-Farbknoten anstelle eines Partikelfarbknotens verwenden. Die Struktur-Pins sind auch nicht auf dem Vertex-Farbknoten aufgespalten. Ich muss das also manuell einfügen. Ansonsten ist es meistens dasselbe. Diese Partikelfarbe wird mit einer Textur und einer separaten Farbeigenschaft multipliziert. Dann wird das Alpha mit einem Textur-Alpha multipliziert. Der Master-Knoten ist viel leichter als der UE4-Master-Knoten. Er enthält nur 3 der Haupteigenschaften Farbe, Alpha und Position (Weltpositionsversatz). Es enthält auch eine einzigartige Eigenschaft, die den Alpha-Clip-Schwellenwert darstellt. Alpha-Clip legt fest, wann ein Pixel im Alpha unsichtbar wird. Im Moment ist es auf 0 gesetzt, sodass alles, was schwarz ist, ausgesondert wird. Wenn ich diese Zahl auf 0,5 erhöht, werden auch alle grauen Pixel ausgesondert.

      Ein Shader, der sich auflöst und ausblendet, war eine schwierige Herausforderung. Dies liegt daran, dass Unity keine Entsprechung zum dynamischen Parameterknoten hat.

      Auflösen in ausgeblendet

      Die Lösung, die ich mir ausgedacht habe, ist die Verwendung der Farben im Vertex-Farbknoten, um meine benutzerdefinierten Parameter festzulegen. Ich habe den grünen Kanal verwendet, um die Intensität der Farbe zu steuern, wodurch der Schädel im vorherigen GIF aufflammt. Der Rote Kanal wurde verwendet, um die Stärke der von mir verwendeten Rauschtextur zu steuern. Wenn R 0 ist, wird die Geräuschstruktur nicht durch die glatte Stufe beeinflusst und die schwarzen Bereiche der Textur bleiben unberührt. Eine Kombination für den R- und A-Kanal, die von 0 auf 1 steigt, gibt dem Schädel den Eindruck, sich aufzulösen. Am Ende der Partikellebensdauer bleibt der R-Wert bei 1, sodass der A-Kanal auf 0 geht und den Kanal sauber ausblendet Schädel.

      Schädel-Shader in Aktion

      Der Shade-von-Shader von Seiten hat einen ähnlichen Aufbau wie der grundlegende Partikel-Shader. Er verwendet jedoch die Alpha-Auflösungs-Technik (Minus-Minus-Verfahren), die dann von einem Farbverlauf subtrahiert wird, um gut zu werden. Fade-In von den Seiten.

      Vom Seiten-Shader aus einblenden

      Dies ist eine Sache, die ich wahrscheinlich viel effizienter machen kann, wenn ich sie mir noch einmal anschaue. Meist durch Ändern des Farbverlaufs in eine Textur. Im Moment funktioniert es gut.

      Shader in Aktion einblenden

      Zum Schluss noch der UV-Distortion-Shader. Es sieht beängstigend aus, aber viele Elemente sind die gleichen wie die üblichen UV-Verzerrungsshader.

      Unheilige Höllenbestie

      Der Kern des Shatters ist die Geräuschstruktur, die 3 mal mit 3 verschiedenen Größen und Geschwindigkeiten kopiert wurde. Anstelle des Pannerknotens verwendet Unity einen Kachel- und Versatzknoten, der die Größe und Richtungsbewegung der Textur handhabt.

      UV-Verzerrungseffekt

      Dies wird dann mit einer Eigenschaft multipliziert, die ich als Verzerrungsstärke bezeichnet und zu den UV-Koordinaten addiert habe. Der Rest des Shatters ist nur poliert. Etwas wie das Hinzufügen eines Farbverlaufs zum leichten Ausblenden der Flammenoberseiten, indem ein Power-Knoten verwendet wird, um der Textur eine heiße Farbe und warme Farbe zu verleihen. Nur kleine Änderungen werden zusammengefügt, um ein besseres Ganzes zu erhalten.

      Um diese 4 Shader dann von Spaghetti-Stapeln zu tatsächlich funktionsfähigen Materialien zu machen, die ich für meine Effekte verwenden kann, muss ich mit der rechten Maustaste auf den Shader klicken, den Mauszeiger über Erstellen bewegen, Material auswählen und es wird ein Material erstellt, wobei der Shader bereits als übergeordnetes Element ausgewählt ist. Genau das gleiche wie das Erstellen von Materialinstanzen.

      Das Partikelsystem

      Shuriken ist das grundlegende Partikelsystem, das ich für den Effekt verwendet habe. Es ist nicht das Beste, es gibt viel bessere auf dem Unity-Marktplatz. Zum Teufel, in Unity gibt es schon Bessere, aber ich denke, es ist etwas Besonderes. Für mich ist es wie das alte Intuos-Grafiktablett in meinem Schrank. Es hat weniger Funktionen als fast alles andere, aber es ist das erste Partikelsystem, das ich verwendet habe. Ich habe ein Gefühl von Freiheit und Nostalgie, das ich mit UE4 nicht habe. Wenn man Niagara und das Shader-Diagramm aus der Frage nimmt und nur betrachtet, wie UE4s Cascade mit dem Shuriken-System von Unity verglichen wird, ist es ein bisschen wie ein Vergleich eines italienischen Sportwagens mit einem amerikanischen Muscle-Car. Cascade ist alles so präzise, ​​es hat die Geschwindigkeit und die Leistung, aber es ist einfach, die Bearbeitung von Dezimalstellen zu binden, die im Großen und Ganzen keinen großen Unterschied machen.

      Bei Shuriken ist es anders, es müssen nicht so viele Zahlen bearbeitet werden. Es geht um die Kurven und nicht wie Kaskadenkurven, bei denen es immer noch stark auf Zahlen basiert. Die Punkte werden nicht eingegeben, sie werden herumgezogen und gebogen. Das System ist langsamer, um dorthin zu gelangen, wo der Effekt wirken soll, aber er kann schneller in der Szene betrachtet werden. Es ist keine Datei, die im Inhaltsbrowser erstellt wird, sondern ein direkt in die Welt eingebautes System. Von Anfang an ist alles in Ordnung, es gibt keine Drop-Downs für separate Module. Sie müssen auswählen, was Sie möchten und wegfahren.

      Links: Cascade Curve Editor. Rechts: Unity-Kurveneditor

      Für den Effekt habe ich 8 Emitter verwendet, die alle in einer Hierarchie angeordnet sind. Realistisch ist nur ein Elternteil erforderlich und der gesamte Effekt spielt sich im Previewer ab. Ich wollte jedoch etwas mehr Struktur haben, nur um mich daran zu erinnern, was ich gerade sehe.

      Hierarchie

      6 dieser Emitter emittieren 1 Mesh-Partikel. Es handelt sich um ähnliche Setups. Die Änderungen treten dann ein, wenn das verwendete Material eine separate Berührung erfordert oder unterschiedliche Timings erforderlich sind. Zum Beispiel verlassen sich die Flammen nicht auf partikelbasierte Logik. Sie brauchen nur eine Größe über die Lebensdauer, um sie aufsteigen zu lassen, und eine Farbe, die sie überleben lässt, um sie zu verblassen. Der Schädel hingegen brauchte nur eine Farbe über die gesamte Lebensdauer hinweg, aber er brauchte einen schönen Farbverlauf, damit alles richtig funktioniert.

      Farbverlauf, der den Schädel-Shader aktiviert

      Im Kernbereich des Partikelsystems werden die Initialen diktiert. Anfangsgröße, anfängliche Lebensdauer, Farbe, Verzögerung usw. Hier kann auch der Simulationsraum konfiguriert werden, ebenso wie die Richtung, wenn der Emitter gedreht wird. Selbst die maximale Anzahl der Partikel, die abgegeben werden können, wird in diesem Bereich geändert.

      Kernbereich des Partikeleditors

      Es ist das Menü, wo ein Effekt Leben erhält. Die Drop-Downs im Panel steuern die Animation der Partikel und wie sie sich bewegen, ob sie wachsen. Gehen sie geradeaus oder folgen sie einem lauten Pfad? Kollidieren sie, gebären sie Subemitter?

      Partikelmodule

      Es gibt keine der ausgefalleneren Funktionen der Kaskade. Ich kann keine Farbe skalieren. Zum Beispiel kann ich nur einen Verlauf über die Lebensdauer eines Partikels verwenden. Es gibt keine dynamischen Parameter oder Vektorfelder. Wenn ich zusätzliche Funktionen haben möchte, muss ich sie entweder selbst im Shader programmieren, wie beim Schädel oder in Form neuer Module. Der erste Workflow des Unity-Programmierers wirkt sich zu seinen Gunsten aus. Ich habe viel Zeit in Kaskade verbracht, aber ich kann nicht sagen, wie man benutzerdefinierte Module hinzufügt. Im Shuriken-System ist das einfach.

      Der überaus wichtige Bereich zum Hinzufügen von Komponenten.

      Es hat die Schaltfläche zum Hinzufügen von Komponenten, über die alles verfügt. Es gibt keine besondere Möglichkeit, Neues hinzuzufügen. Cascades gut. Es ist präzise Wenn ich einem Tutorial gefolgt bin, bekomme ich immer das gleiche Ergebnis, weil es so genau ist. Mit Shuriken werde ich immer etwas bekommen, das etwas anders ist, weil es keine Möglichkeit gibt, etwas zu tun.

      Dieser Bereich ist nur als Einführung in den Partikeleditor gedacht, denn während die Partikel, die ich verwende, hübsch aussehen, ist nicht viel los mit ihnen. Statt acht Mal über das Color-over-Life-Modul zu sprechen, dachte ich, ich würde es tun Besser schreiben, ein wenig Vergleich schreiben. In den nächsten Blogs werde ich tiefer und tiefer in das System eintauchen, wenn ich komplexere Effekte baue. Für weitere Informationen gibt es bis dahin erstaunliche Videoeinführungen von Brackeys und Sirhaian’s Arts.

      Einrichten des Nachbearbeitungsstapels

      Der Nachbearbeitungsstapel ist ein Schlüsselwerkzeug in einem VFX-Künstler-Arsenal. Es ist äußerst wichtig, um einem Künstler zu helfen, seine Effekte so aussehen zu lassen, als wären sie von einer anderen Engine. In meiner Szene verwende ich nur umgebende Okklusion und Blüte, und meine Szene sieht so aus:

      Keine Nachbearbeitung in der Szene

      Zu diesem:

      Mit Nachbearbeitung

      Es ist eine brillante Funktion und einfach zu implementieren. Es ist auch das Gegenteil meines Shuriken / Kaskadenarguments. Ich bevorzuge Shuriken, weil alle Module bereits für mich ausgelegt sind. Die UE4-Nachbearbeitung verfügt bereits über alle Module, nur dort sind so viele Module, dass sie verwirrend sind. Der Unity-Nachbearbeitungsstapel ist viel sauberer. Die Module sind in einem Rollout-Menü mit Modulen angeordnet. Da sie an einer Kamerakomponente angebracht sind, können die Dinge durch den C # -Code schnell geändert werden.

      Die zwei Hauptmodule, die ein VFX-Künstler verwenden wird, sind Blüte und Farbkorrektur.

      Bloom-Einstellungen in meiner Szene

      Sykoo hat ein großartiges Video gemacht, in dem erklärt wird, wie der Nachverarbeitungsstack eingerichtet wird und was die einzelnen Module tun. Daher empfehle ich dringend, sein Video auszuprobieren.

      Die Einheit hat keine korrekte Vorgehensweise. Es gibt viele technisch basierte Reifen, durch die ein Künstler springen muss, um sie richtig zu verwenden, aber es gibt auch eine Menge Freiheit in dem Toolset. Es gibt viel weniger dezimale Streitereien. Ich verbringe viel Zeit damit, Punkte in einem Diagramm zu verschieben, anstatt Zahlen einzugeben. Dies ist eine unglaublich aufregende Perspektive für jemanden, der gerne Dinge über den Bildschirm zieht und schöne Bilder in Echtzeit aktualisiert. Es ist sehr einfach, ein paar coole neue Ideen einzubringen und zu skizzieren, selbst wenn diese Ideen dann in UE4 aufpoliert werden. Es ist der perfekte Motor für Rapid Prototyping.

      Hoffentlich, ob Sie ein brandneuer RT VFX-Künstler sind oder Sie es seit mehreren Jahren tun, hier gab es etwas, das Ihnen geholfen hat. Wenn Sie irgendwelche kreativen Verwendungen für die Dinge finden, habe ich hier darüber gesprochen, bitte senden Sie mir ein Gif an - RichardVFXfanmail@gmail.com oder twittern Sie mir @ NestRaptor. Ich würde gerne sehen, was Sie schaffen können.

      Bitte schaue bald wieder vorbei. Nächstes Mal werde ich das Shader-Diagramm weiter vorantreiben und versuchen, etwas Ähnliches wie in Into The Spiderverse zu erstellen.

Siehe auch

Klassen-Updates: Kommunikation und Zusammenarbeit leicht gemacht!Häufige Probleme mit dem Smartphone und KorrekturenViwa i7–8GB - 512MB RAM - 2.0MP Kamera - Dual SIM - 3G - 1500mAh - GrünPersönliche Sicherheit ist niemals eine GarantieMASCHINELLES LERNENWie Sie mit Rasa Ihren ersten Chatbot erstellen können (in weniger als 15 Minuten)