UV-Map inklusive Textur neu abbilden (Blender)

Im Artikel Verzerrungsarmes Texturieren einer Kugel in Blender habe ich ein Aufbringen einer Textur auf eine runde Oberfläche beschrieben. Nun stellt sich die Frage, wie sich eine solche Projektion nachträglich noch verändern lässt.

Bei der Aufteilung in zwei Halbkugeln und der Verwendung von Polarkoordinaten lässt sich die Textur mit nur zwei Inseln so abbilden, dass kaum Verzerrungen entstehen.
Ausganssituation: Kugelmesh mit verzerrungsarmer Projektion der Halbkugeln auf eine Textur.

Ziel: UV Remapping in ein anderes Layout

Anwendungsfall: Drucken und Aufkleben. Beim Ausdrucken der Kugelprojektion auf eine Transferfolie ist eine andere Projektion nötig, weil die Folie nicht so elastisch ist und beim Aufziehen auf die Kugel Falten werfen würde. In diesem Fall brauchen wir ausdrücklich Schnittkanten in der Projektion.

Ziel: Komplett andere UV-Projektion, aber mit dem selben Ergebnis.
Ziel: Komplett andere UV-Projektion, aber mit dem selben Ergebnis.

Die Projektion muss also inklusive der Textur umgerechnet werden. Der entscheidende Trick besteht dabei darin, einen zweiten UV-Koordinatensatz anzulegen, die Textur über ein Material aufzutragen und dann die Oberfläche mittels der neuen Koordinaten in eine separate Textur zu rendern (mittels „Bake“).

Blender Renderer

Diese Beschreibung bezieht sich auf die Einstellung Blender Render als Renderer. Mit Cycles ist das Prinzip das gleiche, Details unterscheiden sich.

Layout anpassen

Für eine bequeme Arbeitsansicht kann man im UV-Editing-Layout bleiben und dem rechten 3D-View-Bereich durch Ziehen der kleinen Rasterecke eine Properties-Ansicht hinzufügen.

Zur Arbeitserleichterung im UV-Editing den rechten Fensterbereich teilen und dort das Properties-Panel öffnen.

Zweite UV Map anlegen

Wähle die Kugel aus und schalte im Properties-Panel auf den Mesh-Bereich. Scrolle runter bis zum Abschnitt „UV Maps“ und füge dort mit Klick auf den +-Schalter eine zweite UV-Map ein. Wähle diese Map aus (blau markiert).

Anlegen einer zweiten UV-Map.
Anlegen einer zweiten UV-Map.

Saum neu definieren

Achte darauf, dass der Edit-Mode aktiv ist.
Markiere das gesamte Mesh (Taste A).

Öffne in der 3D-Ansicht ggf. das Seitenpanel (Taste T) und wähle dort den Befehl Clear Seam, so dass die rote „Gürtel“-Kante in der Objektmitte verschwindet.

Löschen der mittleren Kante in der neuen UV-Map.
Löschen der mittleren Kante in der neuen UV-Map.

Hinweis

Die Kantendefinitionen arbeiten auf Mesh-Ebene (nicht per UV-Map), d.h. sie sind nur einmal pro Mesh definierbar. Die gelöschte Kante ist also dauerhaft weg.

Wähle nun jede zweite oder dritte Kante vertikal auf der Kugel aus und markiere sie als Saum über den Mark Seam-Schalter.

Markieren von vertikalen Schnittkanten als Saum.
Markieren von vertikalen Schnittkanten als Saum.

Neue Projektion erstellen

Markiere das gesamte Mesh (Taste A) im Edit-Mode.

Wichtig: Stelle sicher, dass die neue UVMap.001 in der UV Maps-Liste markiert ist.

Zeige mit der Maus auf die 3D-Ansicht, öffne das Unwrap-Menü (Taste U) und führe den Befehl Unwrap aus, um die Projektion entlang der vertikalen Kanten zu generieren.

Zuweisen des zweiten UV-Mappings.
Zuweisen des zweiten UV-Mappings.

Kontrolle: Wenn alles richtig ist, dann verändert sich die Projektion im Image Viewer links, wenn Du in der UV Maps-Liste zwischen UVMap und UVMap.001 wechselst.

Umschalten zwischen den UV-Maps.
Umschalten zwischen den UV-Maps.

Material anlegen

Klicke im Image View auf das ×, um die Textur vom Modell zu lösen. Die Kugel erscheint weiß (wenn das Viewport Shading auf Textured steht).

Textur vom Mesh lösen.
Textur vom Mesh lösen.

