Bild mit Transparenz auf ein GameObject aufkleben

Transparenzen sind praktisch immer mit technischen Problemen und Herausforderungen verbunden, weil Transparenz zusätzliche räumliche Informationen erfordert. Während deckende Farben vergleichsweise einfach berechnet werden können, muss bei der Transparenz die darunter liegende Information berücksichtigt werden, was die Sache verkompliziert.

Die Besonderheit beim Aufbringen eines „Aufklebers“ auf der Oberfläche eines 3D-Objekts liegt darin, dass nicht mehr ein Material, sondern im Grunde einen Stapel aus mehreren Materialien dargestellt werden muss.

Ziel: Eine teiltransparente Bild-Datei auf einen Würfel "aufkleben".
Ziel: Eine teiltransparente Bild-Datei auf einen Würfel „aufkleben“.

Standard-Material und Secondary Map

Du kannst in Unity einen Aufkleber-Effekt erreichen, in dem Du zunächst das Grundmaterial anlegst und den Aufdruck dann im Feld Secondary Map hinzufügst. Dabei entsteht allerdings das Problem, dass der Aufdruck mit der Basisfarbe verrechnet wird, als wäre es eine transparente Folie („Tint“-Effekt):

Das Aufbringen der Textur als Secondary Map bewirkt zwar einen Überlagerungseffekt, der aber auch zu einer Verfärbung führt.
Das Aufbringen der Textur als Secondary Map bewirkt zwar einen Überlagerungseffekt, der aber auch zu einer Verfärbung führt.

Decal-Material

Früher hatte Unity ein eigenes Material, das das Problem umgeht: Decal. Du findest es heute noch, wenn Du den Shader des Materials von Standard auf Legacy Shaders > Decal umschaltest. Dieser Shader hat weniger Einstellungen, stellt aber das Auflegen des Aufdrucks richtig dar.

Wichtig dabei: Die Untergrundfarbe muss als einfarbige Bilddatei eingestellt werden, nicht über Main Color (sonst entsteht auch hier der Tint-Effekt).

Der Legacy-Decal-Shader schneidet das Bild richtig aus, wenn die Hintergrundfarbe nicht über die Main Color eingestellt, sondern als Bild in Base (RGB) gelegt wird.
Der Legacy-Decal-Shader schneidet das Bild richtig aus, wenn die Hintergrundfarbe nicht über die Main Color eingestellt, sondern als Bild in Base (RGB) gelegt wird.

Unity schreibt, dass das Standard-Material die Funktionalität des Decal-Materials ersetzt (was wie demonstriert so nicht ganz richtig ist), weshalb das Decal als veraltet gilt. Du kannst es noch verwenden, aber es kann sein, dass es aus zukünftigen Unity-Versionen verschwindet.

Alternativen

Für alle anderen Fälle (z.B. mehr Material-Parameter) ist – soweit ich weiß – ein separater Shader nötig. Dazu kannst Du nach Unity Decal suchen, es werden zahlreiche Lösungen und Assets dazu angeboten.

Alternativ kannst Du in vielen Fällen auch einfach auf die komplizierte Transparenz verzichten und die gesamte Textur als einfaches Bild anlegen. also die Hintergrundfarbe schon in die Bilddatei einarbeiten.

Dr. René Bühling

Hi, mein Name ist René und ich möchte Dir dabei helfen, deinen Traum vom eigenen Computerspiel Wirklichkeit werden zu lassen. Mein erstes kommerziell veröffentlichtes Spiel habe ich Mitte der 1990er Jahre als Hobby-Projekt mit einem Basic-Dialekt unter Windows entwickelt. Seither verfolge ich das Thema Spieleentwicklung in Hobby, Studium und Beruf. Ich habe über 20 Jahre Erfahrung in allen Phasen des Entwicklungsprozesses, die ich gerne mit dir teilen möchte.