NormalMaps erstellen

  • Im Forum taucht immer wieder die Frage auf, wie man denn eine Normal-Map erstellt. Nun, ich versuche mal, diese Frage im Folgenden zu beantworten...

    Einführung


    Die Hintergründe der Normal-Map hatte ich schon einmal im Rahmen meiner Materialienforschung beleuchtet und möchte daher einfach den entsprechenden Punkt verlinken: Material-Koeffizienten - Normal-Map.


    Herangehensweisen



    Was für Möglichkeiten gibt es, eine Normal-Map zu erstellen? Ich kenne zwei davon und möchte versuchen sie euch hier näher zu bringen: Über eine Bump-Map oder sie rendern lassen. Was nun schon wieder eine Bump-Map ist, hab ich ebenfalls im schon eben verlinkten Artikel beschrieben, aber hier nochmal ein Direkt-Link: Material-Koeffizienten - Bump-Map.


    Über die Bump-Map zur Normal-Map



    Eine Bump-Map ist nun also ein Graustufenbild. Je heller der Pixel, desto höher liegt er, je dunkler, desto tiefer. Ich nutze als Grundlage immer gerne ein 50% Grau. Als Erhöhung werden dann hellere Farben aufgetragen und als Vertiefungen eben dunklere. Für Lüftungsschlitze nutze ich dann ganz einfach Schwarz, da die ja quasi bodenlos sind. Eventuell eignet sich als Anschauungsbeispiel ein Türgriff von einem Auto. Man hat eine Mulde und darüber den Griff. Also einerseits eine Vertiefung und andererseits was Erhöhtes.

    Müsste ich sowas nachbilden, würde ich sicherlich mit einem Kreis anfangen, den ich mit einem radialen Farbverlauf von unserem Grau (eventuell etwas abgesetzt) zu einem Dunkelgrau in der Mitte fülle. Den Stauch ich dann zu einem Oval zusammen und lege noch einen "Steg" darüber, der nun mit einem gespiegelten linearen Farbverlauf in helleren Grautönen eingefärbt wird. Zum Schluss noch einen Kreis als Schloss an ein Ende des Griffes und fertig soll mal unser billig gemaltes Schluss sein ^^
    -> -> ->


    Hab das jetzt mal in paint.net gemacht, damit kenn ich mich noch am ehesten aus. Aber ich sag mal so: Was paint.net kann, kann auch jede andere vernünftige Bildbearbeitungssoftware ;) Gut, das Speicherich mal als griff.png und nun müssen wir daraus eine Normal-Map machen. Da gibts nun auch wieder verschiedene Wege. Photoshop hat glaub ich ein NVidea-Plugin (was auch immer die schon wieder damit zu schaffen haben) und auch GIMP hat Plugins dafür. Man kann aber auch Stand-Alone-Tools dafür nutzen. Diesen Weg bin ich damals gegangen, da mir GIMP wohl auf ewig ein Rätsel bleiben wird und ich es nur nutze, wenns wirklich gar nicht anders geht >< und Photoshop hab ich nicht. Naja und paint.net kann es schlicht nicht, soweit ich weiß. Meine Lösung hieß seinerzeit xNormals. Das kann wohl noch viele viele andere tolle Sachen, aber ich nutz immer nur den Normalen-Erstellen-Part :D





    xNormals




    Wenn ihr diesen Weg gehen wollt, ladet euch das Tool herunter und startet es. Ihr seht rechts eine Liste von Buttons und einer lautet Tools. Klickt drauf und ihr erhaltet eine Auswahl. Dort nehmt ihr gleich das erste, welches euch anbietet, aus einer Height-Map eine Normal-Map zu machen. Eine Height-Map is das gleiche wie eine Bump-Map, die einen nennens halt so, die anderen so. Der Name der Height-Map ist vllt etwas treffender. Nunja, egal... Jedenfalls öffnet sich ein neues Fenster und ihr rechtsklickt bitte in den linken Height-Map-Teil und wählt Browse height map aus. Öffnet nun unsere Griff-Textur und im rechten Teil rechtsklickt ihr wieder auf die leere Fläche und wählt Generate.

    -> -> ->


    Tjo, im Grunde wars das schon. Ihr könnt das Dingen jetzt wieder über einen Rechtsklick ins rechte Feld speichern, aber dann hat man da einen transparenten Alpha-Kanal dabei, oder ihr kopiert es, dann landets ohne Alpha im Zwischenspeicher und ihr könnt es im Bildeditor eurer Wahl einfügen und selber speichern.


    Ich hab in Blender mal einer Plane diese Normal-Map angefügt und naja, man erkennt den Effekt, aber er ist recht schwach. Ich hab zwar schon die Stärke der Normal-Map auf 2 verdoppelt, aber viel hilfts auch nicht. Und ich weiß gerade nicht, ob TpF das auch kann. Grad nochmal fix geschaut, in der .mtl finde ich zumindest nix in der Art. Bringt uns also nix, das in Blender irgendwie zu regulieren.


    Die Bump-Map normalisieren



    Eine Technik, die ich eh noch ansprechen wollte, können wir nun gleich mal praktisch ausprobieren. Ich habe für den Griff nicht das volle Farb-Spektrum ausgereizt. Die dunkelste Farbe ist kein Schwarz sondern ein dunkles Grau und im hellen Bereich ist es ähnlich. Auch nehme ich als Grundlage ja immer erstmal ein 50% Grau, was aber, wenn ich nur Erhebungen habe oder viel stärker ausgeprägte Erhebungen als Vertiefungen? Dann hat man zwar den hellen Bereich voll ausgereizt, der Dunkle aber hätte noch Potential. Schön wäre es also, wenn unser dunkelstes Grau auf Schwarz abgesenkt werden würde und unser hellstes auf Weis - naja und alles dazwischen eben in Relation dazu. Das macht diese sogenannte Normalisierung.

    Hierzu würde ich nun doch mal zu GIMP greifen, weil das kann es nun wieder ^^ Öffnet das Bild und Wählt im Menü die Normalisierung aus: Farben -> Automatisch -> Normalisieren.
    = ->


    Nun ist die dunkelste Farbe schwarz und die hellste weis und wir können den maximalen Effekt erzielen. Ich bin mir recht sicher, das wird auch noch nicht DIE Lösung sein, dazu müsste ich wahrscheinlich die Farbverläufe an sich optimieren und wahrscheinlich ist die ganze Struktur auch viel zu großflächig, aber ich render das mal fix einfach neu:




    Man erkennt es nun etwas besser, aber wie befürchtet ist es noch nicht die Welt. Aber gut, ich hoffe diese Methode kann euch dennoch mal von Nutzen sein.



    GIMP-Plugin




    Da ich das selber nicht habe, können wir uns da ja gleich zusammen durchwursteln :) Ladet euch das Plugin von hier herunter. Ich habe das Zip für 64 Bit genommen. Öffnet das Zip und folgt der Beschreibung der readme.txt. Sprich die 3 DLL's in den bin-Ordner und die EXE in den plug-in-Ordner. Die EXE müsst ihr nicht ausführen, das macht GIMP dann. Da ich GIMP schon offen hatte, starte ichs mal neu. Ich lade meine Bump-Textur und kann jetzt über Filter -> Abbilden -> Normalmap... eine eben solche erzeugen. Wer das Dingen auf englisch hat, dort wäre es Filters -> Map -> Normalmap....

    ->


    Ihr seht dann das untere kleine Fenster mit einer Vorschau und es gibt sogar einen Scale-Parameter. Das ist quasi genau das, was ich in Blender durch die Stärke geregelt hab, also ideal. Wenn ihr noch auf 3D Preview klickt, bekommt ihr das größere Fenster im Hintergrund, wo ihr direkt ne Vorschau des Ergebnisses seht. Nicht schlecht, gefällt mir. Mit Ok bestätigen und über Datei -> Exportieren als... wieder speichern.





    Eine Normal-Map rendern




    Nun, so eine Bump-Map zu malen liegt eventuell nicht unbedingt jedem, mein Griff ist ja auch eher zu Demonstrationszwecken zu gebrauchen ^^ Was kann man also noch machen? Ich erwähnte eingangs, dass man die Dinger auch "einfach" rendern lassen kann. Hier muss man zwar nicht gut zeichnen können, aber dafür halt modellieren ;)


    Das Grundkonzept funktioniert folgendermaßen: Man erstellt ein detailreiches High-Poly-Model und ein detailarmes Low-Poly-Model. Beide füttert man nun dem Renderer und der berechnet daraus (über die Unterschiede) die Normal-Map.


    Ich werde dazu Blender nutzen, da ich weiß, das es das kann und... ich eh nix andres kenn xD WIE es geht muss ich grad selber erstmal wieder auffrischen.


    Zu aller erst hab ich mal versucht den Griff als High-Poly-Model nachzubauen:




    Das Low-Poly-Model ist dann einfach eine Plane, die da genau drüber gelegt wird. Und dann... ging es irgendwie weiter *Kaffepause und Fahrstuhlmusik* Ah ok, das war ja einfach als wo wie gedenkt. Aaaaalso *Luft hol*




    Mein erster Fehler: Meine Low-Poly-Plane war genau auf 0 und damit wurde nur die Mulde berücksichtigt. Also muss man sie über das High-Poly-Model basteln. Der zweite Fehler: Die Low-Poly-Plane war nicht gemapped. Also schnell ne UV-Abwicklung gemacht (ist ja zum Glück bei ner Plane nich so arg kompliziert xD ) uuuund - Fehler 3: Das Material hatte keine Textur zugewiesen. Also hab ich dem schnell eine verpasst. Und nun folgen wir dem roten Rumgeschmiere da im Bild:

    Zuerst teilt ihr euch mal die Ansicht wie oben zu sehen und stellt die linke Hälfte auf UV/Image-Editor (unten das ist dieser Keyframe Editor etwas größer gezogen und umgestellt auf den Node-Editor). Dann die 1: Wählt mal den Render-Tab aus. Nun (2)scrollt ihr da gaaanz runter und öffnet den Punkt Bake. Als nächstes (3) wählt ihr beim Bake Type Normal aus. Als 4tes setzt ihr noch das Häkchen bei Selected to Active und schon kanns... nein kanns nicht. Wählt erstmal das High-Poly aus, haltet Shift gedrückt und selektiert zusätzlich das Low-Poly. Dieses muss aktiv ausgewählt sein (daher zuletzt anklicken) und jetzt können wir Schritt 5 ausführen und einmal beherzt auf Bake drücken. Das Ergebnis sollte wie oben aussehen - also ohne das rote Rumgeschmiere natürlich :P


    Nun einfach über Image -> Save as Image (F3) im UV/Image-Editor speichern und ihr habt auch eure Normal-Map :)






    Nun gut, ich hoffe ich konnte euch damit weiterhelfen und ich hoffe ihr scheitert nicht daran, dass ich den Cycles-Renderer mit Node-Materialien nutze ^^

    Bis dahin, euer Mo!

    335 mal gelesen

Kommentare 5

  • MaikC -

    Anstatt Xnormal kann man auch cpetry.github.io/NormalMap-Online/ verwenden. Dort kann man auch noch einiges einstellen zum Beispiel die Stärke des Effekts. Oder auch die kanäle tauschen da man ja ne dds draus machen will.
    Schöner Guide ansonsten :)

    • DarkMo -

      Ah supi, weitere Alternativen sind natürlich immer gern gesehen. Auch wenn ihr noch Fragen habt oder was unklar formuliert ist oder so, immer raus damit. Wenn ich Zeit finde, werd ich das dann mit einpflegen :)

    • MaikC -

      Ja klar immer gerne, kannste ja oben mit einpflegen als Plan B :D

  • DH-106 -

    Das beantwortet eine ganze Menge an Fragen :) Vielen Dank für die Mühe.

  • MihAMi02 -

    Ds ist genau was ich haben wollte! Danke sehr!