PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie erstelle ich NormalMaps und wie füge ich diese ein?



Sotha
05.10.2009, 09:51
oder geht das automatisch bei Oblivion, wenn ich die Datei genauso nenne wie die Textur, nur mit der Endung _n?

Ich habe Zwar eine Anleitung für Normalmaps gefunden, leider ist diese auf englisch und ich komme nicht soy recht damit klar. Kann mir bitte wer erklären, wie man eine Normalmap mit Gimp erstellen kann? :gratz

Katan
05.10.2009, 11:00
Du brauchst eine Normal vorallem, weil deine Textur ohne kein Licht reflektieren und im Spiel schwarz erscheinen würde. Es gibt aber noch einen wichtigeren Grund: Normal Maps sollen ein Objekt detailierter aussehen lassen als es eigentlich ist. Auf Basis des Lichteinfalls und der in der Normal Map gespeicherten Informationen wird eine dementsprechende Oberfläche generiert. Soll heißen, du kannst vor einer komplett flachen Steinwand stehen, die uneben und felsig aussieht, nur aufgrund der Normal Map. Umso detailierter die Normal Map, desto detailierter also auch das Objekt ingame (in diesem Beispiel: weniger Fels für die Normal, weniger Fels für die Textur).

Nicht alle Texturen haben eine Normal Map, nur die, die ingame gerendered werden wie Tische, Bücher, Klamotten, etc. Icons, Bilder in Büchern und so weiter werden ingame nicht gerendered und brauchen daher keine.

Wenn du eine Normal Map machst, ist es wichtig zu verstehen, wonach der Normal Map Filter Tiefen und Höhen beurteilt. Grob gesagt, Schwarz ist Tiefe, Weiß ist Höhe; umso dunkler eine Stelle, desto tiefer wird sie vom Filter wahrgenommen, umso heller sie ist, desto höher. Um das bestmögliche Ergebnis zu kommen, ist da etwas Handarbeit vonnöten; hast du eine Textur mit einem Bild, das in dunkelblau und gelb gehalten ist, würde das dunkelblau tiefer als das gelb gesetzt, was in dem Fall nicht Sinn der Sache ist. Es reicht aber, die Stellen, die du dunkler (oder heller) haben willst, abzudunkeln (oder aufzuhellen). Dass in der Textur selbst allzu viel Tiefendetail ist, ist Normal Map sei gepriesen nicht nötig.

Wie du schon erkannst hast, mit Ausnahme des angefügten _n hat die Normal Map denselben Namen wie die Textur, damit das Spiel sie ihr zuordnen kann. Du kannst aber auch eine unendliche Anzahl an Texturen an eine einzelne Normal Map kleben. Nehmen wir mal an, du hast eine Normal Map und zwei Texturen, die beide von ihr Gebrauch machen sollen. Die Normal Map neißt normal_n.dds, die beiden Texturen dementsprechend dann etwa normal_tex01.dds und normal_tex02.dds. Das Spiel wird beide Texturen der korrekten Normal Map zuordnen, da alles hinter dem Unterstrich ignoriert wird. Deshalb sollte man es auch vermeiden, seine Texturen Meine_super_tolle_Schwert_Tex.dds zu nennen.

So viel zum Allgemeinen.

