Computer Graphics - Exam.pdf

Computer Graphics - Exam
Computer Graphics - Exam Aufgabe 1) Raytracing und Rasterization sind zwei grundlegende Render-Techniken in der Computergrafik: Raytracing simuliert Lichtstrahlen um realistische Bilder zu erzeugen, während Rasterization Objekte als Raster- oder Pixelbilder darstellt. Raytracing Berechnung: verfolgt Lichtstrahlen vom Betrachter durch jeden Pixel in einer Szene und simuliert Interaktionen mit Objek...

© StudySmarter 2024, all rights reserved.

Computer Graphics - Exam

Aufgabe 1)

Raytracing und Rasterization sind zwei grundlegende Render-Techniken in der Computergrafik: Raytracing simuliert Lichtstrahlen um realistische Bilder zu erzeugen, während Rasterization Objekte als Raster- oder Pixelbilder darstellt.

  • Raytracing Berechnung: verfolgt Lichtstrahlen vom Betrachter durch jeden Pixel in einer Szene und simuliert Interaktionen mit Objekten.
  • Vorteile Raytracing: realistische Darstellung von Reflexionen, Brechungen und Schatten.
  • Nachteile Raytracing: hohe Rechenleistung und langsame Berechnung.
  • Rasterization Berechnung: wandelt geometrische Modelle in Pixel um, die auf dem Bildschirm gezeichnet werden.
  • Vorteile Rasterization: schnelle Berechnung und weit verbreitet in Echtzeit-Anwendungen wie Spielen.
  • Nachteile Rasterization: weniger realistische Reflexionen und Schatten im Vergleich zu Raytracing.

a)

Erläutere den Unterschied zwischen der Raytracing- und der Rasterization-Technik in Bezug auf die Berechnung von Licht und Schatten in einer 3D-Szene. Gehe dabei auf die jeweiligen Vor- und Nachteile der beiden Methoden ein.

Lösung:

Unterschiede zwischen Raytracing und Rasterization in Bezug auf die Berechnung von Licht und Schatten in einer 3D-Szene:

  • Raytracing Berechnung:
    • Die Raytracing-Technik verfolgt Lichtstrahlen vom Betrachter aus durch jeden Pixel in einer Szene und simuliert Lichtinteraktionen mit Objekten.
    • Diese Methode ermöglicht eine realistische Darstellung von Reflexionen, Brechungen und Schatten. Lichtstrahlen brechen und reflektieren an Oberflächen und erzeugen dadurch lebensechte Effekte.
    • Durch die genaue Simulation der Lichtausbreitung in einer Szene entstehen natürliche Schatten, die bei Lichtquellenabdeckung genau berechnet werden.
    • Vorteile:
      • Realistische Darstellung von Licht- und Schatteneffekten.
      • Realistische Reflexionen und Brechungen.
    • Nachteile:
      • Hohe Rechenleistung notwendig.
      • Längere Berechnungszeiten im Vergleich zu Rasterization.
  • Rasterization Berechnung:
    • Die Rasterization-Technik wandelt geometrische Modelle in Raster- oder Pixelbilder um, die auf dem Bildschirm gezeichnet werden.
    • Das Licht und die Schatten werden durch einfache Schattierungsmodelle und Texturen simuliert, anstatt die Lichtstrahlen zu verfolgen.
    • Die Schattenberechnung erfolgt durch Techniken wie Shadow Mapping oder Shadow Volume, welche weniger präzise als die Raytracing-Methode sind, aber genügend für die meisten Echtzeit-Anwendungen, wie Videospiele.
    • Vorteile:
      • Schnelle Berechnungszeiten.
      • Geeignet für Echtzeit-Anwendungen.
      • Breite Unterstützung durch Grafik-Hardware.
    • Nachteile:
      • Weniger realistische Darstellung von Licht- und Schatteneffekten im Vergleich zu Raytracing.
      • Beschränkte Genauigkeit bei der Simulation von Reflexionen und Brechungen.
Zusammenfassend lässt sich sagen, dass Raytracing durch die exakte Simulation von Lichtstrahlen realistische Licht- und Schatteneffekte erzeugt, jedoch hohe Rechenleistung erfordert. Rasterization hingegen bietet schnellere Berechnungszeiten und ist weit verbreitet in Echtzeit-Anwendungen, hat aber Einschränkungen hinsichtlich der Realismus bei Licht- und Schattenberechnungen.

b)

In einer 3D-Szene wird ein Lichtstrahl, der von der Kamera ausgeht, auf eine Kugeloberfläche gerichtet. Beschreibe den mathematischen Ansatz zur Berechnung der Schnittpunkte dieses Strahls mit der Kugel in einem Raytracing-Algorithmus. Verwende dazu die folgenden Gleichungen:

