CGExercises

CG Exercise #03

Computergraphik Übungsblatt #03


Blender Tutorial: Shading & Rigging



Animieren mit Blender (Blender Teil #2)


Aufgabe 3.1: Rigging - Bone-Hierarchien

TeilVideos des WS 2021/22Thema
Blender 3.1YTShading - Materialien und Texturkoordinaten
Blender 3.3YTRigging - Bonehierarchien

Hierarchische Beziehungen zwischen Objekten herzustellen ist essentiell wichtig für die Vereinfachung einer Animation von Objekten. Bitte erstellen Sie ein Knochengerüst (Rig, Armature) für eines der modellierten Objekte, welches die Deformation der einzelnen Meshbereiche vereinfacht.

Mit dem “Skin” Modifier können Sie recht einfach 3D-Strichfiguren erstellen. Gleichzeitig ermöglicht dieser die Ableitung eines Rigs per Knopfdruck. Wenden Sie dazu jedoch ggf. den Mirror Modifier an. Wenn Sie ein komplett neues Rig (Armature) erstellen, dann müssen Sie das zu animierende Mesh als Kind der Amature (STRG + P im Object mode) zuweisen. Sorgen Sie für genügend Gelenke zum Animieren. Lassen Sie Blender automatisch das aufwendige Skinning durchführen, indem für jeden Bone die zugehörigen Vertices (Vertex Groups) ermittelt und zugewiesen werden (Armature Deform - With Automatic Weights).

Aufgabe 3.2: Animation - Objectmode und Posemode

TeilVideos des WS 2021/22Thema
Blender 4.6: AnimationYTAnimation und F-Curve-Modifier

Animieren Sie bitte das Rig für eines Ihrer Objekte aus der vorherigen Übung. Für die allgemeine, rigide Objektbewegung können Sie die Armature im Object mode über Keyframes animieren.

Um feinere Deformationen (z.B. Veränderung der Extremitäten) zu animieren, erstellen Sie entsprechend Keyframes im Posemode der Armature.

Denken Sie auch an die Animation der Kamera! Das funktioniert genauso wie die Animation des Rigs im Object mode mithilfe von Keyframes. Schaffen Sie es eine kleine Geschichte mit einfachen Bewegungen zu erzählen?

Aufgabe 3.3: Rendering - Die Animation als Videodatei ausspielen

TeilVideos des WS 2021/22Thema
Blender 4.8: Videoschnitt und RenderingYTGerenderte Bildsequenz zu Video zusammenfügen und als Videodatei ausspielen

Bitte rendern Sie die Animation unter Verwendung von Globaler Beleuchtung mithilfe von der Cycles Renderengine. Beachten Sie bitte hierbei, dass Ihre Kamera über die gesamte Animation hinweg das wichtige Geschehen zeigen sollte und dass das Rendern lange dauern kann… .

Um bei etwaigen Abstürzen die Arbeit nicht zu verlieren, rendern Sie die Animation zunächst als Bildsequenz (z.B. .jpg) und fügen diese in Blender wieder zu einem Film zusammen, den Sie dann als Videodatei (z.B. .mp4) ausgeben.

Wenn sie bis hierher gekommen sind, haben Sie die Grundlagen in Blender erlernt und gleichzeitig Ihren ersten Kurzfilm erstellt. Herzlichen Glückwunsch!


OpenGL: Erstes eigenes Programm


TeilVideos des WS 2021/22Thema
OpenGL 3.5 & 3.6YTArbeiten mit qt_template

Aufgabe 3.4: Linien zeichnen (CMake)


Linien mit OpenGL

Öffnen Sie ein Terminal Fenster und navigieren Sie in das “qt_template” Verzeichnis des glVertex Frameworks, welches Sie in Übung #01 installiert haben.

Übersetzen Sie die Programmiervorlage und starten Sie sie:

cmake . && make && ./qt_template

Sie sollten nun ein (fast) leeres Fenster sehen. Dies ist der Startpunkt für die ersten OpenGL Befehle im ersten eigenen OpenGL Programm:

  1. Verwenden Sie einen Plain-Text-Editor wie den Emacs o.ä., um das Programm qt_template.cpp zu verändern.
  2. Zeichnen Sie eine einzelne Linie, wie in der Vorlage bereits als Kommentar vorgeschlagen.
  3. Zeichnen Sie eine weitere Linie, so dass ein Kreuz entsteht.
  4. Ändern Sie die Hintergrundfarbe auf Himmelblau.
  5. Entlang welcher Achse schaut der Betrachter?
  6. Welche zwei Achsen definieren die Bildebene?

Materialien:

Aufgabe 3.5: Dreiecke zeichnen (Qt Creator)


Dreiecke mit OpenGL

Öffnen Sie nun dasselbe Programm nicht vom Terminal aus, sondern mit Hilfe von QtCreator. Dazu doppel-klicken Sie auf die .pro-Datei im Verzeichnis “qt_template”. Führen Sie das Programm nun in QtCreator aus, indem Sie auf den grünen Pfeil klicken.

Sie sollten nun dieselbe Darstellung wie in der vorhergehenden Aufgabe sehen, und können weitere OpenGL Befehle hinzufügen:

  1. Zeichnen Sie wie in der Vorlesung ein weißes Dreieck.
  2. Zeichnen Sie wie in der Vorlesung ein farbiges Dreieck mit unterschiedlichen Farb-Attributen für jeden Vertex.
  3. Zeichnen Sie ein weiteres Dreieck, welches sich mit dem ersten schneidet.

Hinweis: QtCreator ist die empfohlene Entwicklungsumgebung für Linux, im Notfall kann man aber auch auf die Kommandozeile (via CMake & Emacs) wie in der vorherigen Aufgabe ausweichen.


Hausaufgaben bis zum vierten Praktikum


1. Blender:

  1. Texturierung:
    1. Erklären Sie bitte, wie es funktioniert, dass zweidimensionale Bilder auf dreidimensionalen Objekten dargestellt werden können. Welche zwei Dinge benötigt man unbedingt, damit dies funktioniert?
    2. Was ist der Unterschied zwischen Welt-, Objekt- und Texturkoordinaten? Welches konkrete kartesische Welt-Koordinatensystem verwendet Blender im Gegensatz zu OpenGL? Das heißt, wie sind die Achsen der Koordinatensysteme orientiert?
    3. In folgendem Bild ist die Zuordnung von 3D Raum zum 2D Bildraum gegeben (Zahlen 1 bis 6). Beschreiben Sie bitte welche Formen jeweils auf den Flächen A und B zu sehen sind, wenn in Blender die Materialien richtig definiert und dargestellt werden.
  2. Blender-Projekt
    Bereiten Sie als Blender-Team eine Folie vor, auf der Sie Ihr Blender-Projekt und Ihr Team kurz beschreiben! Laden Sie diese Folie ins Protokoll-Uploadverzeichnis hoch (Format: BlenderProject-XYZ.pdf).

2. OpenGL / Matrizen:

  1. Rotation und Translation:
    In der Vorlesung haben wir beispielhaft mit einer Transformationsmatrix einen 3D Vektor transformiert. Die Transformation bestand aus einer Rotation und einer nachfolgenden Translation.
    1. Wie sieht diese Matrix aus? Aus welchen Teilmatrizen ist diese aufgebaut? Erklären Sie die Bestandteile der Matrix!
    2. Wie sieht die Matrix und der transformierte Vektor aus, wenn in umgekehrter Reihenfolge transformiert wird, d.h. wenn erst transliert und dann rotiert wird?
  2. Matrizenmultiplikation:
    Die Rotation um einen Punkt ist eine aus drei Teil-Transformationen zusammengesetzte Transformation. Berechnen Sie - wie in der Vorlesung - im zwei-dimensionalen Raum mit homogenen Koordinaten die Rotation des Punktes P mit den Koordinaten (4, 1) um 90 Grad im Uhrzeigersinn um den Punkt A mit den Koordinaten (2, 2).
    1. Stellen Sie dafür die 3 Teil-Transformationsmatrizen auf.
    2. Um welchen Punkt wird bei der lokalen Transformationsmatrix rotiert?
    3. In welcher Reihenfolge müssen die obigen Matrizen multipliziert werden? Was passiert bei umgekehrter Reihenfolge?
    4. Berechnen Sie durch Matrixmultiplikation die 3×3 Matrix, mit der die gesamte Transformation durchgeführt wird.
    5. Anschließend transformieren Sie den Punkt P, und überprüfen zeichnerisch, ob das Ergebnis stimmt.
  3. Animation:
    Angenommen die Framerate sei in fps gegeben. Berechnen Sie die Zeitdauer $\Delta t$ zwischen zwei Frames. Weiterhin sei eine Winkelgeschwindigkeit $\omega$ gegeben. Berechnen Sie den Winkel $\Delta\alpha$, um den in jedem Frame gedreht werden muss, um ein Objekt mit der Winkelgeschwindigkeit $\omega$ zu animieren. Berechnen Sie die Formel für den Winkel $\Delta\alpha$ in Abhängigkeit von $\omega$.

Options: