Computergrafik

Blender Transformationen

Blender Szenengraph | | Blender Depsgraph

Zur Beschreibung der Position aller Objekte in der Szene besitzt jedes Objekt als Attribut die globale Transformations Matrix matrix_world. Diese wird benutzt, um die Vertices des Objekts in Welt-Koordinaten zu transformieren (siehe auch unter Python Scripting).

Diese Matrix berechnet sich aus der Hintereinanderschaltung der lokalen Transformationen des jeweiligen Objekte und deren Elternteile. Nach jeder Veränderung der lokalen Transformation eines Objektes wird die globale Transformationsmatrix neu berechnet. Die Szene wird dann neu gerendert, indem der Reihe nach jedes Objekt mit der globalen Transformationmatrix (und von da in Augen-Koordinaten) transformiert wird. Dies geschieht durch Verwendung des Iterator-Prinzips für die zugrundeliegende Listenstruktur.

Die lokale Transformation eines Objekts wird in Blender nicht in Form einer affinen Transformationsmatrix sondern über drei hintereinanderfolgende lokale Objektmodifikationen in Form der folgenden Attribute repräsentiert:

Die lokale Transformationsmatrix eines Objektes matrix_local berechnet sich implizit aus den drei obigen Attributen. Daraus berechnet sich wiederum die globale Transformationsmatrix M, indem man in der Hierarchie aufsteigt:

import bpy
from mathutils import Matrix

ob = bpy.context.object

M = ob.matrix_local
while ob.parent:
    ob = ob.parent
    M = ob.matrix_local @ M

print(M)


Blender Szenengraph | | Blender Depsgraph

Options: