Jump to content
Unity Insider Forum

Farben der UV Map zur Laufzeit ändern


Recommended Posts

Hi,

 

ich grübel gerade darüber nach, wie ich am besten spezielle Bereiche meiner UV Map im Spiel umfärben kann. Ich gehe jetzt mal davon aus das ich den falschen Ansatz habe.

 

Das Szenario sieht wie folgt aus.

 

Alle Spieler haben das gleiche Set von 10 Raumschiffen im Spiel.

 

Um jetzt die Raumschiffe optisch auf dem Spielfeld zu unterscheiden, habe ich mir gedacht, könnte ich das vielleicht über Farben lösen, wie z.B. einen farbigen Streifen am Flügel des Raumschiffs, jeder Spieler hat also seine eigne Farbe die sich auf dem Raumschiff wiederspiegelt.

 

Besser jedoch wäre es noch wenn es sich bei dem optischen unterschied nicht nur um einen Streifen mit unterschiedlicher Farbe handelt, sondern wenn jeder Spieler ein eigenes Symbol hätte. Also müsste jedes Raumschiff auf dem Flügel das Spielersymbol haben mit der dazugehörigen Farbe.

 

Ich frage mich jetzt wie ich sowas am besten umsetzen könnte.

 

Für jeden Spieler eine eigene Map zu basteln auf der das Logo wäre, wäre eine Lösung, die ich jedoch nicht so schön finde, ich denke das geht einfacher.

 

Da ich ja am Ende eine UV Map für jedes Raumschiff habe, kann ich auch nicht einfach die Basecolor ändern, da sich dann das ganze Schiff in der Farbe ändern würde, was so nicht gewollt ist.

 

Hat jemand eine gute Lösung für meine Idee ? Am besten eine mit Symbol und Farbe ?

Oder vielleicht eine andere Lösung ?

 

 

Interessant wäre ansonsten auch noch eine Art leuchtende Umrandung um das Schiff, nur weiß ich nicht ob so was "einfach" umsetzbar wäre und 2tens denke ich das sowas bei vielen Schiffen nachher etwas komisch aussehen könnte, interessieren würde mich dieses Thema aber trotzdem.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Normalerweise läuft es so ab dass du erst deine normale Diffuse Texture hast und dann eine Art Maskierungs Textur.

 

Du verwendest diese Maskierungstextur um nur bestimmte Bereiche der Diffusen Textur umzufärben. Und zwar per separatem Shader.

 

Entweder machst du das in einer all in one Surfraceshader Lösung bei der du im fragment shader code sowas in der art hast:

 

fixed3 diffuse = tex2d(_MainTex, i.uv0).rgb;
fixed mask = tex2d(_MaskTex, i.uv0).r;
o.Albedo = lerp(diffuse, diffuse * _MainColor, mask);

 

oder du setzt auf eine Multi Material Lösung. Symbole kannst du per Decals hinzufügen oder auf eine ähnliche Weise wie bei der Maskierungstextur Variante.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum machst du die jeweiligen Teile nicht separat und gibst dehnen ein eigenes Material mit einer Farbe. Beim erstellen des raumschiffst gibst dem Material dann die jeweilige Farbe, ohne Decals und snstiges Schnickschnak du kannst die farbe dann sogar jedezeit ändern.

 

Vertex Painting wäre auch noch ne Möglichkeit.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Decals finde ich ganz cool, da kann ich einfach verschiedene Prefabs aus dem gleichen Modell erstellen wo ich einfach mal ein paar Symbole drauf klatsche, denke das kostet auch gar nicht mal so viel Performance (Denke ich).

 

Das mit dem Material habe ich mir auch schon gedacht, ich finde es aber recht unflexibel.

 

Wenn ich z.B die Flügel von meinem Raumschiff einzelnd erstellen würde hätte ich gleich mehrere Probleme.

 

Erstes Problem wäre das ich z.B. bei Übergängen zwischen den 2 separaten Objekten nicht ohne große umstände Rundungen einbringen könnte. Es geht zwar aber mit viel mehr Aufwand.

Außerdem hätte ich vielleicht ziemlich harte Übergänge zwischen UV Map und Material.

 

Klar würde das gehen, ich könnte auch für jedes Einzelteil eine UV Map erzeugen welche ich dann in der Basecolor ändere.

 

Ich finde es aber recht angenehm wenn ich für ein Objekt auch nur eine UV Map habe und dann einfach ein Symbol frei definiert irgendwo hinsetzen kann, So kann ich meine Schiffe individuell verändern und per Prefab ablegen ohne an dem Modell oder dessen Materialien bzw. Shadern rum zu fummeln.

 

Ziehen die Declas denn an der Performance oder sind diese inkompatibel zu speziellen Betriebsystemen ? Also Handy oder so ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Decals brauchen definitiv mehr performance wie ein Material wo du flexibel die Farbe einstellen kannst. Also wenn dus brauchst warum nicht alles braucht schlisslich mehr oder weniger performance.

Vertex Painting ist aber auch perfomanter wie Decals auch darfst du nicht vergessen das du für decals alphamaps brauchst also jeder Strich jedes Logo eine extra Textur .Wobei du bei der Materiallösung keine Textur brauchst. sondern nur ein einziges Unity Material pro Raumschiff.

 

Du Könntest deine Striche und Logos auch direkt als extra Objekt direkt üben dein Raumschiff legen somit hättest ein eigenes Objekt das absoult unabhängig von deinem eigenlichen Raumschiff ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei dem Material habe ich halt den Malus das ich kein Symbol verwenden kann, es sei denn ich baue es direkt in das Modell mit ein und das kostet Zeit und Polygone.

 

Das mit dem Material ist bestimmt die performateste Methode jedoch halt auch die unspektakulärste.

 

Wie meinst du das mit dem extra Objekt über mein Raumschiff legen ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

unspektakulär ? Muss es den kompliziert sein ?

Du kannst doch zb an der Seite eine Plane erstellen und diese direkt über das Objekt legen. Diese Plan passt du an und gibst ihr ein Material. Dann hast für den Strich gerade mal 1 Face gebraucht. Selbst wenn du 100 Faces brauchst leuft dein Spiel nachher immernoch auf nem Taschenrechner.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit unspektakulär meinte ich rein die Farbe ohne Symbol.

 

Aber das mit dem Plane ist ne Idee, ich muss halt nur dafür sorgen, dass das Plane sich an der Form anschmiegt und nur das Symbol sichtbar ist, der Rest sollte unsichtbar sein.

 

Dachte nur das Decals eigentlich nichts anderes ist. Hab mich wohl getäuscht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...