Letzte Woche habe ich ein Video veröffentlicht, in dem ich gezeigt habe, wie man einen Color Ramp entlang der Z-Achse eines Objekts abbildet, sowohl im lokalen als auch im globalen Modus, um einen Farbverlauf entlang der Höhe des Objekts zu erzeugen.
Videotranskript
Hallo zusammen! Letzte Woche habe ich ein Video veröffentlicht, in dem ich gezeigt habe, wie man einen Color Ramp entlang der Z-Achse eines Objekts abbildet, sowohl im lokalen als auch im globalen Modus, um einen Farbverlauf entlang der Höhe des Objekts zu erzeugen.
In diesem Tutorial werde ich auf dem Konzept der achsenbasierten Zuordnung aufbauen, um sowohl einen Farbverlauf als auch eine Mischung zwischen zwei Shaders zu erstellen. Das konkrete Beispiel wird eine farbige Fortschrittsanzeige sein, aber die gezeigten Methoden können auch in anderen Kontexten angewendet werden. Indem wir das steuernde Empty horizontal verschieben, sehen wir den Fortschritt der Anzeige, gefärbt mit einem Verlauf von Rot über Gelb bis Grün.

Zuerst zeige ich dir den Aufbau der Anfangsszene. Wir haben ein Plane-Objekt, das entlang der X-Achse gestreckt wurde. Der Origin dieses Objekts wurde aus praktischen Gründen in die obere linke Ecke verschoben. Rotation und Skalierung wurden auf dieses Objekt angewendet. Dieses Plane wird später nicht mehr verändert.

Das andere Objekt in der Szene ist ein Empty, das sich am Origin des Plane befindet. Auch dieses Objekt hat seine Rotation und Skalierung angewendet. Dieses Empty wird den Fortschritt der Anzeige steuern, der vollständig über das Material des Plane umgesetzt wird, ohne dessen Geometrie zu verändern.

Das Material des Plane muss zwei Funktionen erfüllen. Zuerst müssen wir den Verlauf entlang der X-Achse des Plane definieren. Danach stellen wir sicher, dass alle Teile rechts vom Empty transparent sind, während alle Teile links davon mit dem definierten Farbverlauf eingefärbt werden.
Beginnen wir mit dem Farbverlauf über das gesamte Objekt. Wie im Tutorial der letzten Woche benötigen wir einen Texture Coordinate Node, einen Separate XYZ Node und einen Color Ramp Node, die in dieser Reihenfolge verbunden werden.
Wir verwenden den Generated-Ausgang des Texture Coordinate Nodes, da uns die Maße des Plane interessieren. Vom Separate XYZ Node nehmen wir den X-Ausgang, der die lokale horizontale Achse des Plane darstellt.
Der Color Ramp sollte nun mit einem Emission Node verbunden werden, da das Material immer sichtbar sein und nicht von Licht beeinflusst werden soll. Wir ersetzen also den Standard-Principled Node durch einen Emission Node.

Jetzt kann der Color Ramp nach Belieben angepasst werden. In meinem Fall setze ich eine rote Markierung links, eine gelbe in die Mitte und eine grüne rechts, mit Ease-Interpolation, sodass Rot und Grün nicht nur an den Rändern erscheinen.


Um nur den Bereich links vom Empty zu färben und den rechten Bereich transparent zu machen, müssen wir zunächst zwei Shader-Nodes im Editor hinzufügen. Konkret einen Transparent Node und einen Mix Shader Node. Achte darauf, den Shader Mix Node zu wählen und nicht den Color Mix Node.
Verbinde dann den Emission Node mit dem ersten Shader-Eingang des Mix Shader Nodes. Verbinde den Transparent Node, der auf reines Weiß gesetzt sein sollte, mit dem zweiten Shader-Eingang des Mix Shader Nodes.
Verbinde den Ausgang des Mix Shader Nodes mit dem Surface-Eingang des Material Output Nodes. An diesem Punkt haben wir ein halbtransparentes Material mit einem Farbverlauf von Rot über Gelb bis Grün.

In einem Mix Node, egal ob es sich um Color oder Shader handelt, wird der zweite Eingang nur vollständig verwendet, wenn der Faktor den Wert 1 hat. Wir brauchen also eine Möglichkeit, den Faktor auf 1 zu setzen, sobald wir uns rechts von der Position des Empty befinden.
Füge dafür einen Texture Coordinate Node und einen Separate XYZ Node zum Editor hinzu und verbinde den X-Ausgang des Separate XYZ Nodes mit dem Faktor-Eingang des Mix Shader Nodes.
Dieses Mal verwenden wir jedoch den Object-Ausgang des Texture Coordinate Nodes und geben im Object-Feld des Nodes den Empty an.

Jetzt ist das Material rechts vom Empty transparent und links davon eingefärbt, wie beabsichtigt. Allerdings sehen wir, dass das Material weit über die Position des Empty hinaus halbtransparent bleibt.

Um den Übergang zum Emission Node genau an der Position des Empty scharf umzusetzen, fügen wir einen Math Node zwischen den Separate X und den Mix Shader Node ein. Dieser wird auf den Modus Greater Than gesetzt, mit einem Threshold-Wert von 0.

Auf diese Weise nimmt der Greater Than Node die X-Koordinate des Empty und gibt 1 für alle Werte aus, die größer sind als diese Koordinate. Der Mix Shader Node wechselt dann schlagartig zum zweiten Shader, also zum Transparent Node.
Zum Schluss können wir den Empty dem Plane parenten. So können wir das Plane-Objekt frei in der Szene verschieben und das Empty wird mitbewegt, bleibt aber weiterhin unabhängig animierbar.
Das war’s mit diesem Tutorial! Bis bald!