Sonntag, 10. April 2016

Materialtexturen mit NormalMap-Online erzeugen

NormalMap-Online
Am Freitag hat Wagner James Au auf New World Notes eine Anleitung von Brookston Holiday zum Erstellen von Normal Maps mit Hilfe des Programms xNormal gepostet. Zeigen möchte ich jetzt aber eine etwas abgewandelte Methode, denn das Programm xNormal ist installiert 433 MB groß und das ist mir viel, um ein paar kleine Texturen zu erzeugen.

In den Kommentaren zum Artikel auf New World Notes wurde aber von Bellahyae eine Online-Seite empfohlen, mit der sich für Second Life die gleichen Schritte durchführen lassen. Es handelt sich um die Seite NormalMap‑Online. Ich habe das ausprobiert und fand es ziemlich gut. Vor allem ist es einfach zu bedienen. Deshalb zeige ich nun, wie man aus vorhandenen, ganz normalen Texturen, sowohl eine Normal Map als auch eine Specular Map erstellt, die man in Second Life als Materialtexturen einsetzen kann.

Vor drei Jahren hatte ich schon einmal eine ähnliche Anleitung geschireben, die aber nur eine Normal Map erzeugte und vergleichsweise kompliziert war, gegenüber der Anwendung von NormalMap‑Online.

Vorabinformation: Ich verwende bei den Begriffen und Bildern hier im Beitrag, die Bezeichnungen aus dem offiziellen SL Viewer mit deutschsprachiger Oberfläche.

Grundlagen
Auf die Grundlagen gehe ich jetzt nicht in voller Tiefe ein. Nur kurz auf die Begriffe der drei unterschiedlichen Texturen.
  • Texture (diffuse) ist die Standardtextur, die man in Second Life schon immer in Verbindung mit Oberflächen verwendet hat.
  • Bumpiness (normal) heißt im Baufenster die Normal Map, die einer herkömmlichen Textur eine Tiefe hinzufügt.
  • Shininess (specular) heißt im Baufenster die Specular Map, die einer herkömmlichen Textur einen Glanz (Lichtreflektion) hinzufügt.
Alle drei Texturen zusammen bilden das aktuelle Materialsystem in Second Life und mit geeigneten Strukturen, lassen sich damit ganz gute 3D-Effekte erzielen. Sehen kann man es im SL Viewer nur, wenn das Erweiterte Beleuchtungsmodell in den Grafikeinstellungen aktiviert ist. Aktivierter Schatten ist im Viewer dagegen nicht notwendig, um Materialien zu sehen.

Diese Textur wird hier im Beispiel verwendet
Vorbereitung der Textur
Zum Nachvollziehen habe ich für die Anleitung eine Textur aus der Inventar-Bilbliothek genommen, Da Linden Lab bei denen keine eingeschränkten Berechtigungen vergeben hat, gehe ich davon aus, dass sie frei verwendbar sind.

Am besten kann man den Unterschied einer normalen Textur gegenüber einer mit Material versehenen Textur bei Backsteinen sehen, da die Fugen zwischen den Steinen exakte Vertiefungen haben. Dazu habe ich in der LL‑Bibliothek im Inventar die Textur Bricks in den allgemeinen Texturordner kopiert. Zu finden ist die Bricks-Textur unter:
> Bibliothek > Texturen > Buildings > Bricks

Natürlich kann man sich noch beliebige andere Texturen aus der Bibliothek kopieren, die man auprobieren will. Oder man nimmt einfach Texturen, die man schon auf Festplatte hat.

Nach dem Kopieren im Inventar einfach doppelt anklicken und im Vorschaufenster mit Speichern unter auf Festplatte speichern.

Bricks Textur speichern
Für die Berechnung der Normal Map und Specular Map ist es vorteilhafter, wenn die Ursprungstextur in Graustufen vorliegt. Deshalb sollte man die gespeicherten Texturen in einem Bildbearbeitungsprogramm, wie Gimp, Photoshop oder IrfanView öffnen, in Graustufen umwandeln und separat abspeichern. Ich habe dazu IrfanView genommen, da es klein und flott ist. Dort gibt es im "Bild"-Menü den direkten Eintrag In Graustufen umwandeln.


Originaltextur in Graustufen umwandeln mit Irfan View
Will man noch bessere Ergebnisse erzielen, kann man auch noch den Kontrast der Graustufentextur erhöhen. In IrfanView reicht es, wenn man einfach die "Auto-Korrektur" anwendet (ebenfalls im Menü unter "Bild" zu finden).


Kontrast erhöhen mit "Auto-Korrektur", ebenfalls über IrfanView
Speichern sollte man die Graustufentextur dann mit einem Zusatz, der erkennen lässt, dass es sich um die geänderte Version handelt (z.B. Bricks.png speichern unter Bricks_sw.png). Die original Bricks Textur darf auf jeden Fall nicht überschrieben werden, da man sie noch braucht. Das Umwandeln in ein Graustufenbild ist aber im Grunde nicht unbedingt notwendig. Gerade bei dem Beispiel mit den Backsteinen, ist das Ergebnis auch mit der Originaltextur ganz gut.

Erstellen von Normal Map und Specular Map
Nun ist alles vorbereitet für die Berechnung der beiden Material Maps. Wenn noch nicht getan, ist es jetzt Zeit, die Webseite NormalMap‑Online zu öffnen. Der Autor Christian Petry kommt übrigens aus Deutschland und hat hier seine Homepage.

Als erstes wird in das linke der drei Grafikfenster die Graustufentextur (oder auch die Originaltextur) geladen, für die man Maps berechnen will. Einfach in das linke Fenster klicken und im erscheinenden Fenster die Datei auswählen, die wir in Graustufen umgewandelt haben (z.B. Bricks_sw.png).

Das mittlere Fenster und die Optionen darüber dienen dann der Erstellung der verschiedenen Materialtexturen. Neben der Normal Map und Specular Map, kann man auch noch eine Displacement Map und eine Ambient Occlusion Map erzeugen. Da die aber von SL nicht unterstützt werden, lassen wir diese beiden Registerkarten außer Acht.

Im rechten Fenster kann man alle Änderungen der vier Map-Texturen aus dem mittleren Fenster direkt in Echtzeit sehen. Standardmäßig ist diese Anzeige schwarzweiß. Will man die Vorschau in Farbe sehen, so wie es auch später in Second Life aussehen wird, sollte man die Originaltextur (in meinem Fall die Bricks.png) über den Load...-Button neben dem Eintrag Diffuse Map laden und die Checkbox Diffuse aktivieren. Und da in SL ja zwei der vier Maps nicht unterstützt werden, sollte man auch noch die Checkboxen neben Displacement und AO deaktivieren. Damit entspricht die Vorschau ziemlich genau dem, was später in SL zu sehen sein wird.

Normal Map
Nun kann man beginnen, mit den drei Schiebern über dem mittleren Fenster zu spielen. Und zwar zuerst in der Registerkarte Normal. Welche Werte man letztendlich nimmt, bleibt jedem selbst überlassen. Man muss halt mit dem Ergebnis im Vorschaufenster zufrieden sein. Die Voreinstellung beim ersten Öffnen von NormalMap‑Online ist schon gar nicht so schlecht. Für die Backsteine habe ich die Werte genommen, die im nächsten Bild zu sehen sind.

Erstellen der Normal Map

Die Einstellungen bewirken im Einzelnen:

Strength:
  • Damit lässt sich die Stärke der 3D-Struktur einstellen. Je höher der Wert, desto höher die optische Tiefe der Struktur.
Level: 
  • Ändert die Schärfe der Konturen. Je höher der Wert, desto mehr werden die Konturen verrundet.
Blur/Sharp:
  • Ändert die allgemeine Schärfe der Textur. Sollte man normalerweise bei 0 (keine Änderung) belassen. Einfach im Vorschaufenster beobachten, was passiert, wenn man den Wert ändert.
Filter:
  • Bestimmt die Art, wie Strukturkanten in der Ursprungstextur erkannt werden. Weiter hilft hier Wikipedia: Sobel / Scharr.
Invert:
  • Damit lassen sich Erhöhungen und Vertiefungen invertieren, also in die Gegenrichtung umkehren.

