Neueste Meldungen
TutorialsBlender

Blender Python API: Collections organisieren und rendern

Die Blender-Python-API bietet Werkzeuge, um Collections und Unter-Collections zu organisieren, Sichtbarkeit und Line-Art-Einstellungen zu steuern und Renderings auszuführen. Dieser Leitfaden erläutert die grundlegenden Schritte für Architekturszenen anhand von Beispielen.

Modernes Interieur mit Architekturmodell, das an ordentlich organisierte Modellgruppen erinnertKI-Bild
Symbolbild, mit KI erzeugt.Bild: 3dsınıfı / FCA AI

Kurz gesagt

  1. Mit der Collection-Struktur lassen sich Objekte und Unter-Collections gemeinsam organisieren.
  2. Die Sichtbarkeit einer Collection im Viewport und beim Rendern wird über separate Eigenschaften gesteuert.
  3. Die Dokumentation beschreibt Collection-Optionen für Line Art, mit denen sich Einbeziehung, Ausschluss und Schnittverhalten festlegen lassen.
  4. Die Render-API umfasst das Erfassen des aktiven Viewports und das Starten eines Szenen-Renderings.

Was erfahren Sie in diesem Leitfaden?

Je größer Blender-Szenen werden, desto schwieriger kann es sein, Architekturmodelle, Möbel, Beleuchtung und Umgebungselemente übersichtlich zu halten und den Überblick darüber zu behalten, welche Teile sichtbar oder in der Ausgabe enthalten sind. Die Collection-Struktur der Blender-Python-API hilft dabei, Objekte mit Gruppen und Unter-Collections hierarchisch zu organisieren. In diesem Leitfaden zeigen wir Schritt für Schritt, wie Sie Collections erstellen und mit der Szene verknüpfen, ihre Sichtbarkeit einstellen, die Line-Art-Optionen kennenlernen und Render-Operatoren verwenden.

Die Beispiele basieren auf Eigenschaften und Vorgängen, die in der aktuellen Blender-API-Dokumentation aufgeführt sind. Da die Dokumentation keine konkrete Blender-Versionsnummer nennt, sollten Sie die Beispiele vor der Verwendung in Ihrer aktuellen Arbeitsumgebung testen. Passen Sie die Collection-Namen und die Szenenstruktur im Code an Ihr Projekt an.

Voraussetzungen

  • Sie benötigen Blender und Zugriff auf die Python-API. Als Quelle dient die aktuelle Blender-API-Dokumentation; eine konkrete Versionsnummer wird nicht angegeben.

  • In den Quellen werden keine Konto- oder Abonnementbedingungen erwähnt. Die Dokumentation enthält auch keine Angaben zu den Hardwareanforderungen für Blender oder zur Renderdauer.

  • Die Beispiele greifen auf Collections und Objekte in der Szene zu. Es empfiehlt sich, vor der Ausführung eine Kopie wichtiger Projektdateien aufzubewahren und den Code zunächst in einer kleinen Testszenen auszuprobieren.

Schritt für Schritt: Szene mit Collections organisieren

1. Eine neue Collection erstellen und mit der Szene verknüpfen

Der folgende Code erstellt eine neue Collection und verknüpft sie mit der Haupt-Collection der aktiven Szene. Die Blender-API-Dokumentation führt das Erstellen von Collections und das Verknüpfen von Unter-Collections auf. Der Name „Mobilya“ im Beispiel steht für eine Collection, mit der sich Möbelobjekte in einem Innenraumprojekt gruppieren lassen.

python
collection = bpy.data.collections.new("Mobilya")
bpy.context.scene.collection.children.link(collection)

Mit dem Erstellen einer Collection werden die Objekte in der Szene nicht automatisch in diese Gruppe verschoben. Die Objektzugehörigkeit muss separat verwaltet werden. Die Eigenschaft objects einer Collection umfasst die Objekte, die direkt in dieser Collection liegen; all_objects schließt auch Objekte in Unter-Collections ein. Dieser Unterschied hilft dabei, den Gesamtinhalt in Szenen mit Haupt- und Unter-Collections korrekt einzuschätzen.

2. Mit Unter-Collections eine Hierarchie aufbauen

In einer Archviz-Datei kann unter einer übergeordneten Collection „İç Mekân“ eine Struktur mit Gruppen wie Möbeln und Beleuchtung angelegt werden. In der Blender-API-Dokumentation ist children als Eigenschaft für direkte Unter-Collections beschrieben, children_recursive listet dagegen alle Unter-Collections auf. Legen Sie bei der Untersuchung der Hierarchie fest, welche Ebene Sie benötigen.

Die Eigenschaft all_objects umfasst Objekte in der Collection und ihren Unter-Collections und ist schreibgeschützt. Inhalte sollten daher nicht über diese Eigenschaft, sondern über Vorgänge mit Collection-Objekten und Unter-Collections organisiert werden. Außerdem weist die Dokumentation darauf hin, dass das Erstellen der Liste children_recursive abhängig von der Anzahl der Unter-Collections Zeit benötigt. Berücksichtigen Sie das bei der Arbeit mit tief verschachtelten Hierarchien.

3. Sichtbarkeit im Viewport und beim Rendern getrennt steuern

Mit hide_viewport wird eine Collection im Viewport deaktiviert, während hide_render sie beim Rendern deaktiviert. Die beiden Einstellungen sind nicht austauschbar. Soll eine Gruppe beispielsweise in der Arbeitsansicht verborgen, im Render aber sichtbar bleiben, können Sie die Werte wie folgt getrennt festlegen:

python
collection.hide_viewport = True
collection.hide_render = False

In diesem Beispiel wird die Collection im Viewport ausgeblendet, beim Rendern jedoch nicht deaktiviert. Ändern Sie die Werte je nach Bedarf. Es reicht nicht aus, das Ergebnis nur an einer Stelle zu prüfen: Kontrollieren Sie Viewport und Render-Ausgabe getrennt.

4. Das Line-Art-Verhalten auf Collection-Ebene festlegen

Die Blender-Dokumentation bietet Optionen, mit denen sich festlegen lässt, wie Collections bei der Line-Art-Berechnung behandelt werden. Zu den Modi gehören INCLUDE, OCCLUSION_ONLY, EXCLUDE, INTERSECTION_ONLY, NO_INTERSECTION und FORCE_INTERSECTION. Die Optionen stehen für unterschiedliche Verhaltensweisen, etwa das Erzeugen von Linien aus einer Collection, das Erzeugen von Okklusionen ohne Linien, den Ausschluss von der Berechnung oder die Behandlung von Schnittlinien.

Im folgenden Beispiel wird für die Collection ein Modus gewählt, der ausschließlich Okklusionen erzeugt:

python
collection.lineart_usage = 'OCCLUSION_ONLY'

Für zusätzliche Steuerungsmöglichkeiten bei Schnittpunkten führt die Dokumentation auch die Eigenschaften lineart_use_intersection_mask und use_lineart_intersection_priority auf. Die Schnittpriorität lässt sich mit lineart_intersection_priority festlegen; laut API-Dokumentation liegt der Wertebereich zwischen 0 und 255. Nutzen Sie diese Optionen, wenn die Szene mit Line Art arbeitet und das gewünschte Verhalten klar definiert ist.

Ein Bild aus dem aktiven Viewport aufnehmen und rendern

Der Operator bpy.ops.render.opengl ist in der Dokumentation dafür vorgesehen, ein Bild aus dem aktiven Viewport aufzunehmen. Mit der Option write_still wird das Bild bei deaktivierter Animation im Ausgabepfad gespeichert:

python
bpy.ops.render.opengl(write_still=True)

Dieser Vorgang ist nicht dasselbe wie ein allgemeines Szenen-Rendering. Der in der API als bpy.ops.render.render aufgeführte Operator kann verwendet werden, um ein Szenen-Rendering zu starten. Das Beispiel zeigt die Option zum Speichern eines einzelnen Bildes:

python
bpy.ops.render.render(write_still=True)

Zu den dokumentierten Parametern des Render-Operators gehören Animation, die Verwendung des Viewports, die Szenenauswahl sowie Start- und Endbild für Animationen. Optionen für den Bildbereich sind für Animations-Renderings vorgesehen. Die API-Seite beschreibt diese Vorgänge und Parameter, legt jedoch nicht alle für ein Projekt erforderlichen Ausgabeeinstellungen fest. Prüfen Sie vor dem Rendern die Einstellungen Ihrer Szene.

Häufige Fehler

  • Viewport- und Render-Einstellungen gleichsetzen: hide_viewport und hide_render sind unterschiedliche Eigenschaften. Prüfen Sie die gewünschte Sichtbarkeit an beiden Stellen.

  • Unter-Collections übersehen: objects zeigt direkte Mitglieder an. Berücksichtigen Sie den Umfang von all_objects, wenn Unter-Collections ebenfalls einbezogen werden sollen.

  • Den Line-Art-Modus beliebig auswählen: Die Optionen definieren unterschiedliche Linien- und Schnittverhalten. Wählen Sie den Modus passend zum gewünschten Ergebnis und prüfen Sie ihn in einer kleinen Testszenen.

  • Eine Viewport-Aufnahme für ein Szenen-Rendering halten: bpy.ops.render.opengl nimmt den aktiven Viewport auf; für ein allgemeines Rendering gibt es einen separaten Operator.

  • Nicht dokumentiertes Verhalten voraussetzen: Die Quellen erläutern keine bestimmten Projekteinstellungen, Rendergeschwindigkeiten oder Hardwareanforderungen. Testen Sie solche Details mit Ihrer eigenen Szene und Arbeitsumgebung.

Auswirkungen auf Architektur- und Visualisierungs-Workflows

Architekturbüros und Visualisierungsteams können Modelle, Möbel, Beleuchtung und Umgebungselemente mithilfe von Collections gruppieren und so eine übersichtlichere Szenenhierarchie aufbauen. Werden die Sichtbarkeit im Viewport und beim Rendern getrennt verwaltet, lassen sich während der Arbeit nicht benötigte Elemente ausblenden, während die Ausgabe andere Inhalte zeigt. Bei zeichnungsorientierten Präsentationen mit Line Art können die Modi auf Collection-Ebene zudem festlegen, wie Gruppen in die Linienberechnung einbezogen werden.

Diese API-Dokumentation gibt keine Garantie für die Kompatibilität mit bestimmten Add-ons, Hardwarekonfigurationen oder Blender-Versionen. Bevor Sie Automatisierungen für gemeinsam genutzte Bürodateien einrichten, testen Sie den Code in der verwendeten Blender-Umgebung und mit einer kleinen Testdatei. Beachten Sie außerdem die Lizenzbedingungen CC BY-SA 4.0 der Quelldokumentation; diese Lizenz gilt für die Verwendung der Dokumentationsinhalte.

Nächste Schritte

Erstellen Sie zunächst in einer kleinen Testszenen eine Collection-Hierarchie und vergleichen Sie die Ergebnisse, wenn Sie die Einstellungen für Viewport und Render getrennt ändern. Wird Line Art verwendet, wählen Sie anschließend einen passenden Modus und prüfen Sie die Linien in der Ausgabe. Kontrollieren Sie die Ausgabeeinstellungen der Szene, bevor Sie zu den Render-Operatoren übergehen. Die API-Dokumentation führt außerdem Vorgänge zum Erstellen und Löschen eines Cycles-Textur-Caches auf; diese sind separate Operatoren und gehören nicht zum Organisieren von Collections oder zum grundlegenden Render-Workflow.

Quelle und Lizenz

Dieser Leitfaden wurde anhand der Dokumentation der Blender-Python-API zu Collection und den Render-Operatoren ins Türkische übertragen und lokalisiert. Beide Quellen stehen unter der Lizenz CC BY-SA 4.0.

Quellen

2 Quellen
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Collection.html
Zusammenfassung
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.ops.render.html
Zusammenfassung

Quelltexte werden nicht neu veröffentlicht; kurze Zitate sind gekennzeichnet, der Rest ist eigene Zusammenfassung und Einordnung.

Die Einschätzung von 3dsınıfı
3dEinschätzung der Redaktion

Für Architekturbüros und Visualisierungsteams in der Türkei kann die Verwaltung von Collections über die API dazu beitragen, wiederkehrende Aufgaben bei der Szenenorganisation konsistenter zu erledigen. Insbesondere die getrennte Gruppierung von Modellen, Möbeln und Umgebungselementen kann es erleichtern, die Dateihierarchie im Blick zu behalten.

Die Dokumentation gibt jedoch keine Garantie zu Leistung, Hardwareanforderungen oder Kompatibilität mit einer bestimmten Blender-Version. Es ist wichtig, die Automatisierung zunächst in einem kleinen Beispiel auszuprobieren und in der verwendeten Arbeitsumgebung zu überprüfen. Die Quelldokumentation steht unter CC BY-SA 4.0; zu möglichen Kosten enthält sie keine Angaben.

Häufige Fragen

Wie blende ich eine Collection in Blender beim Rendern aus?

Aktivieren Sie die Eigenschaft `hide_render` der Collection. `hide_viewport` steuert unabhängig davon die Sichtbarkeit im Viewport.

Kann ich mit der Blender-Python-API ein Bild des aktiven Viewports aufnehmen?

Ja. In der API-Dokumentation ist `bpy.ops.render.opengl` als Operator zum Aufnehmen des aktiven Viewports beschrieben. Mit der Option `write_still` kann das Bild bei deaktivierter Animation im Ausgabepfad gespeichert werden.

Welche Optionen gibt es für Line Art in Blender-Collections?

Dokumentiert sind die Modi `INCLUDE`, `OCCLUSION_ONLY`, `EXCLUDE`, `INTERSECTION_ONLY`, `NO_INTERSECTION` und `FORCE_INTERSECTION`.

Kommentare und Forum sind auf Türkisch.Mitdiskutieren
+

Verwandte Meldungen