CGExercises

Exercise #03

Computergraphik Übungsblatt #03


Blender Tutorial: Shading & Rigging



Modellieren mit Blender Teil #2


Aufgabe 3.1: Shading - Materialien und Texturkoordinaten

TeilVideoThema
Blender 3.1YTShading - Materialien und Texturkoordinaten

Das Shading in Blender beinhaltet zwei Hauptkomponenten: Materialien und Texturen. In Cycles und Eevee werden Materialien über ein Node-System definiert. Für Texturen werden Texturkoordinaten benötigt. Bitte texturieren Sie den Standardwürfel in Blender, indem Sie Schnittkanten (UV Seams: STRG + E, Mark Seam) zum Auffalten (UV Unwrapping: u, unwrap) definieren anhand derer jeder 3D Punkt möglichst verzerrungsfrei auf einer 2D Ebene ausgelegt werden kann. Anschließend definieren Sie ein neues Material für den Würfel und verbinden Texture Coordinate, Image Texture, Diffuse BSDF und Material Output Node sinnvoll miteinander.

Aufgabe 3.2 (Optional, Bonuspunkte, ++):

UV Unwrappen Sie Ihren Haifisch. Die UV Seams zu setzen ist hier deutlich aufwendiger, das Prinzip ist jedoch gleich.

Aufgabe 3.3: Rigging - Bonehierarchien

TeilVideoThema
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 den Haifisch, welches die Deformation von Vorder- und Hinterteil des Haifisches vereinfacht. Sorgen Sie für genügend Gelenke zum Animieren. Wenden Sie dazu zunächst den Mirror Modifier an und definieren Sie das Haifisch-Mesh als Kind der Amature (STRG + P im Object mode). 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.4 (Optional, Bonuspunkte, ++):

Erweitern Sie das Rig indem Sie auch für die Flossen jeweils eigene Bones erstellen


OpenGL: Erstes eigenes Programm


TeilVideoThema
OpenGL 3.5 & 3.6YTWorking with qt_template

Aufgabe 3.5: 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 #1 installiert haben.

Übersetzen Sie die Programmiervorlage und starten Sie sie:

cmake . && make && ./qt_template

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

  1. Zeichnen Sie eine einzelne Linie, wie in der Vorlage bereits vorgeschlagen.
  2. Zeichnen Sie eine weitere Linie, so dass es ein Kreuz ergibt.
  3. Ändern Sie die Hintergrundfarbe auf Himmelblau.
  4. Entlang welcher Achse schaut der Betrachter?
  5. Welche zwei Achsen definieren die Bildebene?

Aufgabe 3.6: 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.


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. Welches Welt-Koordinatensystem verwendet Blender im Gegensatz zu OpenGL? Welches Koordinatensystem wird für Texturen verwendet?
    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).

3. 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 sah diese Matrix aus? 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.

Options: