(3) Weg-Zeit-Verhalten Vorlesung „Animation und Simulation“ S. Müller UNIVERSITÄT KOBLENZ · LANDAU Wdh: Bogenlängentabelle Pfad festlegen (P0, P1, P2 and P3) 3 2 r u 1 u P0 31 u u P1 31 u u 2 P2 u 3 P3 Berechne Position für Zeitpunkt t, i.e. r(t) Ende s t Start constant velocity UNIVERSITÄT KOBLENZ · LANDAU u 0,000 0,125 0,250 0,375 0,500 0,625 0,750 0,875 1,000 0,125 0,250 0,375 0,500 0,625 0,750 0,875 1,000 0,125 0,250 0,375 0,500 0,625 0,750 0,875 1,000 H-Patch 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 acc. arc length (s) 0,00 2,84 5,13 7,09 8,80 10,32 11,98 14,40 18,16 22,16 25,10 27,15 28,62 30,09 32,14 35,07 39,08 42,84 45,26 46,91 48,43 50,15 52,11 54,40 57,24 S. Müller - 2 - Steuerung der Weg-Zeit-Funktion (Voraussetzung: der Pfad ist in 3D definiert, gesteuert wird das Weg-Zeit-Verhalten entlang des Pfades) Es gibt mehrere Möglichkeiten Explizite Modellierung der Weg-Zeit-Funktion durch interaktive Spline-Tools (nicht ganz einfach zu steuern…) Kontrolle durch Definition des Geschwindigkeitsverhaltens … oder Beschleunigung … oder eine Kombination von allen Herausforderung: Dem Benutzer das geeignete Modellierungstool zur Verfügung stellen UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 3 - Weg-Zeit-Kurven s s 1) Start und Ende: abrupt s 2) Bewegt sich zurück t s 3) Bleibt stehen t s Startet nicht am Anfang und kommt vorher an s Start/Ende: weich t UNIVERSITÄT KOBLENZ · LANDAU t Wartet einige Zeit und kommt nicht bis zum Ende t t S. Müller - 4 - Ease-in/Ease-out Häufige Modellierungsunterstützung: Ease-In/EaseOut (sacht/vorsichtig rein und raus) 1 s 0 0 1 UNIVERSITÄT KOBLENZ · LANDAU Der Benutzer legt den Pfad fest und die Gesamtlaufzeit der Sequenz Das Weg-Zeit-Verhalten wird automatisch festgelegt, so dass die Bewegung am Start langsam beschleunigt und zum Ziel hin abbremst Gesucht ist eine Funktion, die dieses Verhalten automatisch modelliert. t S. Müller - 5 - Ease-in/Ease-out mit Sinusfunktion sin x 1 1 2 2 1 0 t 1 0 t 2 t x t 0 Gute Wahl: Sinus-Funktion Reparametrisierung: 1 1 sin t 2 2 2 s 2 2 UNIVERSITÄT KOBLENZ · LANDAU 0 1 sin t 1; 2 0 sin t 1 2; 2 0 t 1 1 1 0 sin t 1; 2 2 2 1 0 t 1 0 t 1 S. Müller - 6 - Ease-in/Ease-out mit Sinusfunktion 1 1 sin t 2 2 2 s 1 Vorgehen t 0 0 1 Vorteil: Die Ableitung ist 0 bei t=0 und t=1; die Bewegung beginnt/endet mit v=0 UNIVERSITÄT KOBLENZ · LANDAU Für gegebene Zeitpunkte (z.B. 1/60 sec) wird s bestimmt Mit Hilfe der Bogenlängentabelle wird der dazugehörige Parameter u auf dem Pfad ermittelt, und damit die gesuchte Position r(u) Nachteil: Nirgendwo konstante Geschwindigkeit Eine Erweiterung findet sich bei R. Parent, so dass auch ein konstantes Liniensegment eingefügt wird S. Müller - 7 - Nachtrag: Zeit Für einen Film sind die Zeitintervalle konstant. Für eine interaktive Anwendung nimmt man am besten die Renderingzeit für den letzten Frame Eine Möglichkeit, die Zeit abzufragen bietet uns GLUT mit glutGet(GLUT_ELAPSED_TIME) Zeit in Millisekunden seit glutInit(...) UNIVERSITÄT KOBLENZ · LANDAU #include "GL/glut.h" int frame = 0, time, timebase = 0; ... display() { ... time = glutGet(GLUT_ELAPSED_TIME); frame++; if (time - timebase > 1000) { fps = frame*1000.0/(timetimebase)); timebase = time; frame = 0; } Bsp.: ca. jede Sekunde die Frames pro Sekunde ermitteln S. Müller - 8 - Parabolische Ease-in/Ease-out Kurve UNIVERSITÄT KOBLENZ · LANDAU Geschwindigkeitskurven 1 s Nochmal: konstante Geschwindigkeit bei normierter Weg-Zeit-Funktion Annahme: wir beginnen beim Start und enden am Ziel s0 0; s1 1 Dann: ds vt dt; s t t 0 v0 0 v st v0 t 0 1 t 0 Die Fläche unter der Kurve entspricht dem zurückgelegten Weg (muss 1 sein) v0 1 UNIVERSITÄT KOBLENZ · LANDAU 0 0 1 t S. Müller - 10 - Angabe der Beschleunigung s Ease-in/Ease-out läßt sich auch durch Beschleunigung definieren 4 Parameter: acc, dec, t1, t2 Da die Bewegung mit v=0 starten und enden soll, müssen die Flächen gleich sein 1 Durch Angabe von 3 Parametern kann vierter bestimmt werden t t2 1 t2 1 t2 1 v v0 Fläche muss 1 sein acc t1 dec t2 t1 0 t1 0 t a acc 0 0 t t1 Flächen müssen gleich sein UNIVERSITÄT KOBLENZ · LANDAU dec S. Müller - 11 - a Bsp. (1 Parameter) a 0 Bestimmen sie die Easein/Ease-out-Kurve, wobei Zeit und Betrag bei Beschleunigung und Abbremsung gleich seien Bestimmen sie a unter der Annahme, dass s(1)=1 0 t t : t t 1 t : 1 t t 1 : dv a dt; v t t 0 dt ; dv 0 v t 0 t v t t dv a dt ; v t v 1 t t 1 t UNIVERSITÄT KOBLENZ · LANDAU t t 0 1 t a a t v at a t vt a t 0 t a 1 t t vt vt a t vt v1 t a t 1 t a 1 t v1 t a t S. Müller - 12 - t 1 Bsp. (1 Parameter) ds a t dt; 0 t t : t t 1 t : 1 t t 1 : s t t 0 0 a t dt ; ds s t s t t t ds s t s 1 t 1 st at 2 2 st st a t t t 1 a t t t 2 1 2 1 2 1 1 1 s t s t at at a t a t a 1 t dt ; 2 2 1 t 1 1 at 1 t at 1 t a 2 2 t s1 1 at 1 t 1 a UNIVERSITÄT KOBLENZ · LANDAU 1 t 1 t 1 st a t 2 2 1 s1 t a t 1 t t 2 S. Müller - 13 - Lösung Gegeben: Parameter t Dadurch ist die Beschleunigung/Bremsung definiert mit a 1 t 1 t 1 1 at 1 t at 1 t a 2 2 s 1 1 a t t t 2 1 2 at 2 t 0 v 1 1 t Dies hätte man auch aus der a t Geschwindigkeitskurve t berechnen können, da die 0 a Fläche unter der Kurve 1 1 t 1 t sein muss 1 1 1 a t 2 a t 1 2t a t 2 2 2 UNIVERSITÄT KOBLENZ · LANDAU 0 0 t a t t t 1 a 1 t t 1 t 1 t t 1 t 1 t S. Müller - 14 - Beispielprogramm float Animation::ease( float t, float Dt) { s float s; 1 float a = 1.0/Dt/(1-Dt); 1 a t t t 2 if (t < Dt) s = 0.5*a*t*t; 1 at 2 else if (t < (1 - Dt)) 0 t s = a*Dt*(t - 0.5*Dt); else s = a*Dt*(1-Dt)+a*t*(1-0.5*t)-0.5*a; return (s); } a 1 t 1 t 1 1 at 1 t at 1 t a 2 2 2 UNIVERSITÄT KOBLENZ · LANDAU t t 1 S. Müller - 15 - Beispiel: Pfade Gleiche Parameterintervalle Konstante Geschwindigkeit UNIVERSITÄT KOBLENZ · LANDAU Ease-in/Ease-out S. Müller - 16 - Allgemeine Geschw.diagramme Lässt man den Benutzer v oder a frei definieren (z.B. Angabe einer Geschwindigkeit pro Pfad-Kontrollpunkt) so ist die Dauer der Bewegung dadurch festgelegt. Soll die Bewegung aber genau eine definierte Zeit (Frameanzahl) dauern, so ist immer die Randbedingung s(1)=1 das Problem. Es folgen ein paar Ansätze, wie man das Problem lösen kann. UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 17 - Geschw.diagramme m. Constraints „Relative“ Geschwindigkeiten v „Maximale“ Geschw.keiten v t 0 t 0 1 Die absolute Geschwindigkeit wird gesetzt/verändert aus der Bedingung, dass die Fläche 1 sein muss. Problem: der Benutzer kann keine festen v - Werte definieren. UNIVERSITÄT KOBLENZ · LANDAU 1 Der Benutzer definiert die max. Geschwindigkeit pro Punkt; der Verlauf der Kurve wird so verändert, dass die Fläche 1 ist. Problem: ungewollte Beschleunigungen oder sogar neg. Geschwindigkeiten (Position wandert zurück) S. Müller - 18 - Weg-Zeit-Spline-Editor s Man gibt die Zeitpunkte an, bei denen man verschiedene Orte erreichen will. Man gibt für diese Positionen auch die Geschwindigkeiten an, diese resultieren in Tangenten an den Punkten Realisierung durch HermiteSplines (im Weg-ZeitDiagramm) 1 t 0 t1 t2 t3 1 0 t1 t2 t3 1 0 t1 t2 t3 1 v t s 1 UNIVERSITÄT KOBLENZ · LANDAU t S. Müller - 19 - Zeit-Parametrisierte Raumkurven Bei der letzten Variante gibt es keine Trennung zwischen Pfad und Weg-Zeit-Diagramm Man gibt bei der Definition des Pfades für jeden Kontrollpunkt auch den Zeitpunkt an, wann man dort sein will. Die Kurve ist bzgl. der Zeit t parametrisiert. Interpolation erfolgt durch BSplines (Knotenvektor ist durch die t-Parameter bestimmt) UNIVERSITÄT KOBLENZ · LANDAU P2 t 10 P3 t 35 P5 P1 t 80 t 0 P4 t 60 Dadurch ist das gesamte Weg-ZeitVerhalten im Raum festgelegt (inkl. Geschwindigkeit und Beschleunigung) S. Müller - 20 - Blickrichtung UNIVERSITÄT KOBLENZ · LANDAU Blickrichtung Bis jetzt haben wir einige Lösungen zur Interpolation des Augpunkts (oder auch der Position eines Objekts) diskutiert. Das Problem ist nun die Interpolation der Blickrichtung (- diese ist etwas einfacher, als der allgemeine Fall einer Objektorientierung). UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 22 - Variante 1 (waagrechter Horizont) y u u v y y x v v x x Die Variante 1 ist die bereits vorgestellte: die Blickrichtung v ist die Tangente an den Pfad, wobei „oben“ (u) festgelegt ist. Kamerakoordinatensystem (v zeigt in Richtung der negativen z-Achse): x v u y x v UNIVERSITÄT KOBLENZ · LANDAU Problem: Senkrechter Flug Keine Neigung gegen die Horizontale Nicht immer, was man will… v S. Müller - 23 - Variante 2: Frenet-Frame n „Das begleitende Dreibein einer Raumkurve“ Für jeden Punkt r(u) ist die Tangente v durch die 1. Ableitung gegeben. b v b b v n r ' ' u Die 2. Ableitung r‘‘(u) zeigt in Richtung der Krümmung Aus dem Kreuzprodukt erhält man die Binormale b b r ' ' u r ' u … und schließlich die Normale n UNIVERSITÄT KOBLENZ · LANDAU v n v r ' u n b v n b v b v Für jeden Punkt wäre die Kamera definiert, aber … S. Müller - 24 - n Frenet-Frame: Probleme v n b v v b ? n n b b Kamera in Bereichen ohne Krümmung (unstetig oder Null) nicht definiert Lösung: Interpolation Keine Krümmung: keine Veränderung von v UNIVERSITÄT KOBLENZ · LANDAU v n z.B. Winkel zwischen n vorher und nachher interpolieren In Bereichen negativer Krümmung zeigt die Normale nach unten (Kamera steht auf dem Kopf) S. Müller - 25 - Variante 3: eigener COI-Pfad y y v y v x y v y x v x v x x Die Blickrichtung wird durch den COI (center-of-interest) festgelegt: An einem festen Punkt in der Umgebung oder auf einem Objekt oder durch einen eigenen Pfad UNIVERSITÄT KOBLENZ · LANDAU Problem: auch hier ist ein Freiheitsgrad offen (upVektor) Fest nach oben Oder ebenfalls durch einen eigenen Pfad (nur „Hilfsvektor“) S. Müller - 26 - COI-Pfad Position und COI der Keyframes müssen zu gleichen Zeiten erreicht werden Position: aus dem Weg für jeden Keyframe ergibt sich die Zeit, wann er erreicht wird. COI: aus dem Ort und der Zeit pro Keyframe ergibt sich die Weg-Zeit-Kurve für den COI Der Benutzer kann pro Keyframe noch die Geschwindigkeit beeinflussen (Tangente im COI-Weg-ZeitDiagramm). UNIVERSITÄT KOBLENZ · LANDAU s Position 1 s4 s3 s2 s1 s0 t0 0 t1 s t2 t3 t4 1 t3 t4 1 t3 t4 1 COI 1 s4 s3 s2 s1 s0 t0 t1 s t2 t COI 1 s4 s3 s2 s1 s0 t0 t t1 t2 S. Müller - 27 - t Variante 4: COI-Kurve auf dem Pfad v s Der COI wird auf der Kurve interpretiert durch COI r s s Am Ende der Kurve wird entlang der Tangente interpoliert UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 28 - Dynamik von Massenpunkten UNIVERSITÄT KOBLENZ · LANDAU Die Newtonschen Axiome Trägheitsprinzip Ein kräftefreier Körper bewegt sich geradlinig gleichförmig (Ruhe ist also nur ein Spezialfall v=0) Aktionsprinzip Wenn eine Kraft F auf einen Körper mit Masse m wirkt, beschleunigt sie ihn mit: d m v F dt UNIVERSITÄT KOBLENZ · LANDAU Annahme m konstant: F mv ma Bemerkung: Richtung der Beschleunigung ergibt sich aus der Richtung der Kraft (bzw. umgekehrt). Reaktionsprinzip Wenn die Kraft F, die auf einen Körper wirkt, ihren Ursprung in einem anderen Körper hat, so wirkt auf diesen die entgegengesetzt gleiche Kraft -F S. Müller - 30 - Arten der Kräfte (Beispiele) Gravitation (z.B. Planeten) m F F Federkraft F d M GmM ; G 6,67 1011 2 r Schwerkraft (z.B. Erde) F k d (Gleit-)Reibung F m F F m g ; g 9,81 UNIVERSITÄT KOBLENZ · LANDAU Fn F Fn Richtung: parallel zur Oberfläche Kräfte wirken als Summe! S. Müller - 31 - Dynamiksimulation v. Massenpunkten Massepunkte sind ein (einfacher) Spezialfall, da sie keine Masseverteilung haben und ihre Orientierung irrelevant ist (Resultat: nur Translation). Das Prinzip jeder physikalisch basierten Simulation (Physik Engine): Für den letzten Frame (Zeitpunkt t) ist die Position r und die Geschwindigkeit v für jeden Punkt bekannt. UNIVERSITÄT KOBLENZ · LANDAU Berechne für den aktuellen Frame (t+t) die Summe aller Kräfte (als Vektor) für jeden Massepunkt. Aus der resultierenden Kraft lässt sich direkt die Beschleunigung auf den Punkt berechnen: F a m Durch Integration erhält man die aktuelle Position und Geschwindigkeit. S. Müller - 32 - y Integration v t t v t v t r t t r t a t dt t t t t t F t dt m v t dt t t t t Genaue Betrachtung: Funktion hängt von einer Veränderlichen und deren Ableitungen ab (Differentialgleichung) UNIVERSITÄT KOBLENZ · LANDAU v t r t v t t r t t Beispiel: schiefer Wurf Kernproblem: Integration bzw. Lösung einer „ordinary differential equation“ (ODE, im Gegensatz zu PDE, „partial differential equation“) Analytische Lösung zu komplex S. Müller - 33 - x Numerische Integration von ODEs y Euler-Methode Anfangs ist die Position und Geschwindigkeit bekannt (Anfangswertproblem) Für ein t geht man „nur“ entlang der Tangente und erhält die neue Position Die neue Geschwindigkeit ergibt sich aus der Kraft am (Start-)Punkt rt 1 rt vt t Ft vt 1 vt t m UNIVERSITÄT KOBLENZ · LANDAU rt 1 rt 2 vt 2 vt rt x Funktioniert nur sinnvoll bei kleinen t (d.h. die Framerate muss hoch sein!) In der Praxis Stabilitätsprobleme S. Müller - 34 - Simulationsablauf Startwerte: Für jeden Massepunkt: m, r, v Zeit t = 0 Darstellung der Szene (für Zeitpunkt t) Aus der Renderingzeit ergibt sich t Berechne die Summe aller Kräfte für jeden Massepunkt für t+t Berechne aus der alten Geschwindigkeit die neue Position Berechne aus der alten Beschleunigung die neue Geschwindigkeit rt t rt vt t vt t F vt t t m t = t +t UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 35 - Runge-Kutta Problem bei Euler: die Abweichung von der Tangente (konkret die Kraft) wird zur Bestimmung der neuen Position nicht berücksichtigt. Runge-Kutta verwendet zur genaueren Annäherung n Hilfssteigungen, welche dann aufsummiert und gemittelt werden. Üblich: Runge-Kutta 4. Ordnung Berechnung von 4 Hilfspunkten UNIVERSITÄT KOBLENZ · LANDAU Allgemeine Darstellung: y t t y t f t , yt dt t t t Lösung nach Runge-Kutta m1 f t , yt t t m2 f t , yt m1 2 2 t t m3 f t , yt m2 2 2 m4 f t t , yt t m3 1 yt t yt m1 2m2 2m3 m4 t 6 Herleitung aus Taylorpolynom S. Müller - 36 - Beispiel r1 rt v1 vt F1 F t , r1 t r2 rt v1 2 t F v2 vt 1 2 m F2 F t t 2 , r2 v2 r2 F2 v1 F3 r1 F1 v3 r3 t t t 2 t t UNIVERSITÄT KOBLENZ · LANDAU t r3 rt v2 2 t F v3 vt 2 2 m F3 F t t 2 , r3 S. Müller - 37 - Beispiel (cont.) v2 r2 F2 v1 F1 r4 v3 r3 t t t 2 v4 F4 F3 r1 r4 rt v3 t t t Gemittelter v-Vektor rt t rt F4 F t t , r4 Ergebnis durch Mittelung: vt t vt F v4 vt t 3 m 1 rt t rt v1 2 v2 2 v3 v4 t 6 2 2 F F F 1 2 3 F4 vt t vt 1 t 6 m Beispiel: schiefer Wurf. Hier sind die Kräfte allerdings konstant … UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 38 - Numerische Lösungen für ODE Es existieren verschiedene Methoden Euler-Methode Runge-Kutta Leapfrog Verlet Heun Predictor-Corrector-Methoden Das Problem: in die Zukunft schauen auf Basis der Vergangenheit. Stabilität hängt extrem vom berechneten Zeitintervall ab. UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 39 -