15.11.2007 Mathematics for 3D Game Programming & Computer Graphics 4. Kapitel 3D Engine Geometry Anne Adams & Katharina Schmitt Universität Trier Fachbereich IV Proseminar Numerik Wintersemester 2007/08 Prof. Schulz
: 4. Kapitel 3D Engine Geometry Gliederung 4.1 Geraden im 3D-Raum 4.2 Ebenen im 3D-Raum 4.3 Der View Frustum 4.4 Perspektivisch-korrekte Interpolation 4.5 Projektionen 2
4.1 Geraden im 3D- Raum 4.1 Geraden im 3D-Raum Eine Gerade durch den Punkt S in Richtung V ist definiert durch: P(t) = S + tv mit t Für S = P1 und V = P2 P1 und t [0,1] gilt: P(t) = (1-t)P1 + tp2, wobei dies der Strecke zwischen den Punkten P1 und P2 entspricht. 3
4.1 Geraden im 3D- Raum 4.1.1 Abstand zwischen Punkt und Gerade 4
4.1 Geraden im 3D- Raum 4.1.2 Abstand zwischen zwei Geraden 5
Beweis: 4.1 Geraden im 3D- Raum Partielle Ableitungen: Matrixschreibweise: 6
Ergebnis: 4.1 Geraden im 3D- Raum Werte für t1 und t2 wieder in f(t1,t2) einsetzen, Wurzel ziehen Abstand der beiden Geraden i) =0 Geraden sind parallel ii) iii) Ist f(t1,t2)=0 Schnittpunkt Sonst Geraden sind windschief 7
4.2 Ebenen im 3D- Raum 4.2 Ebenen im 3D-Raum Ebenengleichung ist gegeben durch: N*(Q-P)=0 Andere Darstellungsform: Ax + By + Cz + D = 0, mit (A, B, C) = N und D= -N*P 8
4.2 Ebenen im 3D- Raum gibt den Abstand von der Ebene zu einer parallelen Ebene, die durch den Ursprung geht, wieder d = N*Q + D; d ist, wenn N normiert ist, der Abstand der Ebene zu einem bel. Punkt Q i) d=0, Q liegt in der Ebene ii) d>0, Q liegt auf der pos. Seite der Ebene iii) d<0, Q liegt auf der neg. Seite der Ebene 9
4.2 Ebenen im 3D- Raum Ebene kann auch als 4D Vektor aufgefasst werden: <N,D> = (x, y, z, D) <N,D> entspricht N*Q + D = 0, wobei die Gleichung für alle Q, die in der Ebene liegen, erfüllt ist Abstand d = N*Q + D kann man nun auch schreiben als: d = <N,D>*Q (Q liegt in der Ebene wenn d =<N,D>*Q = 0) Beachte: Q muss in einen 4D Vektor umgewandelt werden und erhält dabei die w-koordinate 1. 10
4.2 Ebenen im 3D- Raum 4.2.1 Schnittpunkt Gerade - Ebene Geg.: Gerade: P(t) = S + tv und Ebene: N*Q + D = 0 N*P(t) + D = 0 für t lösen i) N*V = 0 Gerade ist parallel zur Ebene ii) N*S + D = 0 Gerade liegt in der Ebene iii) Sonst t in Geradengleichung einsetzen liefert den Schnittpunkt In 4D: wobei L=<N, D> 11
4.2 Ebenen im 3D- Raum 4.2.2 Schnittpunkt dreier Ebenen Drei bel. Ebenen sind gegeben durch: L1=<N1,D1>, L2= <N2,D2>, L3=<N3,D3> L1*Q = 0 L2*Q = 0 Lösen der Gleichungen liefert Q L3*Q = 0 wenn M invertierbar: 12
4.2 Ebenen im 3D- Raum Zwei nicht-parallele Ebenen L1 und L2 schneiden sich in einer Geraden Berechnung der Schnittgeraden: Richtungsvektor der Geraden steht senkrecht auf den beiden Normalenvektoren V=N1*N2 Punkt Q der Geraden durch Konstruktion einer Ebene L3 =<V,0> und anschließender Berechnung des Schnittpunktes der drei Ebenen: P(t)= Q+tV 13
4.3 Der View Frustum 4.3 Der View Frustum View Frustum entspricht dem, was eine Kamera sehen würde, wenn sie durch ein Fenster schaut Camera space (= eye space) ist das Koordinatensystem mit Kamera im Ursprung, die y-achse zeigt nach oben, die x-achse nach rechts und die z-achse (in OpenGL) entgegen der Kamerablickrichtung 14
4.3 Der View Frustum 4.3.1 Sichtfeld Projektionsebene: Ebene, parallel zur near/far plane, die im Abstand e (Brennweite) zur Kamera liegt und vom view frustum bei fest vorgegebenen x- und y-koordinaten geschnitten wird Horizontales Sichtfeld: α: horizontaler Sichtfeld-Winkel 15
4.3 Der View Frustum aspect ratio beschreibt das Bildseitenverhältnis eines Bildschirms a:= Höhe/Breite Vertikales Sichtfeld: β: vertikaler Sichtfeld-Winkel 16
Anmerkung: 4.3 Der View Frustum Die Normalenvektoren der sechs frustum planes zeigen ins Innere des view frustums. Die right, left, bottom und top planes gehen durch den Ursprung D = 0 Near plane: der Normalenvektor zeigt in Kamerablickrichtung D = -n Far plane: der Normalenvektor zeigt entgegengesetzt zur Kamerablickrichtung D = f 17
4.4 Perspektivisch-korrekte Interpolation 4.4 Perspektivisch-korrekte Interpolation Die Eckpunkte von z. B. Dreiecken enthalten neben der Lage auch Informationen über Farben und Textur (sog. Vertexattribute) auch diese Informationen müssen richtig interpoliert werden Damit Texturen nicht verzerrt werden, verläuft die Interpolation bei modernen Grafikkarten nicht linear 18
4.4 Perspektivisch-korrekte Interpolation 4.4.1 Tiefeninterpolation 19
4.4 Perspektivisch-korrekte Interpolation Beschreibung der Dreiecksseite als Gerade: ax + bz = c Strahlensatz liefert: p / x = -e / z Geg.: <x1,z1> <x2,z2> Endpunkte der Dreiecksseite <p1,-e> <p2,-e> Schnittpunkte mit projection plane p3=(1-t)p1 + tp2 interpolierte x-koordinate auf der Projektionsebene (t e [0,1]) Ges.: interpolierter Wert von z3 20 Kehrwert der z-koordinate kann linear interpoliert werden
4.4 Perspektivisch-korrekte Interpolation 4.4.2 Vertexattribute-Interpolation Vertexattribute können linear interpoliert werden: Seien z1 und z2 Eckpunkte mit zugeordneten Attributen b1 und b2, b3 ist das interpolierte Attribut zum interpolierten Wert z3 aus und folgt: Grafikprozessoren berechnen zuerst den linear interpolierten Wert 1/z, dann dessen Kehrwert, der dann mit dem linear interpolierten Wert b/z multipliziert wird. 21
4.5 Projektionen 4.5 Projektionen Wir wollen die 3D-Szene auf 2D-Bildschirm abbilden es wird eine Gerade vom Ursprung zum Punkt P konstruiert; Schnittpunkt der Gerade mit Projektionsebene liefert das Bild von Punkt P x- und y-koordinaten des Bildpunktes kann man berechnen durch: und für die z-koordinate erhalten wir immer e um sinnvolle Tiefeninformationen zu erhalten erfolgt Umwandlung in homogene 4D-Koordinaten 22
4.5 Projektionen 4.5.1Perspektivische Projektionen View frustum wird in homogeneous clip space umgewandelt Homogeneous clip space ist ein Würfel mit dem Ursprung im Mittelpunkt, der auf der x-,y- und z-achse von 1 bis 1 reicht 23
Umwandlung der Koordinaten 4.5 Projektionen Geg: normierter Punkt P =(Px,Py,Pz,1) im view frustum die auf die near plane projizierten x- und y- Koordinaten von P sind: und mit und Umwandlung der x-, y- und z-koordinaten durch: 24
Herleitung von z : 4.5 Projektionen Geg.: Für z soll folgende Zuordnung gelten: -n -1 und -f 1 und Durch Umformen erhält man: und Dies liefert die Gleichung für z : 25
4.5 Projektionen Der Punkt P = <x, y, z > ist äquivalent zum normierten 4D Punkt P = <-x Pz, -y Pz, -z Pz, -Pz > im homogeneous clip space, mit,, Dies liefert uns eine 4x4-Matrix Mfrustum, die einen beliebigen Punkt P aus dem view frustum in einen normierten Punkt P im homogeneous clip space wandelt: 26
4.5 Projektionen Spezialfall: MInfinite Es ist möglich, ein view frustum zu konstruieren, bei dem die Tiefe (=f) nicht bekannt ist: Dies erlaubt uns, einen Punkt mit w-koordinate 0 richtig zu übertragen: Q = <Qx,Qy,Qz,0> Minfinite*Q= 27
4.5 Projektionen 4.5.2 Parallelprojektionen keine perspektivische Verzerrung 28 Da keine perspektivische Verzerrung stattfindet, können die Koordinaten linear interpoliert werden:
4.5 Projektionen,, Dies liefert uns die Matrix Mortho: 29
4.5 Projektionen 4.5.3 Extrahieren der Frustum Planes Umwandlung vom homogeneous clip space zum camera space Geg.: L: Ebene im camera space L : Ebene im homogeneous clip space M: Mfrustum(M ist orthogonal) Die Umwandlung der Ebenen erfolgt also durch folgende Gleichungen: near = M4 + M3 far = M4 - M3 left = M4 + M1 bottom = M4 + M2 right = M4 - M1 top = M4 - M2 30
: 4. Kapitel 3D Engine Geometry Quellen: Eric Lengyel: Mathematics for 3D Game Programming & Computer Graphics, 2nd edition, Charles River Media, Inc., Higham, Massachusetts, 2004 31
Vielen Dank für Ihre Aufmerksamkeit!