#unitytips Dev Takeover: VFX und Shader mit Harry Alisavakis

COMMUNITY TEAM / UNITYUnity Community
Nov 4, 2021|10 Min.
#unitytips Dev Takeover: VFX und Shader mit Harry Alisavakis
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.

Die #unitytips Dev Takeover ist eine fortlaufende Serie auf unserem @unitygames Twitter-Konto. Das Unity-Team lädt Superuser aus unserer Community ein, ihre Erkenntnisse, Tipps und Tricks direkt mit unseren Followern zu teilen. Den Anfang macht Harry Alisavakis, Tech Artist bei Jumpship Studio und VFX-Zauberer der Extraklasse.

Wenn Sie Harry noch nicht kennen, erkennen Sie ihn vielleicht an seinem neongrünen Avatar, der immer und überall dort auftaucht, wo von Shadern die Rede ist. Hier ist ein kurzer Überblick darüber, wie Harry zu einem solchen Rockstar in der Welt der visuellen Effekte geworden ist:

Zurzeit arbeitet er als Technical Artist bei Jumpship an dem kommenden Spiel Somerville und verbringt seine "Freizeit" damit, sich mit VFX und Shadern zu beschäftigen. Mit seiner wöchentlichen Zusammenstellung von Tweets rund um die Spieleentwicklung namens "Technically Art", in der er auch die Arbeit anderer talentierter Künstler fördert, inspiriert er die Entwickler weiterhin ( folgen Sie ihm unbedingt!) Über seinen zugehörigen Discord-Kanal "Technically Speaking" führt er Chats über technische Kunst, kreative Herausforderungen in Unity und AMAs, um so viele Fragen wie möglich zu beantworten. Sehen Sie es sich hier an.

Nachstehend finden Sie einige Bilder aus Harrys jüngster Arbeit. Noch mehr können Sie in seinem Portfolio finden.

Artwork
Artwork
Artwork
Artwork

Nun zu den #unitytips, mit freundlicher Genehmigung von Harry Alisavakis.

Partikelsystem Timelines

Lassen Sie uns mit einem kleinen VFX-Trick beginnen, den Sie ausprobieren können. Die zeitliche Abstimmung von Partikelsystemeffekten untereinander kann zwar etwas fummelig sein, aber es gibt eine einfache Möglichkeit, visuelle Effekte mithilfe von Timelines zu wiederholen. 🧵

In Unity haben Timelines eine eingebaute Unterstützung für Partikelsysteme, so dass Sie keine eigene Skripterstellung benötigen. Ziehen Sie Ihr Partikelsystem einfach per Drag & Drop darauf, und schon können Sie es durchblättern.

Timeline

Wenn Sie diese Spuren mit einer Animation oder einer anderen Timeline kombinieren, erhalten Sie eine viel bessere Vorstellung davon, wie Sie alle einzelnen animierten Elemente synchronisieren können, um einige wirklich beeindruckende VFX zu erstellen.

Timeline-Animationen
Benutzerdefinierte Vertex-Streams

Bei der Verwendung von Partikelsystemen und benutzerdefinierten Shadern gibt es eine sehr unterhaltsame Möglichkeit, mehr für sein Geld zu bekommen, und zwar durch benutzerdefinierte Vertex-Streams.

Nehmen wir uns einen Moment Zeit, um zu verstehen, worum es sich dabei handelt und wie wir sie für fortgeschrittene Partikeleffekte verwenden können. 🧵

Wie Sie wissen, werden gerenderte Modelle in Unity mit Dreiecken erstellt, die aus Scheitelpunkten bestehen. Die Scheitelpunkte enthalten alle wichtigen Informationen über diese Modelle, wie z. B. ihre individuelle Position, UV-Koordinaten und Scheitelfarbe.

Das Tolle daran ist, dass wir unseren Scheitelpunkten beliebige Daten hinzufügen und sie in unserem benutzerdefinierten Shader verwenden können, wie wir wollen. Das ist das Schöne an benutzerdefinierten Vertex-Streams in Partikelsystemen: Wir können partikelbezogene Informationen an unsere Scheitelpunkte weitergeben und sie nur bei Bedarf nutzen.

Die Option, benutzerdefinierte Vertex-Streams hinzuzufügen, befindet sich unter dem Renderer-Modul des Partikelsystems. Wenn Sie diese Option aktivieren, werden Ihnen alle bereits verwendeten Vertex-Streams angezeigt, z. B. die UV-Koordinaten und die Vertex-Farbe.

Renderer-Modul
In Shader-Grafik

Zum Schluss wollen wir noch einen einfachen Auflösungs-Shader für unser Partikelsystem mit Shader Graph erstellen. Es handelt sich um einen unbeleuchteten, doppelseitigen URP-Shader (Universal Render Pipeline) mit Alpha-Clipping. Interessant ist hier, was den Auflösungseffekt ausmacht - die dritte Komponente unserer UVs.

Shader-Diagramm

Sie fragen sich vielleicht, warum das so ist, zumal wir beim Textursampling in der Regel mit UV-Koordinaten über die x- und y-Komponenten arbeiten.

Neben dem Namen des jeweiligen Streams sehen Sie, wo die Daten gespeichert sind.

Gif

Hier wird der neue Datenstrom in TEXCOORD0.z gespeichert, was der dritten Komponente des ersten Texturkoordinatenkanals entspricht (auch bekannt als UV0.z). Durch Hinzufügen des Prozentsatzes für das Lebensalter beginnt dieser Wert bei Null und bewegt sich während der Lebensdauer der Partikel auf Eins zu.

Mit unserem Shader lösen sich die Partikel mit der Zeit auf. Wenn wir den Shader auf das Partikelsystem anwenden, erhalten wir dieses schöne Ergebnis:

Gif

So weit so gut, aber was ist, wenn wir noch mehr Kontrolle über die Lebensdauer der Partikel haben wollen? Der Prozentsatz für das Alter funktioniert zwar, ist aber recht linear und nicht sehr nützlich, um komplexere Effekte zu erzielen. Die Lösung liegt in diesem Custom Data Modul:

Benutzerdefinierte Daten

Anstelle des prozentualen Anteils des Alters können wir Custom1.x verwenden, was uns wiederum erlaubt, eine Kurve zu verwenden, die den Wert über die Lebenszeit der Partikel verändert, ähnlich wie die eingebauten Kurven wie Größe über Lebenszeit.

Gif

Jetzt können wir besser steuern, wie sich unsere Partikel mit der Zeit auflösen. Wie großartig ist das?

Gif

Natürlich gibt es noch viele weitere Daten, die Sie an benutzerdefinierte Vertex-Streams übergeben können. Die Möglichkeiten, sie in Ihren eigenen Shadern zu verwenden, sind vielfältig.

Wir würden uns freuen, wenn Sie uns Ihre eigenen kreativen Anwendungen für benutzerdefinierte Vertex-Streams in den Kommentaren unten mitteilen würden.

Viel Spaß beim VFXen! ✨

Mehr #unitytips?

Folgen Sie unserem Unity for Games Twitter für wöchentliche #unitytips dienstags und monatliche Dev Takovers. Lassen Sie uns in den Kommentaren wissen, wen Sie gerne in unseren zukünftigen Dev Takeovers auf Twitter vorstellen würden.