Física para Animação Computadorizada

Propaganda
 x
  
r   y
 z 

r
 mv x 

p  mv y 
 mvz 

Aceleração altera velocidade que altera
posição; 
 
vt 1  vt  a.t



v  vxi  v y j



rt 1  xt 1  yt 1



xt 1  xt  vx t.i



yt 1  yt  v y t. j
Obs.: existem métodos de integração
computacionalmente mais eficientes

F2

F3

F1

F

F3i

F1 j

F2 j
Momento linear

F

F1i

Equlíbrio: ΣF=0
Equilíbrio
Dinâmico
Equilíbrio
Estático
• Queda Livre X Queda Amortecida
Aceleração da
gravidade próximo à
superfície da Terra:
a=g=9,8m/s2
F = m.a
P = m.g
2
v
ac 
R
 Aceleração Centrípeta
R: Raio da trajetória.
Direção e sentido apontando
para o centro da trajetória.

Aceleração tangencial:
v2
Fc  m
R
R: Raio da trajetória.
Direção e sentido
apontando para o centro
da trajetória.

Quando um corpo está em contato
com uma superfície, a superfície,
ainda que aparentemente rígida,
deforma e empurra o corpo com
uma força normal N que é
perpendicular à superfície.

Forças de atrito:
› Opostas à tendência de movimento
› Dependem das características das
superfícies em contato
› Processo de solda entre os “picos” das
superfícies

Estático (fate):
› Os pontos em contato entre as superfícies se
soldam, de forma que há resistência ao
movimento relativo entre as superfícies.

Cinético (fatc):
› Caso uma força aplicada seja suficiente
para romper as soldas iniciais, novas soldas
continuamente são formadas e rompidas
durante o deslizamento.
fate  fatc

Força de atrito estático:
› Variável:
 Se nenhuma força com componente tangencial à
superfície de contato for aplicada, a fate é igual a
zero;
 Se houver força com componente tangencial à
superfície de contato, a fate aumenta até um valor
máximo dado por:
fate _ max  e N

Força de atrito cinético
› Constante se as características das superfícies
forem constantes:
fatc  c N

Quando há uma velocidade relativa
entre um fluido e um corpo, o corpo
experimenta uma força de arrasto
que se opõe ao movimento relativo e
que está direcionada no mesmo sentido
em que o fluido escoa em relação ao
corpo.
 1
FR  CAv 2
2
A: Área da seção transversal efetiva
do corpo
ρ: densidade do fluido
C: Coeficiente de arrasto
 1
2
FR  CAv
2
Se v aumenta, Fr aumenta, até que
Fr = P
 Nesse caso, chega-se à velocidade terminal:

vt 
2 Fg
C A
Objeto
vt (m/s)
Peso em
campos de tiro
145
Distância para
0.95vt (m)
2500
Bola de tênis
Gota de chuva
Para-quedista
42
7
5
210
6
3
Horizontal:
a=0
Vertical:
a=g=9,8m/s2

Newton expressou a sua segunda lei
originalmente em termos de momento:


p  mv

FRe s

p

t

Impulso: variação de momento linear.

Impulso: medida tanto da intensidade
quanto da variação da força


I  p
 
I  F t , com F constante

Exemplo: Colisões (força variável)

Se nenhuma força externa resultante
atua sobre um sistema de partículas, o
momento linear total do sistema não
pode variar

 
Pi  Pf
, sistema fechado, isolado

Colisão é uma interação entre partículas,
durante a qual há conservação do
momento linear do sistema, isto é, o
momento linear do sistema, antes da
colisão, é igual ao momento linear do
sistema, após a colisão.
 
Pi  Pf

Colisões elásticas
› Numa colisão elástica conserva-se a energia cinética
do sistema.

Colisões inelásticas
› Não há conservação da energia cinética do sistema.

Colisões perfeitamente inelásticas (
perfeitamente inelásticas )
› Não existe conservação da energia cinética do
sistema e os corpos seguem juntos após a colisão, isto
é, com a mesma velocidade após a colisão.

É a razão entre a velocidade relativa antes e
após a colisão:
Onde:
› v'a é a velocidade escalar final do primeiro objeto
após o impacto
› v'b é a velocidade escalar final do segundo objeto
após o impacto
› va é a velocidade escalar inicial do primeiro objeto
antes do impacto
› vb é a velocidade escalar inicial do segundo
objeto antes do impacto
Voltar a simulação ao ponto exato de
contato
 Modificar posições e velocidades

vt
vn
v
Após a colisão:
N
v
new
v
new
  v n  v t
Coeficiente de restituição
 x
 v
 
 x
 v
 
 x
 v 
 v    f / m
 



Vetores concatenados x e v
formam um vector 6-n:
posição no espaço de fase.

Fazendo a derivada
primeira do espaço de fase.

Temos equações
diferenciais de ordem 1.
Começamos com:
 x
 v 

 v
 f / m
 


Aplicando o método de Euler:
x(t  t )  x(t )  t  x(t )
x(t  t )  x(t )  t  x(t )
Fazendo substituições:
x(t  t )  x(t )  t  v(t )
v(t  t )  x(t )  t 
f (x , x ,t )
m
Iterativamente:
x i 1  x i  t  v i
v
i 1
fi
 v  t 
m
i
Erros ocorrem dependendo de t.
x
v


 f 
 m


Posição no espaço de fase
posição
velocidade
Acumulador de força
massa
typedef struct{
float m; /* mass */
float *x; /* position vector */
float *v; /* velocity vector */
float *f; /* force accumulator */
} *Particle;
Em geral, temos um sistema de n partículas cujas posições devem
ser determinadas no tempo:
particles
n
time
 x1   x2 
v v 
 1 2 
 f1   f2 
m  m 
 1  2 
typedef struct{
float m; /* mass */
float *x; /* position vector */
float *v; /* velocity vector */
float *f; /* force
accumulator */
 xn 
v 
 n
 fn 
m 
 n
typedef struct{
Particle *p; /* array of pointers to
particles */
int n; /* number of particles */
float t; /* simulation clock */
} *ParticleSystem

Em determinado instante, a função g
define um campo vetorial de x:
› Vento
› Rios

A equação:
𝑥 = 𝑔(𝑥, 𝑡)
é uma equação diferencial de primeia ordem.

Podemos resolver para x ao longo do tempo,
colocando a partícula em uma posição inicial
e integrando passo a passo no campo
vetorial:
Começar aqui

Esse tipo de solução é denominada curva
integral.

https://www.youtube.com/watch?v=S7r
7OYufPo8


Considere uma partícula num campo de forças f.
Nesse caso, a partícula tem:
› Massa
dv
d x
a x  v 

› Aceleração
dt
dt
› Velocidade
› Posição
A partícula obedece a segunda Lei de Newton:
2
2

f  ma  mx
O campo de forças f pode depender da posição, da
velocidade e do tempo
 Rearranjando, temos:

x
f (x , x ,t )
m
Eq. Diferencial
de segunda
ordem
x  v
 Eqs. Diferenciais

f (x , v ,t )  de primeira
v 

m

 ordem
1. Clear forces

Loop over particles, zero force accumulators

Sum all forces into accumulators

Loop over particles, return v and f/m
2. Calculate forces
3. Return derivatives
 x1   x2 
 v  v

1
2



 f1  0  f2  0
 m  m 
1 
2


 xn 
 v

n


 fn  0
 m 
n


1
Clear force
accumulators
F1
Apply forces
to particles
 v1   v2
 f  f
 1  2

 m1 

 m2





 vn
 f
 n

 mn





2
3
F2
 x1   x2 
v v 
 1 2 
 f1   f2 
m  m 
 1  2 
Return derivatives
to solver
Fnf
F3
 xn 
v 
 n
 fn 
m 
 n

O movimento complexo de um sistema
de objetos (um carro ou uma bailarina)
pode ser simplificado se determinarmos
o CENTRO DE MASSA desse sistema.

O CENTRO DE MASSA de um sistema de
partículas é o ponto que se move como
se ali toda a massa do sistema estivesse
concentrada e todas as forças externas
fossem aplicadas.
1 n
xcm 
 mi xi
M i 1
ycm
1 n

 mi yi
M i 1
xcm
m1 x1  m2 x2

m1  m2
Exemplo:


FRe s  MaCM

Quantidade que indica como a massa
do corpo em rotação está distribuída
em torno do eixo rotacional.

Definição:
I   mi ri
2
I
I  MR 2
MR 2
I
2
MR 2 ML2
I

4
12
M
2
2
( R1  R2 )
2
M (a 2  b 2 )
I
12

Se soubermos o momento de inércia de
um corpo em relação ao eixo que passa
pelo seu centro de massa ICM e
quisermos conhecer o momento de
inércia em relação a outro eixo, paralelo
ao primeiro e situado a uma distância h,
temos que:
I  I CM  Mh
2
 O deslocamento do centro de massa e a rotação estão vinculados:
 s é o deslocamento do centro de massa do objeto
  é o deslocamento angular do objeto em torno de um eixo que
passa pelo CM do sistema.
vCM
R

s
s R
A velocidade do CM é dada por:
vCM 
ds d
 R  R
dt
dt
𝜏 =𝐹×𝐿
f  ma
  rF
P  mv
L  r p
dP
f 
dt
Pi  c
dL

dt
Li  c
  I
r
F
r

p  mv
Momento
Angular
q (t )
 (t )
x(t )
L(t )  ((q(t )  x(t ))  mi (q (t )  v(t )))
 ( R(t )q  mi ( (t )  (q(t )  x(t ))))
 (mi ( R(t )q  ( (t )  R(t )q)))
Tensor de
Inércia
𝑑𝑚
 I xx

I   I xy
 I xz

I xx   ( y  z )dm
2
2
I yy   ( x 2  z 2 )dm
I zz   ( x  y )dm
2
2
I xy
I yy
I yz
I xz 

I yz 
I zz 
I xy    xydm
I xz    xzdm
I yz    yzdm
 x (t ) 
 R (t ) 

S (t )  
 P (t ) 


 L (t ) 
Object attributes
M, Iobject-1
1
1
I rotated  RI object R 1
P(t )
v(t ) 
M
Espaço de fase
F
r
  rF
 x(t )   v(t ) 

 

*
d
d  R (t )  w(t ) R (t )
S (t ) 

dt
dt  P (t )  F (t ) 

 

 L(t )    (t ) 
w(t )  I (t ) 1 L(t )
Obs: Na prática, utiliza-se quatérnions ao
invés de matriz de rotação
Pontos discretos de massa (~particle
system) conectados por uma rede de
molas sem massa
 Usado para modelar pele, músculos,
cabelos, roupas, …

Lei de Hooke:
f  kspring ( x  r )
Podemos incluir termo de amortecimento:
f  [kspring ( x  r )  kdampv]
 x1 
p1  

 v1 
r = comprimento
em repouso
 x2 
p2  

 v2 
Nota: Muito instável com integração de Euler… Outros métodos
como Runge-Kutta são recomendáveis
Spring mesh
Each vertex is a point mass
Each edge is a spring-damper
Diagonal springs for rigidity
Global forces: gravity, wind

Algoritmo
› Há n partículas no sistema e x representa o vetor
posição
m (d2X/dt2) + C (dX/dt) + K X = F
› m, C, K são matrizes 3n x 3n:
 massa,
 constante de amortecimento
 dureza das molas.
 m e C são diagonais.
 F é a força.
› Para resolver:
dV/dt = M–1 ( - CV - KX + F)
dX/dt = V
Equações de Navier-Stokes
u=0
Incompressibilidade
ut = k2u –(u)u – p + f
Difusão
Pressão
Advecção
Velocidade
Forças
Navier-Stokes Equations
u=0
Incompressibility
ut = k2u –(u)u – p + f
Diffusion
Pressure
Advection
Change in Velocity
Body Forces
Navier-Stokes Equations
u=0
Incompressibility
ut = k2u –(u)u – p + f
Diffusion
Pressure
Advection
Change in Velocity
Body Forces
All values live on regular grids
 Need scalar and vector fields
 Scalar fields: amount of smoke or dye
 Vector fields: fluid velocity
 Subtract adjacent quantities to
approximate derivatives

1.2
3.7
cij
5.1
…
cij
1
2c
ct = k
change in
value
value relative
to neighbors
1
cijnew = cij + k t (ci-1j + ci+1j + cij-1 + cij+1 - 4cij)
-4
1
1
Original
Some Diffusion
More Diffusion
uij = (ux,uy)
ut =
2
k u
viscosity
Two separate diffusions:
x
u
y
u
t=
2
x
k u
t=
2
y
k u
… blur the x-velocity and the y-velocity
Effect of Viscosity
Low
Medium
High
Very High
• Each one is ten times higher viscosity
than the last
“Melting and Flowing”
Mark Carlson, Peter J. Mucha, Greg Turk
Symposium on Computer Animation 2002
Navier-Stokes Equations
u=0
Incompressibility
ut = k2u –(u)u – p + f
Diffusion
Pressure
Advection
Change in Velocity
Body Forces
Advection
0.3
0.3
2.7
ct = –(u)c
change in
value
advection
current values
ut = –(u)u
Two separate advections:
x
u
y
u
t=
x
–(u)u
t=
y
–(u)u
… push around x-velocity and y-velocity
Easy to code
 Method stable even at large time steps
 Problem: numerical inaccuracy diffuses
flow

Navier-Stokes Equations
u=0
Incompressibility
ut = k2u –(u)u – p + f
Diffusion
Pressure
Advection
Change in Velocity
Body Forces
High divergence
Low divergence
Zero divergence
First do velocity diffusion and advection
 Find “closest” vector field that is
divergence-free
 Need to calculate divergence
 Need to find and use pressure

u=?
uyij+1
-uxi-1j
?
uxi+1j
-uyij-1
uij=(uxi+1j - uxi-1j) + (uyij+1-uyij-1)
new
u =
u – p
Take divergence of both sides…

new
u =
 u – p
zero
 u =
2
p
 u =
known
2
p
pnew = p + ( u - 2p)
Let dij =  uij
1
unknown
1
-4
1
1
pnewij = pij + (dij - (pi-1j + pi+1j + pij-1 + pij+1 - 4pij))
new
u =
u – p
…and velocity is now divergence-free
Found “nearest” divergence-free vector
field to original.
1) Diffuse velocity
2) Advect velocity
3) Add body forces (e.g. gravity)
4) Pressure projection
5) Diffuse dye/smoke
6) Advect dye/smoke

Andrew Nealen, Matthias Müller, Richard Keiser, Eddy
Boxerman and Mark Carlson. Physically Based Deformable
Models in Computer Graphics. Eurographics STAR. 2005;

Greg Turk. Lecture Notes: Fluid Simulation for
Computer Animation.
http://www.cc.gatech.edu/~turk/powerpoint_presentations/fl
uids.ppt

Rick Parent. Computer Animation: Algorithm and Techniqes.
Elsevier.

David Baraff. Rigid Body Dynamics. SIGGRAPH Course notes
2001.
http://www.pixar.com/companyinfo/research/pbm2001/pdf/s
lidesf.pdf
Download