GIMP. Da habe ich jetzt nicht so die Ahnung von, muss ich dir sagen, da ich mit Photoshop arbeite. Erstmal benötigst du das DDS-Plugin (http://nifelheim.dyndns.org/~cocidius/dds/) und Normalmap-Plugin (http://nifelheim.dyndns.org/~cocidius/normalmap/). Es funktioniert im Prinzip so: Textur öffnen, Graustufenbild draus machen (s.h. Bild auf geringstmögliche Sättigung bringen), Normal Map Filter drüber schmeißen, fertig. Das sieht nicht allzu schön aus, funktioniert aber. Hier (http://www.scharesoft.de/joomla/forum/showpost.php?p=217023&postcount=7) hat jemand etwas zu den Einstellungen geschrieben. Ich verwende immer mehrere Ebenen, die ich mit unterschiedlichen Werten weichzeichne, sie sich überlagern lasse, jede einzelne durch den Filter jage, sie auf einer Ebene zusammenfasse und dann mit dem Normal Map Filter normalisiere (Normalize Only). Wenn du eine Normal Map erstellst, ist es immer schlau, die Arbeitsfläche zu verdoppeln (nicht das Bild! Nur die Fläche); das Bild muss zentriert in der Mitte liegen und dann fertigst du Kopien des Bildes an, die du um das Original herumlegst. Bist du mit dem Normal Map Filter fertig, setzt du die Arbeitsfläche wieder auf die Originalabmessungen zurück (auch wieder darauf achten, dass das Originalbild genau zentral liegt, damit davon nichts weggeschnitten wird). Wenn du das nicht tust, können bei sich wiederholenden Texturen, die nahtlos aneinander liegen sollen, durch die Normal Map hässliche Ränder entstehen.

Sotha
06.10.2009, 19:35
Also was eine Normalmap ist, weiss ich ja, und die würde ich auch gerne nutzen, deswegen fragte ich ja.
Gut, das ich ein Plugin für Gimp brauche ist schonmal eine wichtige Information, danke dir. :gratz

Das mit dem Arbeiten ergibt sinn, wenn das Bild/Map in der Mitte ist, wegen den Rändern. Leuchtet ein.
Ma schauen ob ich deinen Rat befolgen kann, und wie das ergebnis wird. ^^

(vorerst also frage beantwortet)

________________________________

Also ich weiss jetzt wie ich Normalmaps erstelle und so weiter. Scheint ja recht einfach zu sein.
Jetzt aber etwas spezifiziertere Frage: Scheinbar muss ich die map etwas transparent machen, damit es nicht so einen hellen glanz ergibt, oder?
Je nach dem, ob ein teil der Textur stärker scheinen soll, oder nicht, sollte die transparenz schwächer oder stärker ausfallen lassen, seh ich das richtig?

Wie aber (als beispiel) stelle ich eine Normalmap für Plastersteine her, wenn diese kaum bis gar nicht reflektieren, aber dennoch struktur erkennbar sein sollen? gibbet da einen trick, oder soll ich die allgemeine transparenz per Regler runterschrauben?

Katan
06.10.2009, 20:09
Liegt am Alpha-Kanal. Du kannst eine Graustufenversion deiner Textur in den Alpha-Kanal kopieren, den Kontrast erhöhen und stark weichzeichnen. Musst halt schauen, wie sich der Effekt dann im Spiel ausmacht. Wenn du den Glanz ganz weghaben willst, müsste es - lass mich lügen - eigentlich reichen, die Normal Map als DXT1 (no alpha) zu speichern.

Muecke49
06.10.2009, 21:32
Liegt am Alpha-Kanal. Du kannst eine Graustufenversion deiner Textur in den Alpha-Kanal kopieren, den Kontrast erhöhen und stark weichzeichnen. Musst halt schauen, wie sich der Effekt dann im Spiel ausmacht. Wenn du den Glanz ganz weghaben willst, müsste es - lass mich lügen - eigentlich reichen, die Normal Map als DXT1 (no alpha) zu speichern.

Das ist korrekt. DXT 1 benutzt keinen Alphakanal. Also gibt es auch keinen Glanz, wenn Du dieses Format nutzt.

Ansonsten ist es nötig extra eine Alpha-Map zu erstellen und diese in die Normal einzubinden. Das erstellen funzt mit Gimp, allerdings geht das Verschmelzen von Normal- und Alphamap nicht mit Gimp. Ich nutze dazu DXTBmp.

Growlf hat zum Thema Normalmap eine ganz gute Anleitung: Siehe hier (http://www.multimediaxis.de/showpost.php?p=1733546&postcount=5).

Katan
06.10.2009, 23:04
Würde es nicht reichen, die Normal Map als DXT3 zu speichern? Jedenfalls in Photoshop wird daraufhin automatisch ein weißer Alpha-Kanal an die Datei gehängt, den man beim Neuladen der Datei verwenden kann.

Muecke49
06.10.2009, 23:10
Bei Gimp funktioniert das leider nicht. Du erstellst dann eine Normalmap ohne Alphakanal, wenn Du einfach nur als DXT-3 abspeicherst. und wenn dieser fehlt...wird im Spiel alles mit maximalen Glanzeffekt dargestellt. :( Das hatte ich selber leider erst und habe deswegen nochmal die Normalmap nachbearbeitet, da meine Bücher dermaßen reflektiert haben, dass man die Schrift darauf nicht mehr lesen konnte ;). Gimp ist da leider nicht so ausgestattet, man kann noch nicht mal den Alphakanal importieren............dafür braucht's ein extra Programm.

Für Photoshop gibts ein PlugIn das eben dies bereits integriert und man kann sich diese Arbeit mit einem dritten Programm sparen. Ich schätze mal im Laufe der Zeit wird es auch für Gimp was entsprechendes geben. Da wird ja ständig erweitert.:)

Edit: Es gibt bei Gimp sogar schon ein entsprechendes Fensterchen für den Alphakanal..........doch leider funktioniert dieses noch nicht. :( Lässt sich nicht anwählen und längeres suchen in
Foren ergab nichts anderes, dass man dies eben mit Gimp noch nicht machen kann und auf Photoshop zurückgreifen muss. Oder eben auf die von Growlf beschriebene Methode.