Jump to content
Unity Insider Forum
Sign in to follow this  
Damon93

Mehrere Shader auf Basis einer Texture/Material

Recommended Posts

Halo Leute :)

ich hätte da mal eine Frage ;) 

Angenommen ich habe 1 Objekt zum Beispiel eine Axt. Jetzt besteht diese Axt aus verschiedenen Teilen wie dem Griff, dem Metallkörper etc.

Wenn ich nun das ganze Unwrappe und texturiere, dann verwende ich für den Griff eventuell eine Holztexture, für den Metallkörper logischerweise irg. was Eisen ähnliches und vllt hau ich um den Griff noch ein Lederband einfach nur für optische Reize. 

Das ganze habe ich in einer 1024x1024 texture welche ein Material besitzt. Nun möchte ich einen Shader verwenden der das Metall ein bisschen glänzen macht. Also setze ich in Unity in den Standard Shader settings den Metallic Slider einfach ein bisschen höher. ---> Blöd!!!

Jetzt ist mein Holz auch plötzlich glänzend :( Glänzendes Metall schön und gut aber glänzendes Holz oder noch schlimmer ein reflektierendes Lederband^^ eher uncool!

Meine Frage ist nun also, wie kann ich sagen, dass lediglich der Part meiner UV Map, welcher zu Metall gehört den glänzenden/reflektierenden Shader bekommen soll und der Rest von meinem Objekt einen eher Matten shader?

Möchte Draw Calls etc. gerne vermeiden! Auch zu viele Materials wären blöd. Möchte keine Axt haben mit 3 Materials -> wirkt sich doch bestimmt auch auf die performance aus oder? Und wenn ich am Ende 10 Gameobjects habe alle mit 3+ Materials...

Am Ende würde ich gerne einen Texture Atlas haben sagen wir 4096x4096 in der alle meine Texturen enthalten (Holz, Metall, Leder, Stoff etc.)

 

Hat jemand eine Idee wie ich an die Sache rangehen soll? 

Share this post


Link to post
Share on other sites

Dafür kannst im Metallic-Workflow beim Unity-Standardshader eine "Metalltextur" setzen. Bei der Metalltextur wird der R-Channel ausgewertet und der Alphachannel. Der R-Channel steuert dabei den Metallanteil der Textur und der Alphachannel die Rauigkeit der Oberfläche. Oft nimmt man für die Metalltextur eine Grautextur, da hier ja die RGB-Channels identisch sind.
Im Fall deiner Axt würdest du eine Textur übergeben. auf welcher die UV-Bereiche des Metalls nahzu weiß sind und die UV-Bereiche des Holzes eher schwarz. Für Bereiche mit einer glatten Oberfläche würden die UV-Bereich des Alphachannels gesetzt sein.

Wenn du dir schon Gedanken um metallische und Holzanteile machst, dann würde ich dir auch zusätzlich noch eine Normalmap pro Gegenstand empfehlen. Damit wärst du dann bei 3 Texturen pro Gegenstand. Wenn du dir Sorgen um die Performance machst, dann könntest du alle 3 Texturen in einem Texturatlas bündeln (also einen Altas je Texturtyp) und die UVs der Gegenstände diesem Atlas anpassen.

Share this post


Link to post
Share on other sites

Hey cool danke Zer0! 

hab jetzt nachdem ich wusste wonach ich suchen muss auch tatsächlich was gefunden:

https://docs.unity3d.com/Manual/StandardShaderMaterialParameterMetallic.html

Steht im Grunde das selbe darin was du gesagt hast nur etwas detaillierter mit Bildern :P

Werde das heute Abend ausprobieren und mir auch mal normal maps anschaun. 

Vielen Dank dir! Hast mir echt weitergeholfen!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×