Jump to content
Unity Insider Forum

SplatPrototyp-Textur verbessern/verändern zur Laufzeit


Elharter

Recommended Posts

Hallo,

schaut euch mal die angehängte Textur an. Diese liegt vor. Defacto ein gewisser Rahmen an festgelegten Pixelfarben.
In diesem Beispiel gibt es:

- grün
- hellgrau
- dunkelgrau
- beige/sandfarbe
- rot/weiß
- weiß

Also bis hierher ja ziemlich einfach. Jetzt würde ich gerne eine Texturverbesserung vornehmen und alles was "grün" ist mit einer neuen Textur, die entsprechender hochwertiger nach Gras aussieht überblenden, bzw. überschreiben - zur Laufzeit.

Nachdem die Kanten jedoch scharf bleiben sollen (um zb die Streckenabgrenzungen in weiß zu erhalten) stehe ich logisch ein wenig an.

Habt ihr da eine Idee wie ich das angehen könnte?

 

lg & danke

 

japan.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also... grau und blassgrün und beige sind keine guten Farben dafür. Wenn du nämlich die Straße anschaust, dann besteht dessen Graustufen-Ton zu gleichen Teilen aus rot, grün und blau; den additiven Grundfarben. Wenn du das tust, was Unity's Terrain-Shader (als Beispiel für so genannte Splatmap-Shader) tut: Dann kannst du diese vier Kanäle stattdessen benutzen, um mit ihnen Texturen zu kodieren. Rot steht für Alphalt, grün für Gras, blau für Sand. Da Texturen noch einen vierten Kanal, den Alpha-Kanal haben, kannst du den noch für etwas anderes benutzen.

So oder so brauchst du für dieses Vorhaben einen Shader, der fünf Texturen akzeptiert: Die Splatmap, also die Daten, wo welche andere Textur zu sehen ist, und eben die anderen vier Texturen, eine für jeden der vier Kanäle der Splatmap.

Du machst dann einen UV-Lookup für jede der fünf Texturen auf jedem Pixel und interpolierst dann die Pixelwerte der vier Texturen in Abhängigkeit vom entsprechenden Wert des Kanals in der Splatmap.

Ich könnte da noch spezifischer werden... aber entweder, du kannst das so umsetzen... oder, wenn nicht, solltest du dir ein paar Shadergrundlagen anschauen und ein bisschen mit denen warm werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 weeks later...
Am 15.8.2019 um 17:47 schrieb Sascha:

Also... grau und blassgrün und beige sind keine guten Farben dafür. Wenn du nämlich die Straße anschaust, dann besteht dessen Graustufen-Ton zu gleichen Teilen aus rot, grün und blau; den additiven Grundfarben. Wenn du das tust, was Unity's Terrain-Shader (als Beispiel für so genannte Splatmap-Shader) tut: Dann kannst du diese vier Kanäle stattdessen benutzen, um mit ihnen Texturen zu kodieren. Rot steht für Alphalt, grün für Gras, blau für Sand. Da Texturen noch einen vierten Kanal, den Alpha-Kanal haben, kannst du den noch für etwas anderes benutzen.

So oder so brauchst du für dieses Vorhaben einen Shader, der fünf Texturen akzeptiert: Die Splatmap, also die Daten, wo welche andere Textur zu sehen ist, und eben die anderen vier Texturen, eine für jeden der vier Kanäle der Splatmap.

Du machst dann einen UV-Lookup für jede der fünf Texturen auf jedem Pixel und interpolierst dann die Pixelwerte der vier Texturen in Abhängigkeit vom entsprechenden Wert des Kanals in der Splatmap.

Ich könnte da noch spezifischer werden... aber entweder, du kannst das so umsetzen... oder, wenn nicht, solltest du dir ein paar Shadergrundlagen anschauen und ein bisschen mit denen warm werden.

Danke für deine ausführliche Antwort. Ich glaube das schaffe ich jetzt so auf Anhieb nicht.
Mein Zugang wäre eher auf Pixel-Ebene gewesen. Die Textur und die Farbe der Pixel kann ich eindeutig auslesen und zuordnen (Beton, Gras, Sand usw) da gibt es keinerlei Überschneidungen da die Farben eindeutig sind pro Pixel.

Jetzt hab ich mehr an eine Art "virtuellen" Brush/Pinsel gedacht der Bereiche ausliest und mit einer echten, ordentlichen Textur überschreibt oder überlagert und die Randbereiche wie Kanten oder Linien entsprechend abschneidet.

Oder ich zeichne die Textur nach Priorität....zb:

1. Wiese, überlagern mit neuer Texture
2. Sand
Und am Ende zeichne ich die vorhandene Straße über alles drüber....

Mit Shade und Co habe ich bis dato nichts gemacht.

lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...