Was ist ein Szenegraph?
System, das auf OpenGL aufbaut und die virtuelle Szene so strukturiert, dass sie durch die Hardware optimal abgearbeitet werden kann. Meistens wird dabei erst räumlich organisiert.
Eigenschaften von Szenegraphen? Konkrete Softwarenamen?
baumartige Hierarchie (meistens Gruppen-, Transformation- und Geometrieknoten)
Wissen wo man sich in der Welt befindet.
Änderungen von Knoten wirkt sich auf Kinder aus.
Zustand wird sich gemerkt (z.B. Transformation). Beim Verlassen eines Teilbaums wird dieser wieder restauriert (äquivalent zu glPush/PopMatrix()).
OpenSG, JME, Ogre3D, Open Inventor, ....
Wissen wo man sich in der Welt befindet.
Änderungen von Knoten wirkt sich auf Kinder aus.
Zustand wird sich gemerkt (z.B. Transformation). Beim Verlassen eines Teilbaums wird dieser wieder restauriert (äquivalent zu glPush/PopMatrix()).
OpenSG, JME, Ogre3D, Open Inventor, ....
Wofür Szenegraphen?
Organisation virtueller Szenen, Transformationshierarchien, Schnelles Rendern durch Bounding Volume Hierarchien und View Frustum Culling.
In welchem Koordinatensystem speichere ich Geometrie?
Geometrie wird im lokalen Koordinatensystem gezeichnet und an die gewünschte Stelle transformiert. pw= Mv * pl
Szenegraph wurde vorgegeben. Wie berechne ich die Weltkoordinaten für die Positionierung der Objekte/BBs ? Wie aus Welt- lokale Koordinaten?
Von lokal in Welt Matrizen aufmultiplizieren von links. Andersrum die Inversen der Matrizen.
Also geg. z.B. Root -> M1 -> M3 -> M2 -> Geometrie
Dann lokal -> Welt: M1*M3*M2*pl = pw
Welt -> lokal: pl = M2^-1*M3^-1*M1^-1*pw
= (M1*M3*M2)^-1*pw
Also geg. z.B. Root -> M1 -> M3 -> M2 -> Geometrie
Dann lokal -> Welt: M1*M3*M2*pl = pw
Welt -> lokal: pl = M2^-1*M3^-1*M1^-1*pw
= (M1*M3*M2)^-1*pw
Wann müsste ich mal von Welt- in lokale Koordinaten?
Raytracing ,um den Strahl von Welt- in lokale Koordinaten umzuwandeln oder
View-Matrix-Berechnung.
View-Matrix-Berechnung.
Wie bekommt man die View-Matrix (gluLookAt-Matrix)?
View-Matrix macht die Umformung von Welt- in Kamerakoordinaten.
Hier also Aufmultiplizieren der Inversen der Matrizen von links.
Die Modelviewmatrix berechnet sich aus der Akkumulation der Transformationsmatrizen(z.B.: R*S*...*T) und der “gluLookAt-Matrix”(V). (Mv= V R S ... T), wobei für V alle Transformationen im SG zwischen ihr und dem Root-Knoten erst akkumuliert und dann invertiert mit ihr multipliziert werden müssen: VW = (R S ... T)-1 VL = T-1 ... S-1 R-1 VL.
Hier also Aufmultiplizieren der Inversen der Matrizen von links.
Die Modelviewmatrix berechnet sich aus der Akkumulation der Transformationsmatrizen(z.B.: R*S*...*T) und der “gluLookAt-Matrix”(V). (Mv= V R S ... T), wobei für V alle Transformationen im SG zwischen ihr und dem Root-Knoten erst akkumuliert und dann invertiert mit ihr multipliziert werden müssen: VW = (R S ... T)-1 VL = T-1 ... S-1 R-1 VL.
Was passiert, wenn wir erst rotieren, dann translieren, was wenn es andersrum ist?
(-t)*R*p ist äquivalent zu ?
a) R(p-t)
b) R*p-t
R(p-t) ist äquivalent zu ?
a) R*T*p
b) T*R*P
a) R(p-t)
b) R*p-t
R(p-t) ist äquivalent zu ?
a) R*T*p
b) T*R*P
1)Zuerst wird rotierte und danach transliert, also b)
(einfache Arithmetik, nicht verunsichern lassen)
2)Erst wird transliert, dann rotiert, also a)
Wenn p -> 4D-Vektor und R und T 4x4-Matrizen dann liefert a) das selbe Ergebnis.
(einfache Arithmetik, nicht verunsichern lassen)
2)Erst wird transliert, dann rotiert, also a)
Wenn p -> 4D-Vektor und R und T 4x4-Matrizen dann liefert a) das selbe Ergebnis.
Wo ist die Kamera?
Hängt davon ab, ob Szene statisch oder dynamisch
statische Szene: direkt unter Wurzel
dynamische Szene: unter den Geometrieknoten des bewegten Objekts
Mittransformieren der Kamera
Bsp: So positionieren dass sie am Kopf einer Figur sitzt. Die Transformationen des Kopfes wirken sich so auch auf die Kamera aus.(First Person View).
statische Szene: direkt unter Wurzel
dynamische Szene: unter den Geometrieknoten des bewegten Objekts
Mittransformieren der Kamera
Bsp: So positionieren dass sie am Kopf einer Figur sitzt. Die Transformationen des Kopfes wirken sich so auch auf die Kamera aus.(First Person View).
Wo ist die Lichtquelle?
Auch beliebig. Kann bspw. an einen Geometrieknoten gehangen werden, wenn sie sich bewegen soll.(Taschenlampe)
Lichtquellen werden genau wie andere Objekte innerhalb der Szene platziert. (Licht Position wird von OpenGL genauso behandelt wie die eines Vertex ). Während das beim AmbientLight nicht unbedingt nötig wäre, profitieren gerichtete Lichtquellen und punktförmige Lichtquellen von der Objektgruppierung.
Lichtquellen werden genau wie andere Objekte innerhalb der Szene platziert. (Licht Position wird von OpenGL genauso behandelt wie die eines Vertex ). Während das beim AmbientLight nicht unbedingt nötig wäre, profitieren gerichtete Lichtquellen und punktförmige Lichtquellen von der Objektgruppierung.
Wie werden Transparenzen behandelt?
Behandlung als eigene Datenstruktur(eigener Zweig). Werden bei Traversierung für eine effiziente Sortierung in eigene Datenstruktur gepackt.
Sortieren bei Szenegraphen, wann braucht man das?
Zur Optimierung. (Draw Tree): z.B. Geometrie mehrfach referenzieren(1x im Speicher), Minimierung der State Changes (nach Textur(am teuersten!),Materialien,Farbe,Shader sortieren)
Man will verhindern dass die Pipeline “leerläuft” (viele State Changes -> “Langsamster Renderer der Welt”)
Sortieren nach Transparenzen. Transparenzen als letztes zeichnen.
Man will verhindern dass die Pipeline “leerläuft” (viele State Changes -> “Langsamster Renderer der Welt”)
Sortieren nach Transparenzen. Transparenzen als letztes zeichnen.
Wenn die Kamera weiter unten ist, muss ich dann für weiter oben liegende Geometrie quasi zweimal durch den Graph?
Ja, einmal um die View-Matrix zu akkumulieren. Anschließend wird die Geometrie der Szene mit dieser View gezeichnet.
Bsp.: Cockpitsicht. View Matrix an Geometrie G1 (im Auto). Zur Berechnung der View Matrix: V = M2-1 * M3-1 * M1-1 . Danach Geometrie mit View-Matrix zeichnen: G1w = V * M1 * M2 * M3 * G1l
Bsp.: Cockpitsicht. View Matrix an Geometrie G1 (im Auto). Zur Berechnung der View Matrix: V = M2-1 * M3-1 * M1-1 . Danach Geometrie mit View-Matrix zeichnen: G1w = V * M1 * M2 * M3 * G1l
Wie berechne ich die Weltkoordinaten bei Bounding Volumes?
Traversierung nach unten (push) akkumuliert die Transformationen, so kann man in Weltkoordinaten min und max des BV bestimmen.
Dann Traversierung nach oben (pull) um Min und Max des Elternknotens in WK zu bestimmen.
Dann Traversierung nach oben (pull) um Min und Max des Elternknotens in WK zu bestimmen.
Wofür braucht man die Boundingboxen? Welche gibt es?
View-Frustum-Culling:
Wenn BV außerhalb des Frustums liegt, braucht der darunter liegende Graph für das Rendering nicht weiter berücksichtigt werden. Jedem Objekt wird ein BV zugeordnet, Mehrfachrendern von Geomtrie ist somit nicht möglich.
AABB, Oriented BB, Bounding Slaps (k-dops), Kugel
Wenn BV außerhalb des Frustums liegt, braucht der darunter liegende Graph für das Rendering nicht weiter berücksichtigt werden. Jedem Objekt wird ein BV zugeordnet, Mehrfachrendern von Geomtrie ist somit nicht möglich.
AABB, Oriented BB, Bounding Slaps (k-dops), Kugel
Wie funktioniert VFC?
Von oben nach unten testen ob Geometrie im Frustum liegt.
Konkret:
Man testet die 8 Eckpunkte des Bounding Volumes (hier Bounding Box) gegen jede Ebene des View-Frustums.
dot(n:Normale der Ebene, a:EckpunktBV-Punkt auf Ebene) > 0: Punkt im vorderen Halbraum (dahin wo die Normale zeigt, also außerhalb)
sonst: hinteren Halbraum (innerhalb)
Hier: Normalen der Ebenen des Frustums zeigen nach außen
1. BV komplett vor mindestens einer Ebene (Eckpunkte: dot(a,n) > 0 ) -> Objekt nicht sichtbar, Abbruch
2. BV hinter allen 6 Ebenen -> Objekt komplett sichtbar, alle enthaltene Geometrie zeichnen.
3. BV mindestens durch eine Ebene teilweise abgeschnitten -> weder davor noch dahinter :wenn Gruppenknoten -> weiter absteigen
wenn Geometrie -> zeichnet man einfach alles
Konkret:
Man testet die 8 Eckpunkte des Bounding Volumes (hier Bounding Box) gegen jede Ebene des View-Frustums.
dot(n:Normale der Ebene, a:EckpunktBV-Punkt auf Ebene) > 0: Punkt im vorderen Halbraum (dahin wo die Normale zeigt, also außerhalb)
sonst: hinteren Halbraum (innerhalb)
Hier: Normalen der Ebenen des Frustums zeigen nach außen
1. BV komplett vor mindestens einer Ebene (Eckpunkte: dot(a,n) > 0 ) -> Objekt nicht sichtbar, Abbruch
2. BV hinter allen 6 Ebenen -> Objekt komplett sichtbar, alle enthaltene Geometrie zeichnen.
3. BV mindestens durch eine Ebene teilweise abgeschnitten -> weder davor noch dahinter :wenn Gruppenknoten -> weiter absteigen
wenn Geometrie -> zeichnet man einfach alles
Alternative Technik des VFC?
View-Frustum ins kanonische Volumen transformieren -> transformiert BVs -> Punkte der transformierten BVs gegen dessen min- und max-Werte testen.
Welche der beiden Techniken des VFC ist besser?
Die erste, da man bei der zweiten einmal die gesamte Geometrie perspektivisch dividieren müsste. Dies müsste mit erhöhtem Aufwand im Szenegraphen geschehen, da die perspektivische Division Aufgabe der Fixed-Function-Pipeline ist.
Könnte es passieren dass bei View Frustum Culling mit Bounding Volumes ein Objekt mehrfach gezeichnet wird?
Nein, da jedes Objekt nur in genau einem BV sein sollte.
Wie erstellt man einen BSP-Tree?
1) Längste Seite wählen
2) Ebene so teilen, dass gleich viele Objekte in den beiden neuen Ebenen entstehen
3) wenn Objekt in beiden Teilräumen, dann aufspalten oder duplizieren
3) rekursiv wiederholen, bis jeder raum maximal 1 objekt hat
2) Ebene so teilen, dass gleich viele Objekte in den beiden neuen Ebenen entstehen
3) wenn Objekt in beiden Teilräumen, dann aufspalten oder duplizieren
3) rekursiv wiederholen, bis jeder raum maximal 1 objekt hat
Was ist schneller zu erstellen: BSP oder BVH?
BVH, da man bei BSP ja ständig ein Optimierungsproblem hat, was man manchmal auch nicht eindeutig lösen kann (gleich viele Objekte in beiden Räumen)
BVH bottom-up, BSP top-down
BVH bottom-up, BSP top-down
Was ist schneller zu traversieren: BSP oder BVH?
BSP, da man einen Binärbaum hat und dementsprechend schneller am Blatt ankommt. Nur 2 Möglichkeiten pro Baumebene statt n Möglichkeiten bei BVH.
Weniger Schnittests erforderlich
Weniger Schnittests erforderlich
Könnte man auch mit einem Octree View Frustum Culling machen?
Ja könnte man, man müsste gegen die Voxel des Octree testen statt gegen BVs.
Könnte es dabei passieren dass ein Objekt eines Octree nach dem VFC mehrfach gezeichnet würde?
Ja, ein Objekt könnte in mehreren Voxeln enthalten sein. Kann man vermeiden in dem man sich merkt welche Objekte schon gezeichnet wurden.
Wo clippe ich beim SG? Beim VFC?
Macht keinen Sinn. Clipping wird von OpenGL(Hardware) selbst nach der perspektivischen Projektion durchgeführt.
Wofür brauchen wir Priority Queues?
Raytracing von BVHs, um die Zahl der Schnitttests zu reduzieren:
Machen Priority Queues auch bei View Frustum Culling Sinn?
Nein, da sowieso alle BV getestet werden
Würde eine Priority Queue bei der Behandlung von Transparenzen Sinn machen?
Nein, Transparenzen müssen komplett von hinten nach vorne gezeichnet werden. Es gibt keinen Aufwand, den man vermeiden könnte.
In welchem KOS speichere ich Bounding Volumes?
Im Normalfall in Weltkoordinaten. So wird das View Frustum Culling erleichtert. Man testet die BVs in Weltkoordinaten gegen das Frustum in Weltkoordinaten.
Rendert man jetzt direkt nach dem VFC?
Ja, nach dem View-Frustum-Culling kann man rendern. Es macht aber mehr Sinn einen Draw-Tree zu erstellen, um die State Changes zu minimieren und dadurch schneller zu rendern.
Was passiert wenn sich etwas in der Szene bewegt? (BV)
Die geänderten Knoten werden markiert. Nur bei Bedarf (“zum Zeichnen der Szene”) werden alle Eltern-BVs aktualisiert. (“Lazy Evaluation”)
Was sind B-Splines? Was ist ein Spline?
Basis-Splines
Spline: Funktion, die stückweise aus Polynomen eines Grades zusammengesetzt ist. Bedingungen für die Stellen, an denen 2 Polynome aufeinandertreffen: Stetigkeit
Spline: Funktion, die stückweise aus Polynomen eines Grades zusammengesetzt ist. Bedingungen für die Stellen, an denen 2 Polynome aufeinandertreffen: Stetigkeit
Welche Eigenschaften haben B-Splines (basisfunktionen)?
Die Summe aller Gewichtungsfunktionen (Ergebnisse der jeweiligen Cox de Boor-Rekursion) ergibt in der Regel 1, bis auf (k − 1) Intervalle am Anfang und Ende.
Die Gewichtungsfunktionen werden NIE negativ
Maximale Ordnung der B-Splines ist k = n.
Jeder Kontrollpunkt auf der Kurve wird durch k Nachbarpunkte beeinflusst
Die B-Spline Kurve liegt in der Vereinigung aller konvexer Hu ̈llen um jeweils k aufeinanderfolgende Kontrollpunkte.
Invariant bezu ̈glich affiner Abbildungen (egal ob erst abbilden, dann berechnen oder andersrum) projektiv allerdings NICHT invariant
Die Gewichtungsfunktionen werden NIE negativ
Maximale Ordnung der B-Splines ist k = n.
Jeder Kontrollpunkt auf der Kurve wird durch k Nachbarpunkte beeinflusst
Die B-Spline Kurve liegt in der Vereinigung aller konvexer Hu ̈llen um jeweils k aufeinanderfolgende Kontrollpunkte.
Invariant bezu ̈glich affiner Abbildungen (egal ob erst abbilden, dann berechnen oder andersrum) projektiv allerdings NICHT invariant
Welche Arten von B-Splines gibt es und was sind ihre Eigenschaften?
Es gibt periodische und offene B-Splines. In der Regel sind diese noch uniform, d.h. die Werte im Knotenvektor haben gleiche Absta ̈nde.
periodisch uniforme B-Splines
Abstand zwischen den Knotenwerten ist konstant (z.B. [0, 1, 2, ..]) Ein Punkt der Kurve liegt immer in der konvexen Hu ̈lle der k Nachbarpunkte, die ihn beeinflussen Der komplette Spline liegt damit in der Vereinigung dieser konvexen Hu ̈llen Spitze in der Kurve wird erzeugt durch k − 1 identische aufeinanderfolgende Kontrollpunkte Geschlossene Kurve: Wiederholung von k − 2 Kontrollpunkten Die Kurve ist gu ̈ltig im Intervall fu ̈r Parameter t [k − 1, n]
offen uniforme B-Splines
An Anfang und Ende des Knotenvektors stehen je k gleiche Werte, z.B. [0..0123..3] Kurve geht durch ersten und letzten Kontrollpunkt
Fu ̈r n = k ergibt sich dann eine Bezier-Kurve (Knotenvektor [0..01..1]). Vorteil gegenu ̈ber Bezier-Splines ist die lokale Kontrolle, d.h. die Kontrollpunkte vera ̈ndern die Kurve nur lokal.
Die Kurve ist gu ̈ltig im Intervall fu ̈r Parameter t [0, n − k + 1].
periodisch uniforme B-Splines
Abstand zwischen den Knotenwerten ist konstant (z.B. [0, 1, 2, ..]) Ein Punkt der Kurve liegt immer in der konvexen Hu ̈lle der k Nachbarpunkte, die ihn beeinflussen Der komplette Spline liegt damit in der Vereinigung dieser konvexen Hu ̈llen Spitze in der Kurve wird erzeugt durch k − 1 identische aufeinanderfolgende Kontrollpunkte Geschlossene Kurve: Wiederholung von k − 2 Kontrollpunkten Die Kurve ist gu ̈ltig im Intervall fu ̈r Parameter t [k − 1, n]
offen uniforme B-Splines
An Anfang und Ende des Knotenvektors stehen je k gleiche Werte, z.B. [0..0123..3] Kurve geht durch ersten und letzten Kontrollpunkt
Fu ̈r n = k ergibt sich dann eine Bezier-Kurve (Knotenvektor [0..01..1]). Vorteil gegenu ̈ber Bezier-Splines ist die lokale Kontrolle, d.h. die Kontrollpunkte vera ̈ndern die Kurve nur lokal.
Die Kurve ist gu ̈ltig im Intervall fu ̈r Parameter t [0, n − k + 1].
Welche Arten der Stetigkeit gibt es? Welche Effekte hat das auf die Beleuchtung?
C0: Positions-Stetigkeit. Polynome treffen aufeinander, sonst keine Bedingung. Effekt: Störungen bei Lichteffekten
C1: Tangentiale Stetigkeit: Tangenten der Polynome im Treffpunkt sind identisch. Effekt: Ausreichend gute Beleuchtung
C2: Krümmungsstetigkeit: Betrag der Tangenten auch gleich. Optisch perfekt glatt
C0-C1=G0-G1
G2: Parametrisierung auch stetig
C1: Tangentiale Stetigkeit: Tangenten der Polynome im Treffpunkt sind identisch. Effekt: Ausreichend gute Beleuchtung
C2: Krümmungsstetigkeit: Betrag der Tangenten auch gleich. Optisch perfekt glatt
C0-C1=G0-G1
G2: Parametrisierung auch stetig
B-Splines: Erklären:
Bi, n, k, xi, t
Bi, n, k, xi, t
Bi: Cox-deBoor Punkt, zwischen denen interpoliert wird
n: Anzahl der Kontrollpunkte und Basisfunktionen
k: Ordnung des Polynoms (Anzahl der Kontrollpunkte, die einen Kurvenabschnitt beeinflussen),
k-1 Grad der Polynome,
k-2 Stetigkeit
xi: Element des Knotenvektors, Intervallgrenzen
t: Parameter entlang der B-Spline-Kurve
n: Anzahl der Kontrollpunkte und Basisfunktionen
k: Ordnung des Polynoms (Anzahl der Kontrollpunkte, die einen Kurvenabschnitt beeinflussen),
k-1 Grad der Polynome,
k-2 Stetigkeit
xi: Element des Knotenvektors, Intervallgrenzen
t: Parameter entlang der B-Spline-Kurve
Was sind Knotenvektoren?
Knotenvektoren sind monoton steigende Zahlenfolgen mit n+k Eintra ̈gen, z.B. [000. . . 111], [0123] im uniformen Fall (nicht uniform [0 2 5]). Durch die Angabe von Knotenvektoren werden die Basisfunktionen festgelegt. Die Elemente haben einen Index, beginnend bei 1.
Kann man mit Bezier-Kurven alles darstellen was man mit B-Splines machen kann?
Ja, allerdings nur globale Kontrolle bei Bezier
Kann man Kreise mit B-Splines darstellen?
Nein, für jegliche Kegelschnitte, also Ellipsen, und somit Kreise, brauchen wir NURBS.
Wie heißt die Basisfunktion B-Splines N?
Gefragt war hier nicht die Formel, sondern die Bezeichnung "Cox-de-Boor-Rekursion".
Es wurden vier Kontrollpunkte aufgezeichnet. Geben Sie den periodischen Knotenvektor für n=4 und k=4 an.
[0,1,2,3,4,5,6,7]
Zeichnen sie die Kurve (n = 4, k = 4) für den periodisch Fall
Gültiger Parameterbereich für den periodischen Fall: k-1 t n hier: 3 t 4
Support: k hier: 4
Cox–de Boor Rekursion:
Basisfunktionen zeichnen, Definitionsbereich erwähnen, anschließend Kurve anhand Basisfunktion zeichnen
Support: k hier: 4
Cox–de Boor Rekursion:
Basisfunktionen zeichnen, Definitionsbereich erwähnen, anschließend Kurve anhand Basisfunktion zeichnen
Wie sieht die Kurve (n4,k4) bei NURBS im periodischen Fall für w3=0 aus?
Punkt 3 hat keinen Einfluss mehr, Grad wird um 1 runtergesetzt
Was ist der Unterschied zwischen einer offenen und periodischen Kurve in k=2?
Es gibt keinen, beide linear.
Wie schließe ich die Kurve mit n=4 und k=4 im periodischen Fall?
Start- und Endpunkt verbinden
k-2 Punkte wiederholen, also hier die nächsten beiden.
k-2 Punkte wiederholen, also hier die nächsten beiden.
Schreiben Sie die Nurbs-Funktion auf!
B-Spline (n = 3, k = 2) ? Wie sieht die Kurve im periodischen/offenen Fall aus?
Beide gleich
B-Spline (n = 3, k = 2), w2=0? Grad des Polynoms?
Nur Punkte werden gezeichnet
Fall der Singularität (Division durch 0)
Summe der Basisfunktionen muss 1 sein, sonst nicht definiert
Grad= 2-1
Fall der Singularität (Division durch 0)
Summe der Basisfunktionen muss 1 sein, sonst nicht definiert
Grad= 2-1
Was ist bei NURBS anders als bei B-Splines?
Gewichtet durch homogene Koordinate -> Rational
Definition der B-Spline-Kurven im R4 und Projektion in den R3 (vom Ursprung auf die Hyperebene w = 1)
wenn w = 1: NURBS = B-Spline
Kegelschnitte
Definition der B-Spline-Kurven im R4 und Projektion in den R3 (vom Ursprung auf die Hyperebene w = 1)
wenn w = 1: NURBS = B-Spline
Kegelschnitte
Kann man mit Bezier-Kurven/B-Splines jedes Polynom annähern?
Jedes Polynom vom Grad n lässt sich...
… durch einen B-Spline mit Hilfe von n+1 Kontrollpunkten Bi definieren.
… durch eine Bézier-Kurve mit Hilfe von n+1 Kontrollpunkten Pi definieren.
… durch einen B-Spline mit Hilfe von n+1 Kontrollpunkten Bi definieren.
… durch eine Bézier-Kurve mit Hilfe von n+1 Kontrollpunkten Pi definieren.
Kann ich Bezierkurven rational machen?
Ja, es gibt rationale Bezierkurven, d.h. man kann ihnen eine homogene Koordinate als Gewicht geben, allerdings hat das keinen Einfluss darauf, dass die Bezierkurven trotzdem nur globale Kontrolle haben.
Was ist der Unterschied zwischen einem offenen und einem periodischen B-Spline?
Kurve geht durch Start- und Endpunkt. k-Wiederholungen des ersten und letzten Knotens.
Was kann man damit machen? (offen, periodischer B-Spline)
Schöne Kurven. Hübsch gebogen und geformt. Kann man anschauen und bestaunen.
^^schlechte Antwort!, vielleicht besser:
period. B-Spline, der geschlossen ist: Trimmingkurve
offener B-Spline: Kurve, die durch STart und Ende geht, dafür nicht schön zu schliessen
^^schlechte Antwort!, vielleicht besser:
period. B-Spline, der geschlossen ist: Trimmingkurve
offener B-Spline: Kurve, die durch STart und Ende geht, dafür nicht schön zu schliessen
Kann ich B-Splines durch Bezierkurven darstellen?
Ja, man kann beide in einander umrechnen. Stichwort Reparametrisierung von B-Spline nach Bezier. Umgekehrt gehts auch. Es verändern sich dabei aber die Kontrollpunkte.
Kann man mit Polynomen auch Kreise darstellen?
Ja, mit rationalen Polynomen, also NURBS.
Wie zeichne ich eine Freiformfläche?
Doppelter de Casteljau:
Um den Punkt Q(0.5, 0.5) auf der Bezierfläche zu berechnen, müssen als erstes B0, B1, B2 berechnet werden. Um B0 zu berechnen wird der normale de Casteljau Algorithmus für Bezier-Kurven angewandt, d.h. zwischen den Punkten B00 und B10 wird mit u0= 0.5linear interpoliert, genauso wie zwischen B10 und B20. Man erhält so die beiden vordersten grünen Punkte. Interpoliert man nun erneut zwischen diesen beiden neuberechneten Punkten erhält man B0. Analog werden B1und B2berechnet.
Auf B0, B1, B2 wird ebenfalls der de Casteljau-Algorithmus angewandt, allerdings mit v0=0.5. Der nun berechnete Punkt ist Q(0.5, 0.5) und liegt auf der Bezierfläche.
Um den Punkt Q(0.5, 0.5) auf der Bezierfläche zu berechnen, müssen als erstes B0, B1, B2 berechnet werden. Um B0 zu berechnen wird der normale de Casteljau Algorithmus für Bezier-Kurven angewandt, d.h. zwischen den Punkten B00 und B10 wird mit u0= 0.5linear interpoliert, genauso wie zwischen B10 und B20. Man erhält so die beiden vordersten grünen Punkte. Interpoliert man nun erneut zwischen diesen beiden neuberechneten Punkten erhält man B0. Analog werden B1und B2berechnet.
Auf B0, B1, B2 wird ebenfalls der de Casteljau-Algorithmus angewandt, allerdings mit v0=0.5. Der nun berechnete Punkt ist Q(0.5, 0.5) und liegt auf der Bezierfläche.
Formel für doppelten DeCasteljau?
Formel für Freiformflächen?
Eigenschaften von Bezier-Freiformflächen?
Grad der Flächen in jede Parameterrichtung ist eins wenigerals die Anzahl der Kontrollpunkte in diese Richtung
Stetigkeit ist zwei weniger
Die Eckpunkte des Kontrollnetzes liegen auf der Bézier-Fläche
Die Fläche liegt in der konvexen Hülle des Kontrollnetzes
Affine Invarianz
Stetigkeit ist zwei weniger
Die Eckpunkte des Kontrollnetzes liegen auf der Bézier-Fläche
Die Fläche liegt in der konvexen Hülle des Kontrollnetzes
Affine Invarianz
Wie wird eine Freiformfläche trianguliert?
Triangle-Stripes durch die Punkte. KEIN DELAUNAY, dieser wäre viel zu aufwendig.
Wie findet man heraus ob man verfeinern muss?
1)Freiformfläche mit Hilfe des Kontrollnetzes in Vierecke unterteilen
2)Für jedes Viereck überprüfen, ob die Abweichung von der Fläche größer als ein vorgegebenes € ist, falls ja: weitere Unterteilung des Vierecks unter Verwendung weiterer Punkte der Freiformfläche (die in diesem Rechteck liegen)
3)Funktion rekursiv fortsetzen, bis die Abweichung für jedes Viereck kleiner ist als € (Surface-Subdivision-Algorithmus)
4)Jedes Viereck triangulieren (trivial)
oder:
Große Differenzen zwischen Tangente sowie Krümmung (bzw. Normale) von benachbarten Punkten können weiteren Aufschluss darüber liefern, ob verfeinert werden muss. Zitat Müller: “Abhängig vom Gradienten der Fläche bzw. der Tangenten wählt man kleinere Flächen.” (Die Tangenten kann man durch die Partielle Ableitung nach u und v für jeden Punkt bestimmen.)
2)Für jedes Viereck überprüfen, ob die Abweichung von der Fläche größer als ein vorgegebenes € ist, falls ja: weitere Unterteilung des Vierecks unter Verwendung weiterer Punkte der Freiformfläche (die in diesem Rechteck liegen)
3)Funktion rekursiv fortsetzen, bis die Abweichung für jedes Viereck kleiner ist als € (Surface-Subdivision-Algorithmus)
4)Jedes Viereck triangulieren (trivial)
oder:
Große Differenzen zwischen Tangente sowie Krümmung (bzw. Normale) von benachbarten Punkten können weiteren Aufschluss darüber liefern, ob verfeinert werden muss. Zitat Müller: “Abhängig vom Gradienten der Fläche bzw. der Tangenten wählt man kleinere Flächen.” (Die Tangenten kann man durch die Partielle Ableitung nach u und v für jeden Punkt bestimmen.)
Herr Müller hat dann eine Kurve gemalt und zwei Punkte darauf, an denen die Normale gleich war, dazwischen war aber eine Beule in der Kurve. Die Kurve war unter den zwei Punkten auch gekrümmt. Was macht man da? Funktioniert das immer?
Kann man sich ja die Krümmung (2. Ableitung) berechnen, wenn die hoch ist: verfeinern.
Funktioniert das denn immer?
Nein, wenn die Fläche links und rechts, da wo man seine beiden Punkte ausgerechnet hat, ganz flach ist und dazwischen ist einer Beule in der Kurve, dann würde man die auch verpassen. Herr Müller meinte darauf, stimmt, es gibt scheinbar kein Verfahren bei dem man sich sicher sein kann. Mit dem oben beschriebenen Verfahren würde man auch eine solche “Beule” finden und verfeinern
Aber findet die Verfeinerung nicht automatisch statt? (Malt mir eine durch Bézier dargestellte Kurve auf, die dort, wo die Krümmung am höchsten ist auch die meisten Punkte anhäuft) Wie kriege ich die Krümmung der Fläche an einer Stelle?
Zweite Ableitung, die erste Ableitung (Tangente) kriege ich bei DeCasteljau ohnehin schon; haben dann länger gemeinsam überlegt, ob es nicht möglich wäre daraus einfach die Krümmung zu bekommen, ohne Aufwendiges Ableiten etc.)
Wie bekommt man die Normale? (Freiformflächen)
Wie funktioniert die Newton-Iteration?
Strahl- und Oberflächengleichung gleichsetzen => nichtlineares Nullstellenproblem
Mit der N-I kann dieses angenähert werden:
Sehstrahl = Koordinatenachse x
Startpunkt -> Punkt x1 in Nähe des gesuchten Nullpunkts: Approximierung durch viele kleine Bounding Volumes um Fläche. Strahl mit diesen schneiden um x1 zu bestimmen.
Man berechnet an der Stelle x1 jetzt die Tangente, da wo die Tangente die x-Achse schneidet, berechnet man den Funtionswert und hat einen neuen Schätzwert x2. Iteration bis die Funktion an der Stelle einen sehr kleinen Wert annimmt, sich der Schätzwert nicht mehr groß ändert, oder ein Maximum an n Iterationen überschritten wurde.
Möglichst eng anliegende, kleine BVs um Teile der Fläche bilden um gute Startwerte für das iterative Verfahren zu haben, wird sonst unperformant oder konvergiert nicht.
Macht man allerdings zu viele kleine BVs wird der Aufwand für die Schnitttests mit den BVs unverhältnismäßig hoch. Das richtige Verhältnis zwischen Aufwand für Newton Iteration und die BV Schnitttests muss man also abwägen.
Mit der N-I kann dieses angenähert werden:
Sehstrahl = Koordinatenachse x
Startpunkt -> Punkt x1 in Nähe des gesuchten Nullpunkts: Approximierung durch viele kleine Bounding Volumes um Fläche. Strahl mit diesen schneiden um x1 zu bestimmen.
Man berechnet an der Stelle x1 jetzt die Tangente, da wo die Tangente die x-Achse schneidet, berechnet man den Funtionswert und hat einen neuen Schätzwert x2. Iteration bis die Funktion an der Stelle einen sehr kleinen Wert annimmt, sich der Schätzwert nicht mehr groß ändert, oder ein Maximum an n Iterationen überschritten wurde.
Möglichst eng anliegende, kleine BVs um Teile der Fläche bilden um gute Startwerte für das iterative Verfahren zu haben, wird sonst unperformant oder konvergiert nicht.
Macht man allerdings zu viele kleine BVs wird der Aufwand für die Schnitttests mit den BVs unverhältnismäßig hoch. Das richtige Verhältnis zwischen Aufwand für Newton Iteration und die BV Schnitttests muss man also abwägen.
Wie erhalte ich die Texturpositionen auf der Ebene?
Damit jeder Texel auf einer Kurve ein gleichlanges Kurvensegment texturiert, muss man mit s(t) = auP’(t) die zurückgelegte Strecke auf der Kurve berechnen. Dieser Weg muss für die Texturierung nur auf den Wertebereich von 0 bis 1 skaliert werden, d.h. eine Division durch die Gesamtstrecke. Im Fall der Bezierkurven ist der gültige Wertebereich für t, das Intervall von 0 bis 1. Eine sinnvolle eindimensionale Texturkoordinate einer Bezierkurve wäre also:
sTexture(t) =0tP’(t) dt 01P’(t)dt mit 0t1
Für eine Bezierfläche könnte man dieses Verfahren auch in u und v Richtung anwenden.
Integral leider nicht trivial lösbar. Alternativ könnte man die Kurve Triangulieren. Die einfach zu berechnenden Strecken zwischen den Punkten nähern das Integral dann abhängig vom Feinheitsgrad der Triangulierung effizient an.
Der naive Ansatz wäre u und v direkt als Texturkoordinaten verwenden.
Wie funktioniert das Zusammenfügen von Bézier-Patches?
G1/C1-Stetiges Zusammenfügen: Die Kontrollpunkte müssen zusammenfallen und die Tangenten müssen kolinear liegen (kontrolliert über letzer/vorletzter bzw. erster/zweiter Kontrollpunkte)
Welche Eigenschaften haben Trimm-Kurven?
Parameterbereich der Flächen wird zusätzlich durch Trimm-Kurven eingeschränkt (z.B. Löcher)
geschlossen
dürfen sich nicht schneiden
konsistent orientiert, d.h. wenn ri der Vater von rj ist, dann haben beide auch unterschiedlichen Umlaufsinn. So kann innnen und außen unterschieden werden.
OpenGL unterstützt getrimmte NURBS-Patches.
geschlossen
dürfen sich nicht schneiden
konsistent orientiert, d.h. wenn ri der Vater von rj ist, dann haben beide auch unterschiedlichen Umlaufsinn. So kann innnen und außen unterschieden werden.
OpenGL unterstützt getrimmte NURBS-Patches.
Wenn ich eine Freiformfläche habe und in der Mitte eine Trimming-Kurve, wie teste ich dann ob ein Punkt in der Kurve liegt?
Strahl in irgendeine Richtung vom Punkt wegschicken. Umgekehrter Umlaufsinn
der Kurven. Zähler hoch/runter zählen bei Ein-/Austritt aus Kurven. Wert des Zählers am Ende sagt aus, ob inner- oder ausserhalb der Kurve.
der Kurven. Zähler hoch/runter zählen bei Ein-/Austritt aus Kurven. Wert des Zählers am Ende sagt aus, ob inner- oder ausserhalb der Kurve.
Wie kann man innerhalb eines getrimmten, ungültigen Bereichs wiederum
einen gültigen Bereich haben?
einen gültigen Bereich haben?
Das zielt auf den eindeutigen Umlaufsinn der Trimmkurven ab. Liegt ein solcher vor, kann anhand der Schnitte eines Strahls mit den Trimmkurven entschieden werden, ob ein Parameterwert-Paar (u, v) gültig ist.
Kann ich den Strahl auch kreuz und quer durch die Kurven laufen lassen.
Ja. Kommt das gleiche bei raus.
Aber hier hab ich jetzt das Loch, jetzt passt aber hier meine Triangulierung nicht mehr?
Dann muss man diese noch annähern an die Löcher und verfeinern.
Was geht in den Vertexshader rein und was raus?
Rein gehen Normale, Vertexposition, Farbe und Texturkoordinaten, sowie globale OpenGL-States. Raus gehen transformierte Vertexposition (Modelviewprojection) und Texturkoordinaten, sowie Varying-Variablen und Vertexfarbe.
Was geht in den Fragment-Shader rein und raus?
Was muss in Vertexshader gemacht werden um die Pipeline zu simulieren?
Transformierte Vertexposition (Modelviewprojection) und Normale (Transponiert Inverse Modelviewmatrix - Normale muss nach Modelview weiterhin senkrecht sein). Beleuchtung und transformierte Texturkoordinaten.
Was ist die Aufgabe des Vertexshaders? Was nicht? Auf welchen Daten arbeitet er?
Arbeitet nur auf Eckpunktdaten: Eckpunkttransformation(Welt->Kamerakoord., Transformation ins kanonische Volumen), Normalentransformation, Beleuchtung in Kamerakoordianten, ...
Was nicht?
Clipping am kanonischen Volumen(-w..+w), perspektivische Division, Color Clamping, ...
Was nicht?
Clipping am kanonischen Volumen(-w..+w), perspektivische Division, Color Clamping, ...
Was ist die Aufgabe des Fragmentshaders? Was nicht?
Arbeitet am Ende der Pipeline: Pixelfarbe festlegen, Texturzugriff, Effekte wie z.B. Nebel
Was nicht?
Depth-Test, Stencil-Test, Alpha-Blending (alles danach)
Was nicht?
Depth-Test, Stencil-Test, Alpha-Blending (alles danach)
Was sind uniform/varying Parameter? (Shader)
Varying Variablen sind Variablen, deren Wert im Vertexshader pro Eckpunkt berechnet wird. Aus diesen Werten wird im Fragmentshader für jeden Pixel jeweils ein interpolierter Wert berechnet (zB. Farbe, Normale, Position und Texturkoordinaten).
Mit Uniform Variablen, können Daten, die sich vergleichsweise selten ändern(konstanter Wert für Primitiv), zwischen Applikation und Shader ausgetauscht werden.Benutzerdefinierte Daten können so in den Shader geladen werden. Über Built-in Uniforms kann auch auf OpenGL States zugegriffen werden (zB. Modelviewmatrix, Projektionsmatrix, Texturmatrix, Licht-States), diese werden automatisch gesetzt. Innerhalb der Shader besteht nur Lesezugriff.
Mit Uniform Variablen, können Daten, die sich vergleichsweise selten ändern(konstanter Wert für Primitiv), zwischen Applikation und Shader ausgetauscht werden.Benutzerdefinierte Daten können so in den Shader geladen werden. Über Built-in Uniforms kann auch auf OpenGL States zugegriffen werden (zB. Modelviewmatrix, Projektionsmatrix, Texturmatrix, Licht-States), diese werden automatisch gesetzt. Innerhalb der Shader besteht nur Lesezugriff.
Wie funktioniert das Shadowmapping?
Idee:
1. Kamera in Lichtquelle setzen (Spotlight)
2. Z-Buffer von Lichtquelle aus in Textur kopieren -> Shadow Map
3. Projektives Texturmapping mit Shadow Map:
- "Nachbau" der OpenGL-Pipeline aus Sicht der Lichtquelle und Ablegen in der Textur-Matrix
- Projektive Texturkoordinaten = Transformation der Texturkoordinaten jedes Eckpunkts mit dieser Textur-Matrix
4. Pro Pixel Z Wert in Textur an (s/q, t/q) mit Z Wert in Licht Koordinatensystem (r/q) vergleichen
1. Kamera in Lichtquelle setzen (Spotlight)
2. Z-Buffer von Lichtquelle aus in Textur kopieren -> Shadow Map
3. Projektives Texturmapping mit Shadow Map:
- "Nachbau" der OpenGL-Pipeline aus Sicht der Lichtquelle und Ablegen in der Textur-Matrix
- Projektive Texturkoordinaten = Transformation der Texturkoordinaten jedes Eckpunkts mit dieser Textur-Matrix
4. Pro Pixel Z Wert in Textur an (s/q, t/q) mit Z Wert in Licht Koordinatensystem (r/q) vergleichen
Formel für Projektives Texturmapping aufschreiben.
Wo findet der z-Wert-Vergleich für das Shadowmapping statt?
Im Fragmentshader. Nach Homogenisierung der Texturkoordinaten. Nachgestellte Lichtpipeline aufgeschrieben und erklärt wann ein Objekt im Schatten liegt und wann nicht. (shadowmap(s/q,t/q) == r/q: dann wird beleuchtet).
Wie komme ich an Za(Tiefe in Textur) und wie an Zb („echte“ Tiefe)?
Za: Z-Wert in Textur an (s/q, t/q)
Zb: Z-Wert in Licht-Koordinatensystem (r/q)
Zb: Z-Wert in Licht-Koordinatensystem (r/q)
Was steht im Vektor (s,t,r,q)T drin?
s/q t/q liefern mir die Texturkoordinaten, an denen man den minimalen Tiefenwert aus der Shadow Map ablesen kann. r/q ist die Tiefe des zu untersuchenden Fragments aus Sicht der Lichtquelle. Vergleich von r/q mit dem Tiefenwert an der Stelle s/q t/q in der Shadow Map sagt aus, ob das Fragment im Schatten liegt oder nicht.
Was wird in welchem Shader berechnet? (Shadow Mapping)
Im Vertexshader wird mittels Texturmatrix die “nachgebaute” Licht-Pipeline auf jeden Eckpunkt angewandt.
Im Fragmenshader findet der Tiefenvergleich statt.
Im Fragmenshader findet der Tiefenvergleich statt.
Was ist denn ein Problem von Shadow Mapping?
Aliasing bei der Schattenberechnung. Effekt größer wenn Lichtquelle weiter entfernt: 1 Pixel der Shadowmap deckt mehrere Pixel im Framebuffer ab.
Lösungsmöglichkeiten:
höhere Auflösung der SM
PCF: Tiefenvergleich mit Nachbar-Texeln aus der SM und Interpolation
post-perspective SMs
ShadowMap mehrmals aus leicht unterschiedlichen Positionen rendern und zu einer Akkumulieren
Selbstverdeckung (Schatten auf Oberflächen, wo kein Schatten sein soll)
Polygonoffset
Front face culling
Auflösung der ShadowMap erhöhen
Clamping von ungültigen Werten in der Shadowmap
Nur Spotlights
Z-Fighting
Lösungsmöglichkeiten:
höhere Auflösung der SM
PCF: Tiefenvergleich mit Nachbar-Texeln aus der SM und Interpolation
post-perspective SMs
ShadowMap mehrmals aus leicht unterschiedlichen Positionen rendern und zu einer Akkumulieren
Selbstverdeckung (Schatten auf Oberflächen, wo kein Schatten sein soll)
Polygonoffset
Front face culling
Auflösung der ShadowMap erhöhen
Clamping von ungültigen Werten in der Shadowmap
Nur Spotlights
Z-Fighting
Welche Probleme ergeben sich durch nicht linearen z-Wert beim Shadowmapping?
Flackern bei entfernten Objekten (Z-Fighting) (“Mal Schatten, mal nicht” bei Bewegung)
Könnten wir beim Shadow Mapping statt der Tiefe der vordersten auch die Tiefe der hintersten Punkte der Objekte abspeichern (Backfaces)?
Ja, das funktioniert mittels Frontface-Culling bevor aus Sicht der Lichtquelle gerendert wird. Danach muss das Culling wieder deaktiviert werden. Selbstverdeckung wird minimiert ohne Polygonoffset.
Könnten wir auch die Tiefe von Punkten die mitten im Objekt liegen in der Shadow Map abspeichern?
Bin darauf gekommen dass auch dies funktionieren würde, da man für im Schatten liegenden Objekte im Vergleich immer noch größere Tiefenwerte erhielte und somit korrekt schattieren würde. Dann erläuterte Prof. Müller mir den Hintergrund dieser zwei etwas eigenartigen Fragen:
Wenn man zwei Shadow Maps, einmal von den Vorder-, dann von den Rückseiten der Objekte erstellt und dann diese Tiefenwerte mittelt bekommt man Durchschnittswerte die sich auf einer Z-Achse mit viel geringerer Tiefenauflösung abspeichern lassen, was Speicherplatz spart (bzw. kann man dafür im Gegenzug die räumliche Auflösung der Shadow Map erhöhen, was das Aliasing Problem reduziert).
Was genau macht die erste Matrix in der virtuellen Pipeline?
Skalierung und Translation, danach hat man nur noch Texturkoordinaten
von 0 bis 1.
von 0 bis 1.
Triangulieren Sie nach Delauny und nennen Sie die Eigenschaften.
Anzahl der Triangulierungen einer endlichen Punktmenge S ist endlich, d.h. es gibt eine optimale Triangulierung, die den minimalen Winkel maximiert.
Analoge Definition: für jedes Dreieck ist kein weiterer Punkt im Umkreis des Dreiecks. Aber es kann mehrere dieser Lösungen geben.
Ein Problem der Delaunay Triangulierung ist, daß als Resultat immer die konvexe Hülle entsteht. Daher braucht man Algorithmen, die nachträglich die Kanten entfernen, die „man nicht haben will“.
Analoge Definition: für jedes Dreieck ist kein weiterer Punkt im Umkreis des Dreiecks. Aber es kann mehrere dieser Lösungen geben.
Ein Problem der Delaunay Triangulierung ist, daß als Resultat immer die konvexe Hülle entsteht. Daher braucht man Algorithmen, die nachträglich die Kanten entfernen, die „man nicht haben will“.
Algorithmus der Delauny Triangulierung:
Suche einen Punkt am Rand (z.B.x-Koordinate). Suche nächstgelegenen Punkt(kürzester Abstand). Schleife über alle Punkte. Berechne Winkel im Dreieck am neuen Punkt Wähle Dreieck mit max. Winkel Rekursion über 2 neue Kanten Schleife über alle Punkte im vorderen Halbraum Berechne Winkel im Dreieck am neuen Punkt Wähle Dreieck mit max. Winkel.
Triangulierung in 3D:
Mit Delaunay, allerdings mit Tetraedern Minimaler Winkel in der Tetraeder-Spitze maximieren (Raumwinkel) Problem: welche der drei Flächen kann ich wegwerfen? Hier gibt es verschiedene
Metriken…
Triangulierung in 3D:
Mit Delaunay, allerdings mit Tetraedern Minimaler Winkel in der Tetraeder-Spitze maximieren (Raumwinkel) Problem: welche der drei Flächen kann ich wegwerfen? Hier gibt es verschiedene
Metriken…
Gegeben ist eine Punktmenge in Kreisform: Wie sieht nun die optimale Triangulierung und das zugeho ̈rige Voronoi Diagramm aus?
viele gültige Triangulierungen wegen Kreis. Siehe Definition.
Voronoi ist Sternartig
Voronoi ist Sternartig
Ein Delaunay-Diagramm ist uneindeutig. Ist dann auch dessen Voronoi-Diagramm uneindeutig?
Nein
Wie sieht die Delaunay-Triangulierung fu ̈r folgende Figur aus?
siehe Prüfung CV.pdf
2 gültige Lösungen
2 gültige Lösungen
Voronoi-Diagramm erstellen und Eigenschaften nennen.
Def.: Die Menge aller Punkte, die näher zum Punkt P sind, als zu allen anderen Punkten. Der duale Graph zur Delaunay Triangulierung.
Einfacher Algorithmus:
Nimm die Delaunay-Kanten
Berechne Schnittpunkt der Mittelsenkrechten
Einfacher Algorithmus:
Nimm die Delaunay-Kanten
Berechne Schnittpunkt der Mittelsenkrechten
Wenn ich jetzt die Form einer 1 hab, was kommt dann raus?
Konvexe Hülle. Man muss dann aufwändig die Kante entfernen.
Was ist denn ein dualer Graph?
Für jede Fläche gibt es einen Punkt und für jede Kante existiert eine Kante, die zwei benachbarte Regionszentren verbindet. Die Graphen sind ineinander überführbar
Raytracing vs. Rasterisierung
Raytracing:
Strahl aus Kamerazentrum (in Weltkoordinaten) durch Raster einer virtuellen Bildebene. Der Strahl muss gegen die Geometrie auf Schnittpunkte getestet werden. Prinzipiell muss dabei mit jedem Objekt ein Schnitttest durchgeführt werden. Der vorderste Schnittpunkt ist das sichtbare Objekt. In Abhängigkeit der Materialeigenschaften -> Schattenfühler oder Reflexion/ Brechung und Weiterverfolgung
+ bessere Beleuchtung( echte Schatten, Reflexionen, Lichtbrechung
- langsamer, keine Hardware
Rasterisierung:
Transformation der Kamera in Ursprung + perspektivische Projektion
+ sehr performant, da jedes Polygon unabh. von anderen betrachtet werden kann -> parallelisierbar
Strahl aus Kamerazentrum (in Weltkoordinaten) durch Raster einer virtuellen Bildebene. Der Strahl muss gegen die Geometrie auf Schnittpunkte getestet werden. Prinzipiell muss dabei mit jedem Objekt ein Schnitttest durchgeführt werden. Der vorderste Schnittpunkt ist das sichtbare Objekt. In Abhängigkeit der Materialeigenschaften -> Schattenfühler oder Reflexion/ Brechung und Weiterverfolgung
+ bessere Beleuchtung( echte Schatten, Reflexionen, Lichtbrechung
- langsamer, keine Hardware
Rasterisierung:
Transformation der Kamera in Ursprung + perspektivische Projektion
+ sehr performant, da jedes Polygon unabh. von anderen betrachtet werden kann -> parallelisierbar
Tags:
Quelle: http://vokker.net
Quelle: http://vokker.net
AnSim Inhalte
Die Vorlesung vermittelt die grundlegenden Algorithmen und Verfahren aus den Bereichen der Simulation und Animation. Den Kern bilden dabei Verfahren zur Interpolation von Positionen und Orientierungen im Zusammenhang mit Weg-Zeit-Diagrammen (Animationen), sowie die physikalischen Gesetzmäßigkeiten der Kinetik und Kinematik mit den entsprechenden Simulationsmethoden. Im Vordergrund stehen dabei vor allem echtzeitfähige Verfahren zur Anwendung in Virtuellen Welten oder Computerspielen.
Themenübersicht
Interpolation von Positionen und Orientierung entlang von Kurven
Euler-Winkel, axis-angle und Quaternionen
Grundlagen der Kinetik und Kinematik
Simulation der Dynamik von Massepunkten
Simulation der Dynamik von Festkörpern
Themenübersicht
Interpolation von Positionen und Orientierung entlang von Kurven
Euler-Winkel, axis-angle und Quaternionen
Grundlagen der Kinetik und Kinematik
Simulation der Dynamik von Massepunkten
Simulation der Dynamik von Festkörpern
SE2 Inhalte
Auf der Basis allgemeiner Grundlagen zu informationellen Prozessen und zum Information Retrieval (Teil 1) wird auf die Problematik der Recherche in verteilten Informationsbeständen und auf WWW-Suchmaschinen eingegangen (einschließlich Konzepte von Clearinghouses). Ein weiterer Schwerpunkt (Teil 2) sind die Visualisierungsansätze und -probleme beim Textretrieval und bei der Faktenrecherche, die Integration von Text und Faktenrecherche auf der Basis von Modellen und Theorien des künstlerischen Designs vs. softwareergonomische Ansätze. Visualisierungsansätze mit ihren ästhetischen Anforderungen gewinnen vor allem in Kontext des WWW immer stärker an Bedeutung.
Weitere wichtige Themen waren Ontologien, Kognition und Kognitivität
Weitere wichtige Themen waren Ontologien, Kognition und Kognitivität
Kartensatzinfo:
Autor: cobocards-admin
Oberthema: Informatik
Thema: Computergrafik
Schule / Uni: Universität Koblenz-Landau
Ort: Koblenz
Veröffentlicht: 18.10.2010
Schlagwörter Karten:
Alle Karten (107)
keine Schlagwörter