In diesem Tutorial sehen wir uns an, wie man in Blender die Python Funktion zum Exportieren von UV Layouts verwendet, um die UV Maps oder Layouts aller im Scene vorhandenen MESH Objekte zu exportieren.


Die Videoversion dieses Tutorials ist derzeit in dieser Sprache nicht verfügbar. Das Video auf Englisch ist unter folgendem Link verfügbar:


Videotranskript

Hallo. In diesem Tutorial sehen wir uns an, wie man in Blender die Python Funktion zum Exportieren von UV Layouts verwendet, um die UV Maps oder Layouts aller im Scene vorhandenen MESH Objekte zu exportieren.

Dieses Skript kann hilfreich sein, wenn du UV Maps als Bilder bereitstellen musst, zum Beispiel beim Veröffentlichen deiner 3D Szene auf 3D Stock Websites.

Dieses Tutorial wurde mit Blender 3.3 erstellt. Manchmal nehmen die Blender Entwickler Änderungen an den Blender Python APIs vor, kurz BPY, aber dieses Skript sollte ab Version 3 funktionieren.

Die bpy.ops Funktion, die wir verwenden werden, ist ziemlich einfach. Sie benötigt nur zwei Parameter, nämlich den filepath des zu erstellenden Bildes und die UV Größe in Pixeln. Da wir sie jedoch für alle verfügbaren MESH Objekte in der Scene verwenden müssen, nutzen wir eine for Anweisung über die MESH Objekte.
Zusätzlich werde ich die Dateiendung angeben, die standardmäßig PNG ist.
Tatsächlich werde ich die Layouts als PNGs exportieren, aber ich möchte dir zeigen, wie man sie festlegt, da du die UV Layouts auch als SVG oder EPS Dateien exportieren kannst.
Okay, legen wir los.

Öffne eine BLEND Datei.
Du kannst auch mit einer brandneuen Datei beginnen, aber du musst sie irgendwo speichern, da wir die PNG Dateien im selben Ordner wie das Projekt ablegen werden.

Lass uns ein paar grundlegende Imports durchführen:

import bpy

from bpy import *

Wie bereits gesagt, benötigt die export_layout Funktion zwei Parameter, also definieren wir zwei Variablen. Wir könnten die Werte auch direkt in die Funktion schreiben, aber ich ziehe es aus Gründen der Übersichtlichkeit vor, sie hier zu definieren:

UVpath = bpy.path.abspath("//") + "UV-LAYOUT---"

UVsize = (2048, 2048)

Wie du sehen kannst, liefert „bpy.path.abspath“ den absoluten Pfad auf der Festplatte der BLEND Datei. Wir werden allen PNG Dateien ein Präfix hinzufügen, nämlich „UV-LAYOUT---“, aber du kannst dieses ändern oder entfernen.

Der Parameter UVsize ist ein Tuple aus zwei numerischen Werten, welche die Abmessungen der zu erstellenden Bilder in Pixeln darstellen.
Ich schreibe 2048 und erzeuge damit ein 2K Bild.

Um die Funktion auf alle im Scene verfügbaren MESH Objekte auszuführen, müssen wir eine for Anweisung erstellen. Wir können also schreiben:

for o in bpy.data.objects:

Dann können wir innerhalb des Blocks der for Anweisung, also vergiss nicht, den Text einzurücken, einen Filter auf den Objekttyp anwenden:

if(o.type=="MESH"):

Die Bedingung ist klar. Der Typ des aktuellen bpy.data.object muss MESH sein.

Die folgenden Anweisungen müssen innerhalb des if Blocks stehen, also vergiss auch hier nicht, den Text einzurücken:

bpy.ops.objects.select_all(action='DESELECT');

Das müssen wir jedes Mal tun, um alle anderen Objekte abzuwählen, da wir sonst ein Bild mit zwei oder mehr überlappenden UV Maps erhalten würden.

bpy.context.view_layer.objects.active = o

Diese Zuweisung setzt das aktive Objekt der Scene, indem das aktuelle Mesh context.view_layer.objects.active zugewiesen wird.
Wir müssen das tun, weil die folgende OPS, also die Blender Python Operation, auf dem einen und einzigen aktiven Objekt ausgeführt wird. Denke daran, du kannst mehrere Objekte auswählen, aber es gibt immer nur ein aktives Objekt zur selben Zeit.

bpy.ops.uv.export_layout(filepath = UVpath + o.name, size = UVsize, mode='PNG')

Diese ops Anweisung exportiert das Layout des aktiven Objekts in den angegebenen filepath, der aus der Variable UVpath mit dem Präfix „UV-LAYOUT---“ plus dem Namen des aktiven Objekts besteht, und mit der angegebenen Größe in Pixeln.

Wie ich dir zuvor gesagt habe, kannst du die UV Layouts als PNG, EPS oder SVG exportieren. Du kannst das Ausgabeformat mit dem Parameter mode festlegen, wie ich es gerade gezeigt habe.
Wenn wir uns den Ausgabeordner ansehen, können wir sehen, dass das Skript genauso viele Bilder erstellt hat, wie es Meshes gibt.

Da die Meshes in meinem 3D Modell „Desk set 3“ dasselbe Layout mit nicht überlappenden UV Islands teilen, kann ich alle Objekte zusammenfügen, das Skript erneut ausführen und nur eine einzige, nicht überlappende UV Layout Map des Assets erhalten.

Bevor wir dieses Tutorial abschließen, gebe ich dir eine Aufgabe. Bearbeite dieses Skript so, dass sowohl 2K als auch 4K UV Layouts der in deinen Scenes verfügbaren Meshes exportiert werden und die Bilder mit zwei unterschiedlichen Präfixen versehen werden, zum Beispiel „UV-2K---“ und „UV-4K---“.

Das ist alles für dieses Tutorial.
Bis bald.

🇺🇸 Sitemap - 🇮🇹 Sitemap - 🇪🇸 Mapa del sitio - 🇧🇷 Mapa do site - 🇫🇷 Plan du site - 🇩🇪 Sitemap - 🇷🇺 Карта сайта - 🇨🇳 网站地图 - 🇯🇵 サイトマップ - 🇰🇷 사이트맵


Diese Website dient ausschließlich der Präsentation einiger meiner Arbeiten und verfolgt keinerlei werbliche Absichten. Bitte beachten Sie, dass ich derzeit keine Anfragen für individuelle Auftragsarbeiten, Beratungsleistungen oder andere Formen beruflicher Zusammenarbeit suche oder beantworte.


ERWEITERTE DATENSCHUTZ- UND COOKIE-VERWENDUNGSRICHTLINIEN