Wechsle im Properties Panel zum Bereich Material und lege ein neues Material an.

Neues Blender Renderer-Material für die Kugel anlegen.
Neues Blender Renderer-Material für die Kugel anlegen.

Wechsle dann in den Texture-Tab und füge dort eine neue Image or Movie-Textur hinzu.

Klicke im Abschnitt Image auf das kleine Bildsymbol und wähle aus der Liste das bestehende Texturbild aus.

Scrolle runter bis zum Abschnitt Mapping und wähle im Feld Map die erste/alte UV-Textur, UVMap.

UV-Material anlegen.
UV-Material anlegen.

Kontrolle: Wenn Du jetzt das Viewport Shading auf Material oder Rendered stellst, sollte die Textur richtig auf dem Objekt erscheinen. Ob Edit- oder Object-Mode spielt aktiv ist, spielt dabei keine Rolle. Eventuell die Ansicht drehen oder die Lichtquelle verschieben, um Schatten auszuleuchten.

Rendered oder Material-Vorschau

Leeres Ziel für das Backen anlegen

Jetzt kommt der entscheidende Moment, das Umbiegen der Textur auf die neue Projektion. Dafür ist es wichtig, dass Du zunächst ein leeres Bild erstellst, in das die neue Version geschrieben wird:

Wähle im Edit-Mode das gesamte Mesh aus. Klicke im Image Viewer auf den +New-Schalter, um ein neues Bild anzulegen. Gib als Name Baked ein und setze die Breite (Width) und Höhe (Height) auf die Werte unserer vorherigen Textur, z.B. 1024px × 512px. Klicke dann auf Ok.

Anlegen eines neuen leeren Bildes.
Anlegen eines neuen leeren Bildes.

Achtung

Es ist sehr wichtig, dass das Mesh dieses neue Bild zugewiesen bekommt, ansonsten wird das Backen ggf. ein anderes Bild überschreiben oder fehlschlagen, weil versucht wird, das selbe Bild zu lesen und zu schreiben.

Textur backen

Wechsle im Properties Panel in den Render-Bereich und scrolle runter bis zum Abschnitt Bake. Schalte dort den Bake Mode auf Textures um.

Bake-Modus auf Textures setzen.
Bake-Modus auf Textures setzen.

Vergiss nicht, die Datei zu speichern.

Klicke auf den Schalter Bake. Blender rechnet jetzt die Texturinformation aus dem Material in das leere Bild des Meshs.

  • Weil wir in der Textur des Materials unter Mapping unsere erste UVMap angaben, wird die Textur wie zuvor auf die Objektoberfläche aufgebracht.
  • Weil wir im Data-Tab unter UV Maps aber die UVMap.001 markiert haben, werden diese Koordinaten zum Schreiben in das leere Bild genutzt.
  • Dadurch entsteht die Übersetzung von einem Koordinaten-Set in das andere.

Wenn alles geklappt hat, sollte das Bild „Baked“ nun die neue Texturabbildung enthalten. Wähle im View-Menü des Image View-Bereichs den Befehl Save As Image, um das Bild zu speichern.

Im Bake-Abschnitt findet sich eine Margin-Option. Diese sorgt dafür, dass ein Stück über den Rand der Projektion hinaus gezeichnet wird, was oft nützlich ist, um ausgefüllte Farben an den Rändern zu gewährleisten. Du kannst die Option ggf. auf 0 stellen, um den Überlauf komplett auszuschalten.

Speichern des fertigen Ergebnisses und ggf. Anpassen der Margin-Option.
Speichern des fertigen Ergebnisses und ggf. Anpassen der Margin-Option.

Zusammenfassung

Durch Nutzung einer zweiten UV-Map und der Bake-Funktion lässt sich eine UV-Abwicklung quasi rückwärts in eine andere Projektion überführen. Im Fall unserer Kugel ließe sich so ein druckbares Schnittmuster erzeugen, um die Textur auf ein reales Objekt zu kleben.

Dr. René Bühling

Hi, mein Name ist René und ich möchte Dir dabei helfen, deinen Traum vom eigenen Computerspiel Wirklichkeit werden zu lassen. Mein erstes kommerziell veröffentlichtes Spiel habe ich Mitte der 1990er Jahre als Hobby-Projekt mit einem Basic-Dialekt unter Windows entwickelt. Seither verfolge ich das Thema Spieleentwicklung in Hobby, Studium und Beruf. Ich habe über 20 Jahre Erfahrung in allen Phasen des Entwicklungsprozesses, die ich gerne mit dir teilen möchte.