(3) Weg-Zeit-Verhalten

Werbung
(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  31  u  u  P1  31  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; s1  1
Dann:
 ds   vt   dt;
s t 
t
0
v0
0
v
st   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
at
a t
vt   a  t
0
t
a  1  t 
t
vt   vt   a  t
vt   v1  t   a  t  1  t   a  1  t 
v1  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
st   at 2
2
st   st   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
 at 1  t   at 1  t   a
 2  2
t
s1  1  at 1  t   1  a 
UNIVERSITÄT
KOBLENZ · LANDAU
1
t 1  t 
1
st   a  t 2
2
1 

s1  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
at 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  2t   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
at 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  mv  ma
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
GmM
; G  6,67 1011
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 , yt   dt
t  t
t
Lösung nach Runge-Kutta
m1  f t , yt 
t 
 t
m2  f  t  , yt   m1 
2
2 

t 
 t
m3  f  t  , yt   m2 
2
2


m4  f t  t , yt   t  m3 
1
yt  t   yt    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 -
Herunterladen