Computergrafik

Godot Transformationen

Godot Game Engine | | Rasterisierung

Die Szenen-Struktur von Godot soll in erster Linie die mit einander interagierenden Spielcharaktere beschreiben. Alle Objekte der Szene lassen sich auĂźerdem mit Hilfe der Godot Physics Engine animieren, d.h. Position und Rotation wird durch die physikalischen Eigenschaften implizit bestimmt.

In 2D lässt sich die Position eines Knotens manuell festlegen, indem die Methode set_position(x, y) aufgerufen wird. In 3D gibt es keine Position, sondern man verwendet den Knotentyp Node3D. Dieser Klasse besitzt eine sog. Transform, die ähnlich wie in Blender implizit die Transformationsmatrix bestimmt:

  • origin: der Ursprung $\vec{o}$ des lokalen Koordinatensystems (aka translation)
  • basis: die drei Vektoren $\vec{v_1}$, $\vec{v_2}$, $\vec{v_3}$, welche die Basis des lokalen Koordinatensystems darstellen (aka rotation)

Wie wir bereits ahnen, ist die lokale Transformationsmatrix fĂĽr einen solchen Knoten dann wie folgt:

$ M = \left( \begin{array}{c c c c} \left(\begin{array}{c} \\ v_1 \\ ~\end{array}\right) & \left(\begin{array}{c} \\ v_2 \\ ~\end{array}\right) & \left(\begin{array}{c} \\ v_3 \\ ~\end{array}\right) & \left(\begin{array}{c} \\ o \\ ~\end{array}\right) \\ 0 & 0 & 0 & 1 \end{array} \right) $

Die Szenenbeschreibung ist daher nicht wie bei einem klassischen Szenegraph primär für den Aufbau der Graphik zuständig. Es wird vielmehr angenommen, dass die Objekte der Szene als Mesh vorliegen bzw. als Asset geladen werden können und dann an einen Ort transformiert werden. Ebenfalls können Effekte in Form von Shadern bestimmten Knoten hinzugefügt werden.

Sich verändernde Teile wie Arme und Beine können als Unterknoten realisiert werden. Hier wird es dann hierarchisch. Jede Szene ist zwar nur ein Baum, da aber jede Szene beliebig oft in anderen Szenen wiederverwendet werden kann, ergibt die Gesamtheit der Szenen einen Szenen-Graphen. Voila!

Ähnliche Konzepte werden auch z.B in der Unreal- und der Unity Engine verwendet. Darauf soll hier aber nicht näher eingegangen werden.

Literatur:

Live Demo: Physik (%)

Godot Game Engine | | Rasterisierung

Options: