Neueste Meldungen
TutorialsBlenderMari

Blender Python: Einheiten und Objektpositionen in Architekturszenen anpassen

Dieser Leitfaden basiert auf der Python-API-Dokumentation von Blender und zeigt, wie sich Einheitensystem, Objektposition und aktueller Animationsframe per Code anpassen lassen. Die Beispiele sind auf Workflows für Architekturmodellierung und Visualisierung zugeschnitten.

Modernes Designstudio mit metrischen Messwerkzeugen und beleuchtetem ArchitekturmodellKI-Bild
Symbolbild, mit KI erzeugt.Bild: 3dsınıfı / FCA AI

Kurz gesagt

  1. Das Einheitensystem der Szene lässt sich über `unit_settings` in Scene auf METRIC setzen.
  2. Die Position eines Objekts kann über die Eigenschaft Object.location als Wert mit drei Koordinaten festgelegt werden.
  3. Die Methode Scene.frame_set() setzt den Szenenframe und aktualisiert Objekte sowie View-Layer.
  4. Die Blender-API-Dokumentation beschreibt die relevanten Eigenschaften für Skalierung, Einheitenanzeige und Objektverwaltung.

Was lernen Sie in diesem Leitfaden?

Bei der Architekturmodellierung und Visualisierung in Blender hilft es, wiederkehrende Szeneneinstellungen nicht jedes Mal manuell vorzunehmen, sondern bestimmte Vorgänge mit der Python-API zu skripten. So lassen sich dieselben Schritte in unterschiedlichen Dateien konsistent anwenden. In diesem Leitfaden stellen Sie das Einheitensystem der Szene auf METRIC, ändern die Position eines Objekts, erstellen ein einfaches Lichtobjekt und legen den Animationsframe fest. Die Beispiele basieren auf den Erläuterungen zu Scene, Object und UnitSettings in der offiziellen Blender-Python-API-Dokumentation.

Die Codebeispiele sind als kleine Ausgangspunkte gedacht, die Sie an Ihre Projektdateien anpassen können. Da sie die vorhandene Objektanordnung einer Szene verändern können, sollten Sie sie zunächst an einer Kopie ausprobieren. Die Beispiele setzen weder eine bestimmte Render-Engine noch ein Add-on oder ein Architekturmodellierungswerkzeug voraus.

Voraussetzungen

Sie benötigen Blender und Zugriff auf die Python-API. Als Referenz dienen aktuelle Seiten der Blender-API-Dokumentation; im vorliegenden Inhalt wird jedoch keine konkrete Blender-Versionsnummer genannt. Prüfen Sie daher vor dem Einsatz in einer Produktionsdatei anhand der API-Dokumentation Ihrer installierten Version, ob die Eigenschaften kompatibel sind. Für die Beispiele werden weder ein Konto noch eine kostenpflichtige Lizenz oder ein zusätzliches Add-on vorausgesetzt.

Führen Sie die Codeblöcke im Python-Kontext von Blender aus. Die Beispiele in der Dokumentation verwenden das Modul bpy und den aktiven View-Layer. Vergewissern Sie sich vor der Ausführung eines Befehls, dass die richtige Datei, Szene und der richtige View-Layer aktiv sind. Da das Beispiel zur Objektposition auf das erste Objekt der Szene zugreift, sollten Sie bei einer leeren Szene zunächst ein Objekt erstellen, statt den Code direkt auszuführen.

1. Einheitensystem der Szene festlegen

Die Scene-Daten enthalten neben Objekten auch Einstellungen zu Zeit und Rendering. Über die Eigenschaft unit_settings einer Szene lässt sich das Einheitensystem auswählen. Die API-Dokumentation führt für system die Optionen NONE, METRIC und IMPERIAL auf. Das folgende Beispiel stellt das aktive Einheitensystem auf metrisch:

python
import bpy

scene = bpy.context.scene
scene.unit_settings.system = 'METRIC'

Dieser Vorgang ändert nur die Systemeinstellung. Die Dokumentation beschreibt die Eigenschaft scale_length als Skalierung für die Umrechnung zwischen Blender-Einheiten und Abmessungen. Verwenden Sie diesen Wert während des gesamten Projekts bewusst und konsistent. Berücksichtigen Sie die Auswirkung der Einstellung, wenn Sie Maße von Modellen aus unterschiedlichen Dateien vergleichen. Da die Quelle für die Eigenschaft length_unit nur die Option DEFAULT aufführt, weisen wir hier keinen undokumentierten Wert zu.

Um die aktuellen Werte der Einheiteneinstellungen zu überprüfen, können Sie die Eigenschaften ausgeben:

python
import bpy

settings = bpy.context.scene.unit_settings
print(settings.system)
print(settings.scale_length)
print(settings.use_separate)

use_separate ist laut Dokumentation eine Eigenschaft, die festlegt, ob Einheiten paarweise angezeigt werden. Dieser Code liest die Werte aus, ändert aber keine Einstellungen. Vergleichen Sie die Ausgabe mit den Maßvorgaben Ihres Projekts, bevor Sie fortfahren.

2. Position eines Szenenobjekts ändern

location im Object-Datenblock steht für die Position eines Objekts mit drei Koordinaten. Der folgende Code weist dem ersten Objekt der Szene einen neuen Wert zu, sofern mindestens ein Objekt vorhanden ist:

python
import bpy

scene = bpy.context.scene
if len(scene.objects) > 0:
    obj = scene.objects[0]
    obj.location = (5.0, 5.0, 5.0)

Die Koordinaten im Beispiel entsprechen den Positionswerten aus dem grundlegenden Beispiel zur Objektbearbeitung in der API-Dokumentation. Ersetzen Sie die Zahlen für Ihr Modell durch die gewünschten Koordinaten. Da der Code das erste Objekt auswählt, sollten Sie vorab die Reihenfolge der Objekte in der Szene und die Identität des Zielobjekts überprüfen. In Projekten mit mehreren Objekten kann eine Zuweisung an das falsche Objekt die Modellanordnung beeinträchtigen.

Die Dokumentation definiert neben Position, Rotation und Skalierung des Objekts auch dessen Transformationsmatrix im World Space. Dieser Leitfaden beschränkt sich auf die grundlegende Eigenschaft location und berechnet keine Transformationen über Matrizen oder Parent-Beziehungen. Wenn die bestehende Hierarchie eines Architekturmodells erhalten bleiben muss, sollte die Positionsänderung im Zusammenhang mit den entsprechenden Parent- und Constraint-Einstellungen betrachtet werden.

3. Ein Lichtobjekt zur Szene hinzufügen

Das offizielle API-Beispiel zeigt, wie ein Lichtdatenblock erstellt, einem Objekt zugewiesen und zur Collection des aktiven View-Layers hinzugefügt wird. Das folgende Beispiel nutzt denselben grundlegenden Ablauf und ändert den Namen und die Position des Lichts:

python
import bpy

view_layer = bpy.context.view_layer
light_data = bpy.data.lights.new(name="Mimari Test Isigi", type='POINT')
light_object = bpy.data.objects.new(
    name="Mimari Test Isigi",
    object_data=light_data
)
view_layer.active_layer_collection.collection.objects.link(light_object)
light_object.location = (5.0, 5.0, 5.0)
light_object.select_set(True)
view_layer.objects.active = light_object

Die Reihenfolge ist wichtig: Zuerst wird der Lichtdatenblock erstellt, dann das Objekt, das diese Daten verwendet. Sobald das Objekt mit der aktiven Collection verknüpft ist, wird es in der Szene sichtbar. Die letzten Zeilen wählen das Objekt aus und machen es zum aktiven Objekt. Das Beispiel legt weder die Renderleistung des Lichts noch andere Beleuchtungsparameter fest und verspricht deshalb keine bestimmte Helligkeit oder ein bestimmtes Render-Ergebnis.

4. Den Animationsframe per Code festlegen

Die Eigenschaft frame_current in Scene gibt den aktuellen Frame an. Die API-Dokumentation empfiehlt die Methode frame_set(), damit Animationsdaten und View-Layer unmittelbar aktualisiert werden. Zum Beispiel:

python
import bpy

scene = bpy.context.scene
scene.frame_set(25)

Die Frame-Nummer dient hier als Beispiel und ändert nicht automatisch den Start- oder Endframe der Szene. In der Scene-Dokumentation sind frame_start und frame_end als separate Eigenschaften aufgeführt. Stellen Sie bei einer Szene mit Animation oder Kamerafahrt sicher, dass der gewünschte Frame innerhalb des Projektbereichs liegt und der gewünschte Objektzustand dort erreicht wird.

Was bringt das für Architektur- und Visualisierungs-Workflows?

Für Architektinnen und Architekten, Innenarchitektinnen und Innenarchitekten sowie Visual Artists können diese Beispiele als Grundlage dienen, um Aufgaben wie die Szenenvorbereitung, wiederkehrende Objektplatzierungen und die Kontrolle des Animationsframes per Code zu organisieren. Wenn ein Szenenstandard im Team weitergegeben wird, lässt sich leichter nachvollziehen, welche Eigenschaften geändert wurden, wenn Einstellungen wie das Einheitensystem ausdrücklich im Code stehen. Die Beispiele richten jedoch weder eine automatische Bemaßung noch einen Koordinatenabgleich zwischen Dateien oder Render-Einstellungen ein.

Die Quellen enthalten keine Angaben zu Hardwareanforderungen, Lizenzkosten oder bestimmten Add-ons. Erstellen Sie vor der Anwendung eine Sicherungskopie, prüfen Sie, ob die richtige Szene ausgeführt wird, und kontrollieren Sie die Kompatibilität anhand der API-Dokumentation Ihrer Blender-Installation. Beispiele, die von der Objekt-Reihenfolge abhängen, sollten Sie zunächst in einer kleinen Testszenendatei ausprobieren, statt sie direkt in einer großen Projektdatei auszuführen.

Häufige Fehler

  • Den Code zur Objektposition in einer leeren Szene ausführen: Ist kein erstes Objekt vorhanden, gibt es kein Ziel für die Positionszuweisung. Die Bedingung im Beispiel prüft diesen Fall.

  • Einheitensystem und Skalierungswert gleichsetzen: system und scale_length sind laut Dokumentation separate Eigenschaften. Eine Änderung der einen bedeutet nicht, dass die andere automatisch mitgeändert wird.

  • Das Verknüpfen des Objekts mit einer Collection vergessen: Im offiziellen Lichtbeispiel ist das Verknüpfen des neu erstellten Objekts mit der aktiven Collection Teil des Ablaufs, damit es zur aktuellen Szene gehört.

  • Den Frame-Bereich nicht prüfen: frame_set() legt den aktuellen Frame fest. Die Eigenschaften für den Start- und Endframe sind davon getrennt.

Nächste Schritte

Testen Sie zunächst den Code, der die Einheiteneinstellungen ausliest und überprüft. Führen Sie anschließend das Positionsbeispiel mit einem einzelnen Testobjekt aus. Prüfen Sie das Beispiel zur Lichterstellung in einer neuen Szene, bevor Sie es in eine vorhandene Projektdatei übernehmen. Legen Sie danach für Ihren eigenen Workflow das Zielobjekt, die Koordinaten und die Frame-Nummer eindeutig fest. Wenn Sie nach jeder Änderung die Szene und den erwarteten Objektzustand überprüfen, sinkt das Risiko, dass der Code auf das falsche Ziel angewendet wird.

Quelle und Lizenz

Dieser Leitfaden wurde anhand der Seiten zu Object, Scene und UnitSettings in der Blender-Python-API-Dokumentation ins Türkische übertragen und angepasst. Alle drei Quellen stehen unter der Lizenz CC BY-SA 4.0. Die grundlegende Verwendung der API und die Erläuterungen zu den Eigenschaften in den Codebeispielen basieren auf diesen Dokumenten.

Quellen

3 Quellen
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Object.html
Zusammenfassung
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Scene.html
Zusammenfassung
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.UnitSettings.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 liegt der eigentliche Wert dieser Beispiele darin, grundlegende Schritte der Szenenvorbereitung sichtbar und wiederholbar zu machen, bevor man sich an komplexere Automatisierungen wagt. Auch kleine Vorgänge wie das Einheitensystem, die Objektposition und die Auswahl des Frames können in eine Checkliste aufgenommen werden, wenn im Team ein gemeinsamer Dateistandard entsteht.

Der Leitfaden ist jedoch kein Automatisierungspaket für Projekte und löst weder die Umrechnung von Maßen noch die Einrichtung des Renderings vollständig. Da die Quellen keine Informationen zu Installations- oder Lizenzkosten enthalten, sollte kein Kostenvorteil angenommen werden. Büros sollten den Code mit ihrer eigenen Blender-Version und in einer Sicherungskopie testen und besonders auf die Objektauswahl und den Szenenmaßstab achten.

Häufige Fragen

Wie lässt sich das Einheitensystem einer Szene mit Blender Python auf METRIC setzen?

Weisen Sie der Eigenschaft `unit_settings.system` der aktiven Szene den Wert `'METRIC'` zu. Die API-Dokumentation führt `NONE`, `METRIC` und `IMPERIAL` als Optionen für Einheitensysteme auf.

Mit welcher Eigenschaft lässt sich die Position eines Objekts in Blender Python ändern?

Weisen Sie der Eigenschaft `location` im Object-Datenblock einen Wert mit drei Koordinaten zu. Prüfen Sie vorab, ob der Code auf das richtige Objekt zugreift.

Wie lässt sich ein Animationsframe mit Blender Python festlegen?

Mit der Methode `frame_set()` für Scene lässt sich der aktuelle Frame festlegen. Die Methode ändert nicht den Start- und Endframe-Bereich.

Kommentare und Forum sind auf Türkisch.Mitdiskutieren
+

Verwandte Meldungen