'P = O + tD''Sphere: ||P - C||^2 = r^2'

wobei O der Ursprung des Strahls, D die Richtung des Strahls, C der Mittelpunkt der Kugel, r der Radius der Kugel und t der Parameter entlang des Strahls ist.

Lösung:

Mathematischer Ansatz zur Berechnung der Schnittpunkte eines Lichtstrahls mit einer Kugeloberfläche in einem Raytracing-Algorithmus:

Gegeben:

  • Strahl: P = O + tD
    • O ist der Ursprung des Strahls (Kameraposition).
    • D ist die Richtung des Strahls.
    • t ist der Parameter entlang des Strahls.
  • Kugel: \(|P - C|^2 = r^2\)
    • C ist der Mittelpunkt der Kugel.
    • r ist der Radius der Kugel.

Vorgehensweise:

  1. Setze die Gleichung des Strahls in die Gleichung der Kugel ein:
  2. (O + tD - C) \cdot (O + tD - C) = r^2
  3. Berechne den Vektor von C zu O:
  4. L = O - C
  5. Ersetze O - C durch L in der erweiterten Gleichung und vereinfache:
  6. (L + tD) \cdot (L + tD) = r^2
  7. Expandiere die quadratische Form:
  8. L \cdot L + 2t(L \cdot D) + t^2(D \cdot D) = r^2
  9. Setze die Koeffizienten:
  • a = D \cdot D
  • b = 2(L \cdot D)
  • c = L \cdot L - r^2
  • Die resultierende quadratische Gleichung lautet:
  • at^2 + bt + c = 0
  • Löse die quadratische Gleichung für t:
  • t = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
  • Berechne die Diskriminante:
  • Diskriminante = b^2 - 4ac
    • Wenn Diskriminante > 0: Es gibt zwei reale Schnittpunkte.
    • Wenn Diskriminante = 0: Es gibt einen Schnittpunkt.
    • Wenn Diskriminante < 0: Es gibt keine Schnittpunkte.

    So lässt sich durch den Berechnungsansatz der Parameter t bestimmen, welcher die Schnittpunkte des Lichtstrahls mit der Kugeloberfläche in der 3D-Szene definiert. Der Parameter t kann dann verwendet werden, um die genauen Positionen dieser Schnittpunkte, also die Positionen P, zu berechnen.

    c)

    Ein Entwickler möchte die Reflexionseffekte in einem Echtzeit-Spiel verbessern, indem er Raytracing und Rasterization kombiniert. Beschreibe einen hybriden Ansatz, der die Vorteile beider Techniken nutzt. Begründe Deine Antwort, indem Du auf spezifische Szenarien der Reflexionsberechnung eingehst und erkläre, wie der hybride Ansatz die Performance optimieren kann.

    Lösung:

    Hybrider Ansatz zur Verbesserung der Reflexionseffekte durch Kombination von Raytracing und Rasterization:

    Ein hybrider Ansatz kombiniert die realistische Darstellung von Raytracing mit der schnellen Berechnung von Rasterization. Dies ermöglicht es, hochwertige Reflexionseffekte in Echtzeitspielen zu erreichen, ohne die Performance zu stark zu beeinträchtigen.

    Vorgehensweise:

    1. Grundlegende Szenenführung und Primärsicht:Für die grundlegende Szenenführung und das Rendern der Primärsicht (also das, was der Spieler direkt sieht), wird Rasterization verwendet. Dadurch können die geometrischen Modelle effizient in Pixel umgewandelt und auf dem Bildschirm dargestellt werden. Diese schnelle Berechnung ermöglicht eine hohe Bildrate, die für ein flüssiges Spielerlebnis entscheidend ist.
    2. Screen Space Reflections (SSR):Eine Technik zur Verbesserung der Reflexionen auf Basis von Rasterization ist Screen Space Reflections (SSR). SSR berechnet Reflexionen im Bildschirmraum, indem es Pixelinformationen der gerasterten Szene verwendet. Diese Technik ist effizient und gut für Echtzeit-Anwendungen geeignet, leidet jedoch unter Limitationen wie fehlenden Reflexionen außerhalb des Sichtfelds.
    3. Raytracing für spezifische Reflexionen:Für Szenarien, in denen hochwertige Reflexionseffekte benötigt werden, kann Raytracing gezielt eingesetzt werden. Dies könnte beispielsweise bei glänzenden Oberflächen wie Wasser oder metallischen Objekten erfolgen. Diese Technik verfolgt Lichtstrahlen und berechnet realistische Reflexionseffekte, indem sie die Interaktion von Licht mit der Oberfläche simuliert.
    • Fallbeispiel: In einer Spielszene mit einem glitzernden See und einem Metalltor im Hintergrund könnte Raytracing für die Reflexionen auf beiden Oberflächen verwendet werden. Für den Rest der Szene, wie Bäume und Gebäude, würde weiterhin Rasterization verwendet werden.
  • Hybrid Pipeline:Ein möglicher Ansatz zur Integration der beiden Techniken wäre die Nutzung einer hybriden Pipeline, die beide Render-Techniken kombiniert. Die Szene wird zunächst mit Rasterization gerendert. Anschließend werden spezifische Bereiche mit Raytracing gerendert, um qualitativ hochwertige Reflexionen zu berechnen.
    • Fallbeispiel: In einem Rennspiel könnte die Asphaltstraße und die Karosserie des Autos Raytracing für Reflexionen verwenden, während der Rest der Umgebung mit Rasterization gerendert wird. Dies sorgt für realistische Reflexionseffekte auf dem Auto, ohne die gesamte Szene durch Raytracing zu berechnen.

    Performance-Optimierung:Der hybride Ansatz optimiert die Performance, indem er die rechenintensive Raytracing-Berechnung auf spezifische Szenarien beschränkt. Dadurch kann die Qualität der Reflexionen verbessert werden, während die schnelle Berechnung von Rasterization beibehalten wird. Ein solches System könnte dynamisch die Notwendigkeit von Raytracing erkennen und nur für entsprechende Bereiche anwenden, was die Effizienz weiter erhöht.

    Zusammenfassend ermöglicht der hybride Ansatz eine bessere Balance zwischen realistischer Darstellung und Performance, indem beide Render-Techniken gezielt eingesetzt werden.

    Aufgabe 2)

    In einer 3D-Szene soll ein Phong-Beleuchtungsmodell implementiert werden, um realistische Licht- und Schatteneffekte zu erzielen. Deine Aufgabe ist es, sowohl die Beleuchtungsberechnungen als auch das Shading mithilfe der gegebenen Techniken zu verstehen und anzuwenden.

    a)

    Erkläre die drei Komponenten der Phong-Beleuchtung ausführlich. Stelle sicher, dass Du Umgebungslicht (\textit{Ambient Light}), Diffuslicht (\textit{Diffuse Light}) und Spiegellicht (\textit{Specular Light}) beschreibst. Verwende dafür geeignete mathematische Formeln, um zu zeigen, wie jede Komponente berechnet wird.

    Lösung:

    Die drei Komponenten der Phong-BeleuchtungDas Phong-Beleuchtungsmodell besteht aus drei Hauptkomponenten: Umgebungslicht, Diffuslicht und Spiegellicht. Diese Komponenten zusammen erzeugen ein realistischeres Beleuchtungsmodell in einer 3D-Szene.

    • Umgebungslicht (Ambient Light)
    • Umgebungslicht repräsentiert das allgemeine Lichtlevel in einer Szene, das von allen Oberflächen gleichmäßig reflektiert wird. Es wird unabhängig von der Lichtquelle betrachtet und hat keinen bestimmten Einfallswinkel. Die Formel für das Umgebungslicht ist:\[ \text{I}_{\text{ambient}} = \text{I}_{\text{a}} \times \text{K}_{\text{a}} \]Hierbei ist \(\text{I}_{\text{a}}\) die Intensität des Umgebungslichts und \(\text{K}_{\text{a}}\) der Umgebungsreflexionskoeffizient des Materials.
    • Diffuslicht (Diffuse Light)
    • Diffuslicht tritt auf, wenn Licht direkt von der Quelle auf eine Oberfläche trifft und gleichmäßig in alle Richtungen reflektiert wird. Dies führt zu einer matten Erscheinung der Oberfläche. Um den diffusen Lichtanteil zu berechnen, verwenden wir das Lambert’sche Gesetz. Die Formel für Diffuslicht ist:\[ \text{I}_{\text{diffuse}} = \text{I}_{\text{d}} \times \text{K}_{\text{d}} \times (\text{L} \bullet \text{N}) \]Hierbei ist \(\text{I}_{\text{d}}\) die Intensität der Lichtquelle, \(\text{K}_{\text{d}}\) der Diffusreflexionskoeffizient des Materials, \(\text{L}\) der normierte Vektor zur Lichtquelle und \(\text{N}\) der normale Vektor der Oberfläche. Das Skalarprodukt \((\text{L} \bullet \text{N})\) repräsentiert den Winkel zwischen dem Lichtstrahl und der Oberfläche.
    • Spiegellicht (Specular Light)
    • Spiegellicht ist das reflektierte Licht, das direkt von einer glänzenden Oberfläche zurückgeworfen wird und führt zu hellen Flecken auf der Oberfläche. Die Berechnung des Spiegellichts basiert auf dem Phong-Reflexionsmodell und wird durch folgende Formel dargestellt:\[ \text{I}_{\text{specular}} = \text{I}_{\text{s}} \times \text{K}_{\text{s}} \times (\text{R} \bullet \text{V})^{\text{n}} \]Hierbei ist \(\text{I}_{\text{s}}\) die Intensität der Lichtquelle, \(\text{K}_{\text{s}}\) der Spiegelreflexionskoeffizient des Materials, \(\text{R}\) der reflektierte Vektor und \(\text{V}\) der Vektor in Richtung des Betrachters. Der Exponent \(\text{n}\) bestimmt die Glanzlichtstreuung (je höher der Wert, desto kleiner und intensiver der Glanzfleck).Zusammenfassend kombiniert das Phong-Beleuchtungsmodell alle drei Komponenten, um eine realistische Beleuchtung in 3D-Szenen zu erzeugen. Die endgültige Beleuchtungsberechnung kann als Summe der drei Komponenten dargestellt werden:\[ \text{I} = \text{I}_{\text{ambient}} + \text{I}_{\text{diffuse}} + \text{I}_{\text{specular}} \]

      b)

      Berechne das Gesamthelligkeitsniveau eines Punktes auf einer Oberfläche unter Anwendung des Phong-Beleuchtungsmodells. Gegeben sind: die Umgebungslichtintensität \textit{I_a}, die diffuse Lichtintensität \textit{I_d} aus einer Lichtquelle mit dem Einfallswinkel \theta, und die spekulare Lichtintensität \textit{I_s} mit dem Reflexionswinkel \textit{r}. Verwende dabei folgende Werte: \textit{I_a} = 0.1, \textit{I_d} = 0.7, \textit{I_s} = 0.5, \theta = 45^\text{o}, und r = 30^\text{o}. Beachte dabei die Phong-Exponent n = 3 und die Angabe, dass der Betrachter entlang der z-Achse schaut.

      Lösung:

      Berechnung des GesamthelligkeitsniveausUm das Gesamthelligkeitsniveau eines Punktes auf einer Oberfläche unter Anwendung des Phong-Beleuchtungsmodells zu berechnen, müssen alle drei Komponenten des Modells zusammen berücksichtigt werden: Umgebungslicht, Diffuslicht und Spiegellicht.

      • Gegebene Werte:
      • \[ \text{I}_{\text{a}} = 0.1 \]\[ \text{I}_{\text{d}} = 0.7 \]\[ \text{I}_{\text{s}} = 0.5 \]\[ \theta = 45^\text{o} \]\[ r = 30^\text{o} \]\[ n = 3 \]
      • Umgebungslichtberechnung:
      • Das Umgebungslicht hat bereits eine feste Intensität:\[ \text{I}_{\text{ambient}} = \text{I}_{\text{a}} = 0.1 \]
      • Diffuslichtberechnung:
      • Für das Diffuslicht nutzen wir das Lambert’sche Gesetz und den Einfallswinkel \(\theta\):\[ \text{I}_{\text{diffuse}} = \text{I}_{\text{d}} \times \cos(\theta) \]\( \theta \) ist 45° (oder \( \pi / 4 \) im Bogenmaß):\[ \cos(45^\text{o}) = \cos( \pi / 4) = \frac{\sqrt{2}}{2} \]Daher:\[ \text{I}_{\text{diffuse}} = 0.7 \times \frac{\sqrt{2}}{2} \approx 0.7 \times 0.7071 \approx 0.49497 \]
      • Spiegellichtberechnung:
      • Für das Spiegellicht verwenden wir den Reflexionswinkel \(r\) und den Phong-Exponent \(n\):\[ \text{I}_{\text{specular}} = \text{I}_{\text{s}} \times (\cos(r))^n \]\(r\) ist 30° (oder \( \pi / 6 \) im Bogenmaß):\[ \cos(30^\text{o}) = \cos( \pi / 6) = \frac{\sqrt{3}}{2} \]Also:\[ (\cos(r))^n = \left( \frac{\sqrt{3}}{2} \right)^3 = \left( 0.86603 \right)^3 \approx 0.64952 \]Daher:\[ \text{I}_{\text{specular}} = 0.5 \times 0.64952 \approx 0.32476 \]
      • Gesamthelligkeitsniveau:
      • Die Gesamthelligkeit ergibt sich aus der Summe aller drei Komponenten:\[ \text{I} = \text{I}_{\text{ambient}} + \text{I}_{\text{diffuse}} + \text{I}_{\text{specular}} \]\[ \text{I} = 0.1 + 0.49497 + 0.32476 \approx 0.91973 \]Daher beträgt das Gesamthelligkeitsniveau des Punktes auf der Oberfläche etwa 0.91973.

        c)

        Vergleiche Gouraud-Shading und Phong-Shading, indem Du die Unterschiede in ihrer Berechnung und den daraus resultierenden visuellen Effekten erläuterst. Gehe dabei auf die Vor- und Nachteile der beiden Methoden ein. Füge Beispiele hinzu, wann welche Shading-Methode vorteilhafter ist.

        Lösung:

        Vergleich von Gouraud-Shading und Phong-ShadingDer Hauptunterschied zwischen Gouraud-Shading und Phong-Shading liegt in der Art und Weise, wie die Beleuchtung berechnet wird und welche visuellen Effekte daraus resultieren. Hier ist eine detaillierte Erläuterung:

        • Gouraud-Shading
        Berechnung:Beim Gouraud-Shading wird die Beleuchtung nur an den Scheitelpunkten (Vertices) eines Objekts berechnet. Die berechneten Farbwerte an diesen Scheitelpunkten werden dann auf die benachbarten Fragmente interpoliert (linear zwischen den Vertices innerhalb des Dreiecks).Visuelle Effekte:- Die Helligkeit ändert sich sanft und kontinuierlich.- Kann Probleme bei stark glänzenden Oberflächen und feinen Details des Lichtpunkts aufweisen.- Scharfe Glanzlichter und kleine Lichtquellen können verloren gehen oder schlecht dargestellt werden.Vorteile:- Schneller in der Berechnung, da weniger Beleuchtungsberechnungen notwendig sind.- Geeignet für Echtzeitanwendungen wie Spiele, wo Geschwindigkeit wichtiger ist als die absolute Präzision.Nachteile:- Ungeeignet für Oberflächen mit starkem Glanz oder deutlichen Lichtpunkt (Specular Highlights), da diese nicht richtig dargestellt werden.- Nur sechseckige Schattenkanten, da Lichtpunkte interpoliert werden.Beispiele:- Für große, diffuse Oberflächen ohne besondere Glanzlichter, wie z.B. Terrain-Darstellungen oder diffuse Materialien.
        • Phong-Shading
        Berechnung:Beim Phong-Shading wird die Beleuchtung an jedem Fragment (Pixel) innerhalb des Dreiecks berechnet. Die Normale (der Vektor, der senkrecht zur Oberfläche steht) wird zuerst an den Vertices bestimmt und dann linear über die Fläche des Dreiecks interpoliert. Dadurch kann die Lichtberechnung für jedes Fragment individuell durchgeführt werden.Visuelle Effekte:- Bessere und genauere Darstellung von Glanzlichtern und feinen Details der Lichteffekte.- Scharfe und klare Lichteffekte, die für realistischere Bilder sorgen.Vorteile:- Sehr genaue Darstellung von Licht- und Schatteneffekten.- Bessere Darstellung von Glanz und reflektierenden Oberflächen.- Überlegene visuelle Qualität bei komplexen Szenen.Nachteile:- Langsamer als Gouraud-Shading, da die Beleuchtung für jeden Pixel berechnet werden muss.- Größerer Rechenaufwand, was besonders bei niedriger Hardwareleistung problematisch sein kann.Beispiele:- Für Szenen, die realistische Glanzlichter und spiegelnde Oberflächen benötigen, wie z.B. metallische oder glänzende Objekte.- Ideal für Standbilder und Szenen, wo die höchste visuelle Qualität erforderlich ist.
        • Zusammenfassung
        - Gouraud-Shading ist schneller und eignet sich besser für Echtzeitanwendungen, hat jedoch Probleme mit der Darstellung von Glanzlichtern und feinen Lichteffekten.- Phong-Shading ist genauer und liefert qualitativ hochwertigere visuelle Ergebnisse, benötigt aber mehr Rechenleistung und ist daher langsamer.- Die Auswahl der Shading-Methode hängt von den Anforderungen der Anwendung ab: Echtzeitanwendungen bevorzugen oft Gouraud-Shading, während Anwendungen, die höchste visuelle Qualität erfordern, auf Phong-Shading setzen.

        Aufgabe 3)

        Inverse Kinematik und RiggingInverse Kinematik (IK) und Rigging sind Techniken zur Manipulation von 3D-Modellen für präzise Bewegungssteuerung und Animation. Bei der IK werden Gelenkwinkel berechnet, um eine Endeffektor-Position zu erreichen. Das IK-Problem besteht darin, \(\theta_1, \theta_2, \theta_3, ..., \theta_n\) zu finden, sodass die Endeffektor-Position und -Ausrichtung erfüllt sind. Lösungen werden mithilfe der Jacobian-Matrix oder CCD (Cyclic Coordinate Descent) gefunden. Rigging bezieht sich auf die Erstellung eines Skeletts (Rig) für das 3D-Modell, wobei Bones (Knochen) und Joints (Gelenke) innerhalb des Modells für realistische Bewegungen gesetzt werden. Skinning verbindet dabei die Modellgeometrie mit der Rig-Bewegung und Gewichtsmalen bestimmt die Einflussbereiche der Bones auf die Geometrie.

        a)

        Ein 3D-Charaktermodell hat ein einfaches Rig mit drei Gelenken (Schulter, Ellenbogen und Handgelenk) und zwei Knochen (Oberarm und Unterarm). Angenommen, der Charakter soll seine Hand auf eine bestimmte Position setzen, die (2, 3) in einem 2D-Koordinatensystem ist.

        • a) Inverse Kinematik Berechnung: Beschreibe den mathematischen Prozess, wie du mithilfe der Jacobian-Matrix die notwendigen Winkel für Schulter und Ellenbogen berechnen würdest, um die Hand an die Position (2, 3) zu bewegen. Beachte dabei die Länge von Oberarm (3 Einheiten) und Unterarm (2 Einheiten). Zeige die Schritte und Berechnungen.

        Lösung:

        Inverse Kinematik und RiggingInverse Kinematik (IK) und Rigging sind Techniken zur Manipulation von 3D-Modellen für präzise Bewegungssteuerung und Animation. Bei der IK werden Gelenkwinkel berechnet, um eine Endeffektor-Position zu erreichen. Das IK-Problem besteht darin, \(\theta_1, \theta_2, \theta_3, ..., \theta_n\) zu finden, sodass die Endeffektor-Position und -Ausrichtung erfüllt sind. Lösungen werden mithilfe der Jacobian-Matrix oder CCD (Cyclic Coordinate Descent) gefunden. Rigging bezieht sich auf die Erstellung eines Skeletts (Rig) für das 3D-Modell, wobei Bones (Knochen) und Joints (Gelenke) innerhalb des Modells für realistische Bewegungen gesetzt werden. Skinning verbindet dabei die Modellgeometrie mit der Rig-Bewegung und Gewichtsmalen bestimmt die Einflussbereiche der Bones auf die Geometrie.

        a) Inverse Kinematik Berechnung: Beschreibe den mathematischen Prozess, wie du mithilfe der Jacobian-Matrix die notwendigen Winkel für Schulter und Ellenbogen berechnen würdest, um die Hand an die Position (2, 3) zu bewegen. Beachte dabei die Länge von Oberarm (3 Einheiten) und Unterarm (2 Einheiten). Zeige die Schritte und Berechnungen.
        • Schritt 1: Definiere die Positionen
        • Das Schulterscheibe ist der Ursprung (0, 0). Angenommen, der Oberarm (Schulter zu Ellenbogen) hat die Länge L1 = 3 Einheiten und der Unterarm (Ellenbogen zu Handgelenk) hat die Länge L2 = 2 Einheiten.

        • Schritt 2: Zielpositionen
        • Zielposition der Hand: (x, y) = (2, 3).

        • Schritt 3: Berechnung der Gelenkwinkel
          • Um die Jacobian-Matrix zu verwenden, müssen wir die Umwandlungsfunktionen bestimmen, die die Gelenkwinkel (\theta_1, \theta_2\) (Schulter und Ellenbogen) bestimmen, die die Hand auf die Position (2, 3) setzen:

            \[ \begin{aligned} x &= L_1 \cos(\theta_1) + L_2 \cos(\theta_1 + \theta_2) \ y &= L_1 \sin(\theta_1) + L_2 \sin(\theta_1 + \theta_2) \end{aligned} \]

          • Wir kennen x=2 und y=3. Somit erhalten wir:

            \[ \begin{aligned} 2 &= 3 \cos(\theta_1) + 2 \cos(\theta_1 + \theta_2) \ 3 &= 3 \sin(\theta_1) + 2 \sin(\theta_1 + \theta_2) \end{aligned} \]

          • Nun differenzieren wir diese Gleichungen partiell nach \theta_1 und \theta_2 und erstellen damit die Jacobian-Matrix:

            \[ J = \begin{pmatrix} \frac{\partial x}{\partial \theta_1} & \frac{\partial x}{\partial \theta_2} \ \frac{\partial y}{\partial \theta_1} & \frac{\partial y}{\partial \theta_2} \end{pmatrix} = \begin{pmatrix} -3 \sin(\theta_1) - 2 \sin(\theta_1 + \theta_2) & -2 \sin(\theta_1 + \theta_2) \ 3 \cos(\theta_1) + 2 \cos(\theta_1 + \theta_2) & 2 \cos(\theta_1 + \theta_2) \end{pmatrix} \]

          • Löse das lineare Gleichungssystem unter Verwendung von J:

            \[ \Delta \mathbf{\theta} = J^{-1} \mathbf{\Delta r} \]

            wo \(\Delta \mathbf{r}\) der Vektor des Positionsfehlers und \(\Delta \mathbf{\theta}\) der Vektor der Gelenkwinkeländerungen ist. \(J^{-1}\) ist die Inverse der Jacobian-Matrix.

          • Iterativer Lösungsansatz:

            Starte mit einer initialen Schätzung (z.B. \theta_1=0, \theta_2=0) und führe die Berechnungen iterativ durch, um die Winkel zu verfeinern:

            1. Berechne den Positionsfehler \(\Delta \mathbf{r}\).2. Berechne die Jacobian-Matrix für die aktuellen Winkel.3. Löse obige Gleichung für \(\Delta \mathbf{\theta}\).4. Aktualisiere die Winkel: \(\theta = \theta + \Delta \mathbf{\theta}\).5. Wiederhole, bis der Positionsfehler vernachlässigbar ist.

          b)

          Ein anderes 3D-Modell soll mit einem Rig versehen werden.

          • b) Rigging und Skinning: Beschreibe die Schritte, wie du ein Rig für ein 3D-Modell erstellst. Erläutere, wie du Bones und Joints in das Modell integrierst und welche Techniken du für das Skinning verwendest. Gehe detailliert auf das Gewichtsmalen ein und beschreibe, wie du sicherstellen würdest, dass die Bewegung des Modells natürlich wirkt.

          Lösung:

          Inverse Kinematik und RiggingInverse Kinematik (IK) und Rigging sind Techniken zur Manipulation von 3D-Modellen für präzise Bewegungssteuerung und Animation. Bei der IK werden Gelenkwinkel berechnet, um eine Endeffektor-Position zu erreichen. Das IK-Problem besteht darin, \(\theta_1, \theta_2, \theta_3, ..., \theta_n\) zu finden, sodass die Endeffektor-Position und -Ausrichtung erfüllt sind. Lösungen werden mithilfe der Jacobian-Matrix oder CCD (Cyclic Coordinate Descent) gefunden. Rigging bezieht sich auf die Erstellung eines Skeletts (Rig) für das 3D-Modell, wobei Bones (Knochen) und Joints (Gelenke) innerhalb des Modells für realistische Bewegungen gesetzt werden. Skinning verbindet dabei die Modellgeometrie mit der Rig-Bewegung und Gewichtsmalen bestimmt die Einflussbereiche der Bones auf die Geometrie.

          b) Rigging und Skinning: Beschreibe die Schritte, wie du ein Rig für ein 3D-Modell erstellst. Erläutere, wie du Bones und Joints in das Modell integrierst und welche Techniken du für das Skinning verwendest. Gehe detailliert auf das Gewichtsmalen ein und beschreibe, wie du sicherstellen würdest, dass die Bewegung des Modells natürlich wirkt.
          • Schritt 1: Modell vorbereiten
          • Das 3D-Modell sollte in einer neutralen Pose (z.B. T-Pose oder A-Pose) vorliegen, bei der die Gelenke leicht identifizierbar und zugänglich sind.

          • Schritt 2: Rig erstellen
            • Erstelle zunächst die Bones (Knochen) des Rig. Beginne mit dem Root-Bone, der oft im Bereich des Beckens liegt. Füge dann hierarchisch die weiteren Bones hinzu, z.B. Wirbelsäule, Arme, Beine und Kopf.

            • Füge Joints (Gelenke) hinzu, um die Bones miteinander zu verbinden. Jedes Joint definiert einen Drehpunkt und gibt den Übergang zwischen zwei Bones an.

          • Schritt 3: Bones und Joints positionieren
          • Platziere die Bones entsprechend der Anatomie des Modells. Beachte dabei die natürliche Bewegungsfähigkeit der Gelenke und richte sie an den entsprechenden Körperteilen aus.

          • Schritt 4: Skinning
            • Nachdem das Rig erstellt wurde, muss das Modell mit dem Rig verbunden werden. Dies wird durch das Skinning erreicht, bei dem die Geometrie des Modells an die Bones gebunden wird.

            • Verwende Techniken wie Bind-Skin oder Smooth-Skin, um die Vertex-Gewichtungen zu berechnen und die Geometrie an die Bewegung des Rigs anzupassen.

          • Schritt 5: Gewichtsmalen
            • Gewichtsmalen (Weight Painting) ist ein wesentlicher Schritt beim Skinning, bei dem die Einflussbereiche der einzelnen Bones auf die Vertex-Gewichte bearbeitet werden.

            • Jeder Vertex des Modells erhält ein Gewicht für jeden Bone, der darauf Einfluss hat. Diese Gewichte bestimmen, wie stark der Vertex von der Bewegung des jeweiligen Bones beeinflusst wird.

            • Beginne mit einer automatischen Gewichtzuweisung und passe diese manuell durch Malen an. Achte dabei darauf, dass die Übergänge zwischen den Bones glatt und natürlich wirken.

            • Vermeide harte Kanten und unnatürliche Deformationen, indem du die Gewichte für die Bewegungsbereiche wie Schultern, Ellbogen und Hüften sorgfältig überprüfst und anpasst.

          • Schritt 6: Test und Feinabstimmung
            • Testen das Rig, indem du verschiedene Bewegungen durchführst. Überprüfe dabei die Deformation der Geometrie und passe gegebenenfalls die Gewichte weiter an.

            • Verwende Animationstools, um verschiedene Posen und Animationen zu erstellen, und stelle sicher, dass das Modell sich natürlich und realistisch bewegt.

          • Schritt 7: Finalisierung
          • Nachdem alle Anpassungen vorgenommen wurden, speichere das Rig und die Skinning-Informationen. Dein Modell ist nun bereit für die Animation und kann in verschiedenen Szenarien verwendet werden.

          .

          Aufgabe 4)

          Gegeben ist eine Menge von Punkten in der Ebene. Diese Punkte sollen zur Erstellung eines Voronoi-Diagramms und einer Delaunay-Triangulation verwendet werden. Voronoi-Diagramme teilen den Raum in Regionen auf, wobei jede Region alle Punkte enthält, die einem bestimmten Punkt am nächsten sind. Die Delaunay-Triangulation ist eine Triangulation dieser Punkte, bei der kein Punkt innerhalb des Umkreises eines Dreiecks liegt. Zwischen Voronoi-Diagramm und Delaunay-Triangulation besteht eine Dualität: Die Zentren der Umkreise der Delaunay-Dreiecke bilden die Kanten des Voronoi-Diagramms.

          a)

          Berechne für die folgenden Punkte \((1, 2), (3, 5), (6, 1), (8, 3)\) die Delaunay-Triangulation. Zeichne dazu die konvexe Hülle der Punkte und füge schrittweise die Triangulationen hinzu. Du benötigst folglich einen detaillierten Konstruktionsweg für die Triangulation, einschließlich der Berechnung der Zentren der Umkreise und Überprüfung der Umkreiskriterien.

          Lösung:

          Um die Delaunay-Triangulation für die Punkte \( (1, 2), (3, 5), (6, 1), (8, 3) \) zu berechnen, folge diesen detaillierten Schritten:

          • Schritt 1: Konvexe Hülle bestimmen Zeichne die kleinste konvexe Hülle, die alle Punkte einschließt. Dies ist ein Polygon, dessen Ecken durch die gegebenen Punkte gebildet werden. Für die Punkte haben wir die konvexe Hülle, bestehend aus den Punkten (1, 2), (3, 5), (6, 1), und (8, 3).
          • Schritt 2: Erste Triangulation bestimmen Beginne mit einer Triangulation der konvexen Hülle. Eine einfache Methode hierfür ist der Algorithmus von Bowyer-Watson. Wir fügen nacheinander die Punkte ein und überprüfen die Delaunay-Kriterien.
          • Schritt 3: Erster Schritt der Triangulation Wähle die Punkte (1, 2), (3, 5), und (6, 1) und verbinde diese zu einem Dreieck.
          • Schritt 4: Überprüfen der Umkreiskriterien Bestimme den Umkreis des ersten Dreiecks. Die Mitte des Umkreises kann durch die Mittelsenkrechte jeder Seite des Dreiecks berechnet werden. Berechne die Mittelsenkrechte der Seiten:
            • Für die Seite zwischen (1, 2) und (3, 5) liegt der Mittelpunkt bei (2, 3.5).
            • Für die Seite zwischen (3, 5) und (6, 1) liegt der Mittelpunkt bei (4.5, 3).
            • Für die Seite zwischen (6, 1) und (1, 2) liegt der Mittelpunkt bei (3.5, 1.5).
            Strecken die Mittelsenkrechte und finde den Schnittpunkt dieser Mittelsenkrechten. Dieser ist das Zentrum des Umkreises.
          • Schritt 5: Weitere Punkte hinzufügen und überprüfen Füge den Punkt (8, 3) zur Triangulation hinzu und überprüfe, ob dieser innerhalb des Umkreises eines der bestehenden Dreiecke liegt. Da er außerhalb liegt, erstelle ein neues Dreieck, z. B. (6, 1), (3, 5), und (8, 3).
          • Schritt 6: Finalisierung der Triangulation Falls nötig, wiederhole den Prozess, um eine vollständige Delaunay-Triangulation sicherzustellen.

        Insgesamt haben wir dann die finalen Dreiecke: (1, 2), (3, 5), (6, 1) sowie (6, 1), (3, 5), (8, 3). Überprüfe jedes Mal die Delaunay-Kriterien, um sicherzustellen, dass kein Punkt innerhalb des Umkreises eines Dreiecks liegt.

    Sign Up

    Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

    Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

    Kostenloses Konto erstellen

    Du hast bereits ein Konto? Anmelden