Projektion von Texturen auf andere UV-Layouts mit Blender

Einleitung

Diese Methode ist im Zusammenhang mit der Arbeit an Abyss Demon entstanden und lässt sich im Grunde auf andere Spiele wie Skyrim oder die Fallout-Reihe anwenden. Die Körpertexturen der Rasse basieren auf den Bodyreplacern HGEC („HG EyeCandy Body“) und Robert Male („RobertMaleBodyReplacerV52“). Es gibt auch Texturen für den Standardkörper, doch deren Look weicht sehr von dem der anderen ab, denn diese stammen noch aus einem sehr frühen Entwicklungsstadium des Projekts. Aktuell (Stand: Januar 2020) bin ich dabei diese an den Look der HGEC/RM-Texturen anzupassen. Als „präsentationsreif“ würde ich die Diffuse Maps (die Farbinformation einer Textur) für den männlichen Körper bezeichnen, welche ich als Beispiel für das Tutorial nehme.Der Transformationsprozess ist auch in die andere Richtung, also von Standard nach Robert Male/HGEC/[beliebigen weiteren Bodyreplacer einfügen] möglich (und theoretisch auch zwischen den verschiedenen Bodyreplacern). Weiterführende Erläuterungen befinden sich ziemlich am Ende des Textes.Die Voraussetzungen

  • Gimp bzw. Photoshop mit DDS-Plugins
  • Blender* (Version 2.49 für den Nif-Import, Version 2.79 für die weitere Bearbeitung)
  • Grundlegendes Wissen** in der Bearbeitung von UV-Maps und der Bedienung der verschiedenen Bearbeitungs-Modes, darunter Object Mode, Edit Mode, Texture Paint
  • Grundlegendes Wissen in der Bedienung von Gimp bzw. Photoshop

* Für den Import der Körper-Mesh eignet sich Room207s portable Blender-Version, bei der schon die Nif-Scripts und ein paar nette Spielereien wie das Seam-Mender-Script (das nutze ich übrigens zum Nahtlosmachen des Übergangs zwischen der Kopf- und Körper-Mesh) schon mit dabei sind. Da ich mich noch nicht in die Oberfläche von Version 2.8 eingearbeitet habe, kommt für die weitere Bearbeitung Version 2.79 (die portable Variante kommt als Zip-Archiv) zum Einsatz.
** Für die Basics gibt es zahlreiche Tutorials in deutscher und englischer Sprache auf Youtube (gebt z. B. die Begriffe „UV Map Tutorial deutsch“ ein) oder in schriftlicher Form (u. a. das hier)

Los geht’s

Gimp bzw. Photoshop

Zuerst müsst ihr die Texturen, die ihr anpassen wollt, ins BMP- oder PNG-Format konvertieren. Sollten diese nur im DDS-Format vorliegen, braucht ihr noch das DDS-Plugin für Gimp bzw. die NVIDIA Texture Tools für Adobe Photoshop (für CS; für CC), um die Dateien zu öffnen. Ihr könnt zwar auch die DDS-Datei direkt bearbeiten, doch je öfter diese abgespeichert wird, desto mehr geht die Bildqualität der Textur verloren. Beim Öffnen der DDS-Datei ist darauf zu achten, dass die Mip Maps nicht geladen werden.

Blender 2.49

(optional, siehe letzter Absatz beim Nif-Import)

Der Nif-Import

Es geht darum die Nif-Datei des jeweiligen (Standard-)Körperteils nach Version 2.79 zu bekommen. Es gibt Nif-Scripts für neuere Blender-Versionen, aber mit denen habe ich bisher wenig Erfahrung gemacht.

Der herkömmliche Weg besteht darin, die Nif aus dem Meshes-BSA-Archiv (Data-Ordner) z. B. mit dem BSA Commander zu entpacken und dann in Blender zu importieren. Die entpackten Körper-Meshes findet ihr unter Oblivion\Data\meshes\characters\_male. Ich nehme für das Tutorial die upperbody.nif.

  1. Vor dem Import in Blender muss vorher der Würfel gelöscht werden (mit Rechtsklick im Object Mode auswählen > Entf-Taste).
  2. Oben im Menü geht ihr auf File > Import > NetImmerse/Gamebryo.
  3. im sich öffnenden Fenster sind oben links in der Ecke die Schaltfläche „P“ und gleich darunter eine Schaltfläche mit zwei Dreiecken. Über erstere gelangt ihr in das jeweilige übergeordnete Verzeichnis und über die andere wählt ihr die Festplatte aus, auf dem das Spiel installiert ist. In der Liste rechts daneben klickt ihr euch durch die Ordner, bis ihr zum _male-Ordner gelangt, wählt mit linker Maustaste die upperbody.nif aus und bestätigt mit einem Klick auf die OK-Taste
  4. Speichert das Ganze, nachdem der Import beendet ist, als Blend-Datei

Alternativ könnt ihr auch die Ganzkörper-Mesh aus der Ressource „Oblivion Body Resources“ nutzen, die ebenfalls Blender-Dateien mit bereits importierten Körper-Meshes beinhaltet. Die Mod wird auf nexusmods.com/oblivion nur angezeigt wird, wenn ihr angemeldet seid und im Content-Blocking-Tab unter Content die Option „Show adult content“ (Inhalte für Erwachsene anzeigen) auswählt.

Blender 2.79

Das Appending

Eure selbst erstellte Blender-Datei mit der importierten upperbody.nif oder die vorgefertigte Blender-Datei aus der zuvor genannten Ressource liegt euch vor. Der Inhalt wird durch Appending (Anhängen, Hinzufügen) in die neuere Blender-Version eingefügt.

  1. Würfel löschen, ggf. die Perspektive mit Taste 5 auf dem Nummernblock wechseln, wenn die Standardperspektive von Blender euch stört (ich habe die orthografische Ansicht als Standardperspektive im Startup File gespeichert); in die Front-Ansicht wechselt ihr mit Strg und der 1 auf dem Nummernblock; eine Liste mit Tastaturkürzeln
  1. Appending: Geht hierzu im Menü auf File > Append
  2. Wählt die oben genannte Blender-Datei aus und klickt auf den Object-Ordner und dann auf UpperBody und mit Shift und Linksklick auf Arms
  3. Bestätigt mit einem Klick oben rechts auf „Append from Library“ (aus der Sammlung hinzufügen); die Warnung oben rechts könnt ihr ignorieren, denn auf unser Vorhaben hat sie keine Auswirkung
  4. Vereint die Arme mit dem Oberkörper, um die nächsten Schritte in einem Abwasch zu machen (Rechtsklick auf Arm und Shift Rechtsklick auf den Oberkörper > Strg J)

Duplizierung der UV-Maps

  1. Geht ins Object Data Tab ganz rechts (kleine Schaltfläche mit auf dem Kopf stehenden Dreieck mit drei Punkten)
  2. Klickt auf das Plus-Symbol, um die UV-Map zu duplizieren
  3. Mit einem Doppelklick auf den Namen der UV-Map, könnt ihr diese umbenennen, bestätigt mit Return oder Enter
  4. nennt die obere z. B. Standard, Vanilla oder Default oder ähnliches; das ist die Standard-UV-Map, die unverändert bleiben soll
  5. nennt die andere z. B. Edited, Robert Male oder ähnliches; diese passen wir später an den Body Replacer Robert Male an

Zuweisung der Texturen

  1. Wählt mit rechter Maustaste den Oberkörper aus
  2. Wechselt in den Edit Mode (Tab-Taste oder Dropdown-Menü unten)
  3. Geht in den UV-Editor. Um dort hinzukommen gibt es verschiedene Wege. Der Einfachheit halber könnt ihr den über die Dropdown-Liste oben rechts neben dem Menüpunkt „Help“ erreichen. Durch einen Klick auf „UV Editing“ werden die Fenster entsprechend eingeteilt. Das linke Fenster stellt die Mesh als abgewickeltes 2D-Netz dar, auf dem die Textur abgebildet wird
  4. Im linken Fenster unten wird unter Image > Open die Textur zugewiesen.
  • Default UV Map: entweder eine schon bestehende Textur oder erstellt eine neue*
  • Robert Male UV Map: die Textur, die auf Robert Male basiert und an den Standardkörper angepasst werden soll, also unsere Textur-Vorlage

* Image > New Texture. Die originale Textur für den Standard-Oberkörper hat eine Dimension von 512×256 Pixeln. Für mein Projekt nahm ich das Doppelte, damit die Details besser zur Geltung kommen. Außerdem lassen sich Texturen mit einem transparenten Hintergrund erstellen. Dies ist praktisch für Elemente wie z. B. Tattoos, die in eurer Textur-Projektdatei auf einer separaten Ebene liegen. Dafür klickt ihr auf das schwarze Feld neben Color und setzt den Wert bei „A“ auf 0. Das A steht für Alpha und kontrolliert den Grad der Durchsichtigkeit.

Denkt dran, die neu erstellte oder die bestehende Textur immer wieder zu speichern, ansonsten geht euer Fortschritt nach Beenden von Blender verloren!

Bearbeitung der Robert Male UV Map

Jetzt geht es ans Eingemachte. Denn nun werden die Vertices der Robert Male UV Map mit Rechtsklick und G an die richtige Stelle geschubst, sodass sich die UV Map ungefähr mit dem Proportionen der Körperteile auf der Textur deckt (die Feinarbeiten an den Schnittkanten kommen später im Texture Paint Mode). In den neueren Versionen gibt es das UV Sculpt Tool, was das Bugsieren der einzelnen Partien erheblich vereinfacht. Mit dem Anschalten des „Proportional Editing“ (UVs > Proportional Editing > Enable oder Connected) lässt sich ein ganzer Bereich mit G verschieben. Die Grenze kann mit dem Rollen des Mausrads variiert werden. Überlappende UV-Maps wie bei der Armregion können mit C markiert werden; auch hier lässt sich die Größe des Einflussbereichs mit dem Mausrad steuern. Die Option Enable beeinflusst alle Inseln der UV Map, die Option Connected nur einzelne Inseln. Außerdem könnt ihr UV Map vom Robert Male Body als Textur exportieren (UVs > Save UV Layout) und sie temporär der UV Map zuweisen, damit euch die Platzierung leichter fällt. Kürzlich habe ich ein Video gesehen, das 20 Tipps für die UV-Map-Bearbeitung zeigt (leider nur in Englisch) und ein paar Sachen haben mich überrascht. Am Ende sollte die an Robert Male angepasste Standardkörper-UV-Map ungefähr so aussehen.

Das Klonen im Texture Paint Mode

Im ReiterSlots setzt ihr einen Haken bei „Clone from Image/UV Map“ und wählt Image als Painting Mode, die Standardkörper-Textur als Canvas Image und die Standardkörper-UV-Map als UV Map aus.

Im Reiter Tools wechselt ihr zur Clone Brush(Linksklick auf das runde Brushsymbol). Die Textur-Vorlage ist das Source Clone Image. Die Robert Male UV Map dient als Source Clone UV Map. Die Pinselstärke (Strength) steht auf dem Wert 1.

Soll in die andere Richtung geklont werden, also von Standard nach Robert Male, verwendet ihr die Robert-Male-Textur als Canvas Image, die Standardkörpertextur als Source Clone Image und die Default UV Map als Source Clone UV Map. Vielleicht ist dann auch ratsam für die Erstellung der Textur-Vorlage den Bodyreplacer als Ausgangsbasis zu nehmen.

Damit das Übertragen schneller geht, wechselt ihr in den Reiter Optionsund macht die Haken bei Occlude, Cull und Normal raus. Auf diese Weise wird die Vorder- und Rückseite gleichzeitig bearbeitet. Den Bleed-Wert stellt ihr auf 4 Px ein, damit die Ränder im Spiel besser dargestellt werden**.

** bei höheren Werten kann ein Texturbereich in einen anderen „hineinbluten“, wenn die UV-Map-Inseln zu dicht nebeneinander liegen. Der Bereich um die Körperpartien herum sollte einen ähnlichen Farbton wie die jeweilige Körperpartie haben. Ist der Kontrast nämlich zu stark, erscheint der viel hellere/dunklere Rand im Spiel trotzdem als Artefakt an der entsprechenden Stelle auf dem Körper, obwohl er knapp außerhalb des Einflussbereichs der UV-Map liegt.

Nachdem ihr diese Einstellungen vorgenommen habt, braucht ihr nur noch mit dem Clone-Pinsel über die Oberkörper-Mesh streichen, was die Farbdaten von der Textur-Vorlage auf die neue Standardkörpertextur transferiert. Für dieFeinarbeit, also die Bereinigung der Schnittkanten, müsst ihr die Haken bei Occlude, Cull und Normal wieder reinmachen, sonst scheint die Retouchierung auf der anderen Seite der Mesh durch. In den Pinseleinstellungen der Clone-Brush entfernt ihr den Haken bei „Clone from Image/UV Map“ wieder; die Textur-Vorlage wird nicht mehr benötigt. Damit die Übergänge weicher sind, nimmt einen kleineren Wert für die Pinselstärke. Dann wählt mit Strg Linksklick eine Stelle auf dem Körper aus, die als Quelle für die Clone-Brush dient, und fährt damit an den Schnittkanten (Seams) entlang.

Seid ihr mit dem Ergebnis zufrieden, speichert ihr die neue Textur als BMP oder PNG (UV Editor > Image > Save Image bzw. Save As Image). Diese Textur ladet ihr ins das DDS-fähige Bildbearbeitungsprogramm eurer Wahl, retouchiert ggf. den Außenrand der Körperpartien und speichert das Endergebnis als DDS im DXT1 oder DXT5-Format (DXT ist die Art der Kompression). DXT1 verwende ich für die Diffuse Maps und DXT5 für die Normal Maps.

So, das wär’s für’s Erste. Ich kann mir gut vorstellen noch ein Tutorial für die Nahtlosmachung des Bereichs zwischen Kopf und Körper zu schreiben, denn da kommen ähnliche Techniken zum Einsatz. Einen Einblick für dieses Vorgehen findet ihr hier.

Appendix

Im Bildbearbeitungsprogramm habe ich den Bereich außerhalb der UV-Map farblich angepasst, um die Bildung von Artefakten (im Spiel) zu vermeiden. Außerdem sind die Ebenen mit den Extra-Details (Tattoos, etc.) mit der BMP-Datei der Basistextur zur Anschauungszwecken zusammengefügt worden (siehe Ergänzung zum Punkt „Zuweisung der Texturen“ zum Thema Texturen mit transparentem Hintergrund; vorletzter Absatz). Diese Extra-Details-Ebenen wurden separat an den Standardkörper angepasst. Vor der Anpassung habe ich jede dieser Ebenen als separate PNG-Datei gespeichert, denn bei der Speicherung als BMP-Datei geht die Transparenz verloren. Natürlich kann man gleich alles vor der Transformation zusammenfügen, doch ich habe alles getrennt gelassen, um auch Texturen ohne Tattoos oder dergleichen anbieten zu können.

Wenn sich in eurer Textur-Projektdatei ebenfalls Ebenen mit zusätzlichen Details befinden, müsst ihr alle Ebenen vor der Speicherung als DDS-Datei zu einer zusammenfügen. Achtet darauf, dass ihr beim Speichern nicht eure originale Projektdatei aus Versehen mit der zusammengefügten Version überschreibt. Dieser Hinweis mag zwar banal klingen, doch mir ist dies schon oft genug passiert (in den meisten Fällen war die Datei nach dem Speichern noch offen, sodass ich das Missgeschick noch rückgängig machen konnte).