Computeranimation Flashcards
Anwendungen der Computergrafik?
Präsentationsgrafiken, Computerunterstütze de Konstruktion und Fertigung, Architektur, Medizin, Biowissenschaften, Computeranimation
Definition von Computeranimation?
Erstellung von (fotorealistischen) dreidimensionalen synthetischen Laufbild-Sequenzen mit Hilfe eines Rechners
Was ist der Unterschied zwischen Systemen mit integriertem Grafikprozessor und peripherem Grafikprozessor?
peripherer Grafikprozessor:
CPU und GPU kommunizieren über speziellen Bereich des Systemspeichers. Kommunikation der Prozessoren über einen gemeinsamen Bereich des Systmespeichers ist aufwändig und langsam. CPU kann nicht direkt auf den Bildwiedrholspeicher zugreifen.
integrierter Grafikprozessor:
durchgehender Adressraum, Bildwiederholspeicher als dual-ported memory ist Bestandteil des RAM´s. CPU kann hier direkt auf den Bildwiederholspeicher zugreifen, Konkurrenz der Prozessoren beim Speicherzugriff, deswegen Cache-Speicher für CPU
Was sind die Forderungen an den Algorithmus für zweidimensionale Darstellungselemente?
- möglichst effiziente Implementierung, kurze Laufzeit
- augewählte Pixel sollen so nahe wie möglich an der Ideallinie liegen und möglichst geradlinig verlaufen
- bei Linien mit einer Steigung zwischen -1 und +1 soll genau ein Pixel in jeder Spalte gesetzt werden
- konstante Helligkeit der Linie unabhängig von der Steigung
Welche 3 Algorithmen haben wir gelernt?
Basisalgorithmus, Inkrementieller Algorithmus, Bresenham Algorithmus
Wie funktioniert der Basisalgorithmus?
Um die Linie von P0 nach P1 zu rastern, wird die Geradengleichung y = mx + B (m = Steigung, B = Y-Achsenabschnitt)
Verfahren:
1.) Berechne m = dy/dx
2.) Berechne B = y0 -mx0
3.) Erhöhe x ausgehend von x0 jeweils um 1
4.) Berechne yi = m*xi + B
5.) Setze Pixel und runde
-> Anzahl der Schritte in x-Richtung wird mit der Steigung pro Schritt multipliziert, Wert wird dann gerundet
Nachteile:
- Falls |m| > 1 liefert der Algorithmus nicht in jeder Zeile ein Pixel
- Für jeden Schritt ist eine Multiplikation und eine Addition zweier Gleitkommazahlen sowie eine Rundungsfunktion nötig
Wie funktioniert der inkrementielle Algorithmus?
yi+1 = m*xi+1 + B
-> Für den nächsten Wert wird jeweils die Steigung pro Schritt auf den alten Wert dazuaddiert, neuer Funktionswert = alter Wert, eins nach rechts und Steigung m addiert
Nachteil:
- Fallunterscheidung zwischen m<=1 und m>1 ist nötig, da dann nicht mehr xi+1 = xi +1 gilt (das nächste Pixel muss dann möglicherweise direkt über dem vorigen gezeichnet werden
- immernoch mathematische Rundung
Wie funktioniert der Bresenham Algorithmus?
Algorithmus muss in jeder Spalte nur zwischen 2 Pixeln unterscheiden (Ost - und Nordost-Pixel)
Berechnung einer Entscheidungsvariable d
Prinzip:
- dx und dy ausrechnen (Differenz der zwei Punkte)
- d start = 2dy - dx, dE = 2dy, dNE = 2(dy-dx)
d neu ist immer dALT + dE oder dNE:
- wurde E beim vorherigen Pixel gewählt, dNEU = dALT + dE
- wurde NE beim vorherigen Pixel gewählt, dNEU = dALT + dNE
Vorteile:
- nur ganzzahlige Addition
- keine Multiplikation
- keine Rundung
- sehr effizient
Wann entsteht Antialiasing?
beim Übergang von kontinuierlichen in diskrete Signalen, denn es muss immer das Shannon´sche Abtasttheorem eingehalten werden. Das heißt, die Frequenz mit der das Signal abgetastet wird, muss doppelt so groß sein wie die Frequenz des abgetasteten Signals
Gründe für Antialiasing?
- Technik der Rasterbildschirme
- Strukturen im Bild sind feiner als die Auflösung des Bildschirmes
Was kann man gegen Antialiasing tun?
1.) Erhöhen der Auflösung (technisch begrenzt und irgendwann deutlich zu teuer)
- ) Bereichsmittelwerte ohne Gewichtung
- Grauwert eines Pixels wird proportional zu der von dem Rechteck der Linie überdeckten Fläche des Pixels eingestellt
- Gewichtungsfunktion
-> Bessere Ergebnisse, geringerer Kontrast zwischen benachbarten Pixeln
- ) Bereichsmittelwerte mit Gewichtung (weighted area sampling)
- Pixel werden als sich überlappende Kreisflächen betrachtet
- Gewichtungsfunktion ist ein Kegel, Kegelvolumen ist auf 1 normiert
- Intensität eines Pixels = Teilvolumen des Kegelschnitts
Welche Methoden zur Approximation von Kurven gibt es?
Polynome, Splines, Kubische Splines, Bezierkurven, B-Splines, Nurbs
Polynome?
Durch n vorgegebene Punkte lässt sich ein Polynom (n-1) - ten Grades legen, Kurve oszilliert dann meistens zwischen den Stützpunkten
Splines?
Spline = Teilkurve
Stückweise polynomielle Kurven
- Mit Polynomen ersten Grades lassen sich nur Geraden darstellen
- Mit Polynomen zweiten Grades (Parablen) stoßen Splines aufeinander (es ergeben sich aber Ecken)
- Mit Polynomen dritten Grades erzeugt man Kubische Splines, diese liefern schöne Ergebnisse, da C2-Stetigkeit
Welchen Grad der Stetigkeit gibt es?
C0: gleiche Funktionswerte, ungleiche 1. Ableitungen (Für CA nicht ausreichend)
C1: gleiche Funktionswerte, gleiche 1. Ableitungen, ungleiche 2. Ableitungen
C2: gleiche Funktionswerte, gleiche 1. Ableitungen, gleiche 2. Ableitungen
Kubische Splines?
C2-Stetigkeit an den Intervallgrenzen
Soll eine Kurve durch n vorgegebene Punkte laufen, wird die Funktion in n-1 Intervalle zerlegt und in jedem Teilintervall durch ein Polynom 3-ten Grades dargestellt. Mathematisch aber sehr aufwändig
Bezierkurven?
Es kann jede beliebige Kurve dargestellt werden. Jedes Bezier-Kurvensegment besteht z.B aus vier Punkten, zwei Stützpunkte definieren Anfang und Ende der Kurve, zwei Kontrollpunkte steuern den Kurvenverlauf, liegen aber nicht auf der Kurve.
Bernsteinpolynome definieren den Einfluss der Punkte auf den Kurvenverlauf.
- geschlossene Kurven durch Mehrfachpunkte P0 = P3
- Kurve liegt innerhalb der Hülle der Stütz- und Kontrollpunkten
- C1-Stetigkeit an den Verbindungspunkten
- Verschiebung von einem Punkt beeinflusst gesamten Kurvenverlauf
B-Splinekurven?
B = Basis
Verallgemeinerung von Bezierkurven, nicht alle Stützpunkte haben Einfluss auf gesamten Kurvenverlauf und der Grad der Polyno,e soll unabhängig von der Anzahl der Stützpunkte sein
- werden berechnet wie Bezierkurven, k wird vom User gesetzt, bei Bezier ist dieses gegeben
Nurbs?
Erweiterung der B-Splines, bei denen genaue Abbildungen eines Kreises möglich sind.
Punkte sind nicht gleichmäßig gewichtet
Welche geometrischen Transformationen gibt es?
Translation, Skalierung, Rotation
Wie funktioniert die Translation?
Translation ist einfache Vektoraddition, bei der jeder Punkt mit einem Vektor v addiert wird und sich somit alle Punkte gleich verschieben
Wie funktioniert die Skalierung?
Einfache Matrizenmultiplikation, bei der jeder Punkt proportional zu den anderen herunter- oder heraufskaliert wird. Hierbei verschiebt sich aber das ganze Objekt.
Wie funktioniert die Rotation?
Drehung von den Punkten um den Winkel phi
Wie unterscheidet sich die Rotation und Skalierung von der Translation?
- bei der Skalierung und Rotation wird Position zum Ursprung verändert
- Translation wird anders berechnet als Rotation und Skalierung
Wie funktionieren zusammengesetzte Transformationen beziehungsweise was ist das Ziel?
Ziel: Steigerung der Effektivität, wenn eine Reihe von Transformationen auf mehrere Punkte (Objekte) angewandt werden
Bsp. Drehung eines Hauses um P1 um den Winkel phi:
- ) Verschiebe P1 zum Ursprung
- ) Rotiere um den Winkel phi
- ) Verschiebe zum ursprünglichen P1
Achtung! Matrizenmultiplikation ist nicht kommutativ: KV != VK, also Reihenfolge beachten
Was ist das Weltkoordinatensystem?
Koordinatensystem, in dem der Anwender die Objekte seiner künstlichen Welt platziert
Was sind die Bildschirmkoordinaten?
Matrix der Bildpunkte des Monitors, entspricht dem Bildwiederholspeicher
Was ist die Window-Viewport-Translation?
Hier wird ein Window (Kamerasichtfenster) von Weltkoordinaten in Bildschirmkoordinaten umgewandelt. Zuerst wird zum Ursprung verschoben, dann skaliert, dann an die endgültige Position verschoben. Transformation als Wechsel des Koordinatensystems