Specular Map
Jetzt geht es zur Registerkarte Specular. Hier stehen als Voreinstellung alle Schieber auf dem Wert 1 (volle Stärke). Es kann jedoch sein, dass man ein Material verwendet, das eigentlich gar nicht wie eine Speckschwarte glänzen soll. Die Backsteine hier aus dem Beitrag sind ein gutes Beispiel dafür. Dehalb habe ich die Strength auf den Wert 0.5 reduziert. Der Wert 0 ergibt übrigens gar keinen Glanz und bevor man so eine Map erstellt, lässt man sie lieber ganz weg. Kommt auf das gleiche raus.

Erstellen der Specular Map

Auch hier die Einstellungen im Einzelnen:

Strength:
  • Damit lässt sich die Stärke für den Glanz einstellen. Je höher der Wert, desto stärker der Glanz.
Mean:
  • Hier bin ich nicht ganz sicher. Aber ich denke, es wird festgelegt, in welchem Grauwertbereich Glanz entstehen soll. Einfach beim Ändern die Vorschau betrachten, dann ist die Auswirkung leicht ersichtlich.
Range:
  • Gibt an, wie weit sich der Glanz ausbreitet, beginnend mit dem Grauwert, der bei "Mean" eingestellt wurde.
Falloff:
  • Legt die Abnahme des Glanzes vom hellsten Punkt fest. No = keine Abnahme / Linear = gleichmäßige Abnahme / Square = quadratische Abnahme.

Maps speichern
Hat man alles so eingestellt, dass man mit dem Effekt in der Vorschau zufrieden ist, speichert man für jede Registerkarte die Map separat ab. Das geht unterhalb des mittleren Fensters über den Download-Button. Das Format "PNG" kann man ruhig übernehmen, genauso wie die Opacity (Deckkraft).

Ein kompletter Materialsatz an Texturen
Die Texturen werden unter den Namen NormalMap.png und SpecularMap.png gespeichert. Damit man sie später der eigentlichen Ursprungstextur zuordnen kann, sollte man deren Name noch bei den beiden Maps ergänzen. Ein kompletter Material-Satz für SL sieht dann so aus, wie in dem Fenster hier rechts zu sehen (inklusive der vorher erstellten Graustufentextur).

Texturen hochladen
Jetzt kann man die Map-Texturen nach Second Life hochladen. Achtung: Die Graustufentextur braucht man in SL nicht. Und im Fall des Beispiels hier, bei dem ich die Ursprungstextur aus SL heraus gespeichert hatte, muss man die natürlich auch nicht hochladen. Also nur die beiden Maps.

Texturen anwenden
Seit einiger Zeit gibt es im offiziellen SL Viewer in der Registerkarte Textur drei Radiobuttons, über die man den jeweiligen Textur-/Map-Typ auswählen kann. Zum Ausprobieren reicht ein gerezzter Würfelprim aus. Zuerst lädt man die Ursprungstextur bei aktiviertem Radio Button Texture (diffuse). Achtung: Wenn man nun an Skalierung, Drehung oder Versatz etwas ändert, muss man diese Änderungen auch bei den anderen beiden Textur-Typen vornehmen, damit alle drei Texturen deckungsgleich bleiben. Einige TPVs haben auch eine Funktion zum Kopieren der Werte auf alle drei Texturen eingebaut. Der SL Viewer hat das nicht.

Nach der diffusen Textur, aktiviert man dann den Radiobutton Bumpiness (normal) und fügt die Normal Map ein. Zum Schluss aktiviert man Shininess (specular) und fügt die Specular Map ein. Nachfolgend sind drei Screenshots mit den unterschiedlichen Texturen zu sehen, die ich für das Backstein-Beispiel vorbereitet habe.

Diffuse MapNormal MapSpecular Map

Ausleuchtung
Materialtexturen, die einen starken Effekt haben, kann man eigentlich bei jeden Lichtverhältnissen wahrnehmen. Jedoch kann man mit gezielten lokalen Lichtern den Effekt noch verstärken. Dazu reicht es, eine kleine Kugel zu rezzen und in der Registerkarte Eigenschaften die Checkbox Licht zu aktivieren. Den Radius stelle ich dann meistens auf 2 Meter, wähle eine blasse Farbe (kommt besser als weißes Licht) und platziere die Kugel unmittelbar vor meiner Texturfläche. Wenn ich mit dem Effekt zufrieden bin, stelle ich die Transparenz der Lichtkugel auf 100%, so dass man sie nicht sieht (das Licht aber schon).

Licht einschalten in Registerkarte "Eigenschaften"Transparenz auf 100% macht Lichtprim unsichtbar

Ergebnisse
Hier nun das Resultat der Backsteintextur. Links ist ein Prim nur mit der diffusen Textur, rechts zusätzlich mit Normal Map und Specular Map.

Backsteintextur - links ohne, rechts mit Material Maps
Bei einfachen Prims und kleinen Primgruppen, wirkt sich der Einsatz von Materialtexturen nicht auf den Land Impact aus. Bei komplexen Objekten kann es aber unter Umständen den Land Impact erhöhen.

Hier nun noch ein paar Beispiele, ebenfalls mit Texturen aus der LL-Bibliothek.

Bei Holzplanken habe ich nicht so viel Effekt erzielen können. Wahrscheinlich auch, weil ich hier die Specular Map ganz weggelassen habe, da Holz nicht wirklich viele Reflektionen erzeugt. Links wieder die Originaltextur, rechts mit Normal Map.

Holzplanken - links ohne, rechts nur mit Normal Map
Wo man dagegen getrost viel Specular einsetzen kann, sind Boden- und Wandfliesen aus Stein. Die beliebten blauen Kacheln aus der Bibliothek, brachten allerdings bei mir nicht den gewünschten Effekt.

Blaue Kacheln - links ohne, rechts nur mit mit Material Maps
Eine einfache Bodenfliese zeigt dagegen sehr großen Effekt durch die Map-Texturen. Auch hier wieder links ohne und rechts mit Material-Maps.

Bodenfliese - links ohne, rechts nur mit mit Material Maps
Unterm Strich muss man sich da aber reinarbeiten. Eine pauschale Vorgabe gibt es wohl bei keiner Textur. So lange man nur rumprobiert, kann man im Baufenster auch die Funktion der "lokalen Texturen" verwenden. Dann muss man die Texturen nicht hochladen, sondern kann sie direkt von der Festplatte auswählen.

Uff, ist jetzt doch etwas lang geworden. Im Grunde wollte ich mit diesem Tutorial nur die Webseite "NormalMap‑Online" vorstellen, da ich sie zum Erstellen von Materialtexturen in Second Life für ausreichend halte.

Links

5 Kommentare:

  1. Tolle Anleitung Maddy, sehr verständlich. Danke sehr :-)

    Ich werde es auch mal ausprobieren mit dem Firestorm.

    Die Niki

    AntwortenLöschen
  2. Anidusa Carolina11. April 2016 um 17:54

    hey dankeschön! Was Du alles entdeckst! Toll das man das online machen kann.

    AntwortenLöschen
  3. Die Sache mit den Normal Maps ist ja auf der einen Seite faszinierend. Auf der anderen scheint es aber deutlich Probleme mit anderen Alphatexturen zu geben. Wenn ein Objekt mit einer Alphatextur vor einem Objekt mit Normalmap liegt, habe ich auf meinem Viewer Darstellungsprobleme. Die Textur im Vordergrund wird nicht mehr korrekt angezeigt.

    AntwortenLöschen
    Antworten
    1. In Verbindung mit Alphatexturen hat der SL Viewer generell Probleme. Auch mit anderen Objekten, die keine Normal Map verwenden. Mir fällt das immer auf bei Bäumen, die auf Sim-Surrounds stehen. Die scheinen durch fast alle Objekte hindurch, die perspektivisch eigentlich vor den Bäumen sein sollten.

      Für die Probleme mit Alphatexturen bei den Normal Maps, gibt es in der SL Wiki eine kleine Hilfe, was man alles beachten sollte. Leider nur auf Englisch:
      >> Alpha Modes Do's and Don'ts

      Löschen
    2. Danke sehr für die Antwort!
      Viele Grüße,
      Uri

      Löschen