SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
Simulação de Física em Games 
Nilson Souto - xissburg - Twitter @xissburg - http://xissburg.com
Conteúdo 
•Fenômenos físicos que nos interessam 
•Engines de Física 
•Simulação de Partículas 
•Simulação de Corpos Rígidos 
•Constraints 
•Colisões 
•Alguns Engines Populares
Fenômenos Físicos 
•Diversos fenômenos físicos podem simulados 
em um computador 
•No caso dos jogos, em geral, apenas nos 
interessam a Mecânica 
•A Mecânica de Newton é suficiente 
•Leis de Newton: 
•Inércia 
•F = ma 
•Ação e Reação
Engine de Física 
•Engines de física são softwares que simulam o 
movimento de objetos de acordo com as leis 
da física 
•Não possuem representação gráfica 
internamente 
•O resultado da simulação pode ser usado para 
criar a animação procedural de objetos 
representados graficamente
Engine de Física 
Criar e configurar 
Step 
objetos Aplicar forças 
Atualizar velocidade 
e posição 
Detectar colisões 
Resolver constraints 
Exibir resultado
Engine de Física 
•Após criar os objetos, iniciamos o main loop da 
simulação 
•Em cada iteração fazemos um passo na 
simulação proporcional ao intervalo de tempo 
que passou entre a iteração anterior e a atual, 
conhecido como delta-time ou time-step 
•Após cada passo, obtemos as novas posições e 
velocidades para cada objeto, e assim podemos 
redesenhar a cena
Simulação de Partículas 
•Partículas possuem posição, velocidade linear, 
massa e reagem à forças 
•Partículas possuem volume infinitamente 
próximo de zero 
•Partículas não rotacionam 
•Relativamente simples de simular várias 
partículas se movimentando e reagindo aos 
efeitos de forças quaisquer
Simulação de Partículas 
•Posição, velocidade e força são grandezas 
vetoriais geralmente de 2 ou 3 dimensões 
•Vetores são objetos geométricos que possuem 
comprimento e apontam numa direção 
y 
y1 v = (x1, y1) 
x x1 
O
Simulação de Partículas 
•Em 3 dimensões: 
y 
x 
x1 
y1 
v = (x1, y1, z1) 
z1 z 
O
Simulação de Partículas 
• pi 
: posição da i-ésima partícula 
• vi 
: velocidade da i-ésima partícula 
• fi 
: força aplicada na i-ésima partícula 
• mi 
: massa da i-ésima partícula
Simulação de Partículas 
•Algoritmo 
for i in [1, n] do 
pi = p0i 
vi = v0i 
end 
loop 
for i in [1, n] do 
fi = ComputeForce(i) 
vi = vi + (fi/mi)dt 
pi = pi + vidt 
end 
end
Simulação de Partículas 
pi 
vi 
t0 t1 
fi 
t2
Simulação de Corpos Rígidos 
•Um corpo rígido é uma idealização de um 
sólido em que suas deformações podem ser 
ignoradas 
•Pode ser simulado de forma semelhante à 
partícula 
•Possui volume, forma fixa, e pode rotacionar 
•Temos que considerar o momento de inércia, 
orientação, torque e velocidade angular
Simulação de Corpos Rígidos 
Centro de Massa 
p 
v 
!
Simulação de Corpos Rígidos 
•O Centro de Massa é o ponto médio da 
distribuição da massa de um corpo 
! 
! 
R = 
1 
M 
Z 
V 
⇢(r)rdV 
! 
•M é a massa total do corpo, r é o vetor posição 
de um ponto do corpo, V é o volume do corpo, 
e ρ é a função densidade do corpo, onde ρ(r) 
= m(r)/v(r)
Simulação de Corpos Rígidos 
•A posição do Centro de Massa é a considerada 
posição do corpo rígido 
•A rotação é um ângulo em radianos em 2D 
•A velocidade do Centro de Massa é a 
velocidade do corpo 
•A velocidade angular ω é um escalar em 2D 
(radianos por segundo)
Simulação de Corpos Rígidos 
•O momento de inércia é o análogo da massa 
para a rotação 
•Determina o quão rápido um corpo ganha ou 
perde velocidade angular ao receber um torque 
•Em 2D o momento de inércia é um escalar 
com unidade kgm2 que é calculado a partir da 
massa e da forma do corpo 
I = 
Z 
V 
⇢(r) r2 dV
Simulação de Corpos Rígidos 
•Exemplos de momento de inércia: 
w 
h I = 
m(h2 + w2) 
12 
r 
I = 
mr2 
2 
p0 
p1 
p2 p3 
p4 
p5 p6 
I = 
m 
6 
NP1 
n=1 k~Pn+1 ⇥ ~Pnk(( ~Pn+1 · ~Pn+1) + (~Pn+1 · ~Pn) + (~Pn · ~Pn)) 
NP1 
n=1 k~Pn+1 ⇥ ~Pnk
Simulação de Corpos Rígidos 
•Algoritmo 
SetupRigidBodies(n) 
loop 
for i in [1, n] do 
fi = ComputeForce(i) 
vi = vi + (fi/mi)dt 
pi = pi + vidt 
⌧i = ComputeTorque(i) 
!i = !i + (⌧i/Ii)dt 
↵i = ↵i + !idt 
end 
end
Constraints 
•Restrição no movimento de um objeto 
•Utilizadas para criar juntas e conexões entre 
corpos e para resolver colisões 
•Representada por uma função C e um 
conjunto de equações e/ou inequações 
envolvendo C
Constraints 
•Por exemplo, uma constraint para criar uma 
junta entre dois corpos rígidos pode ser 
descrita da seguinte maneira: 
C(t) = krA(t) − rB(t)k 
C(t) = 0 
rA(t) = pA(t) + RA(t)rA0 
rB(t) = pB(t) + RB(t)rB0 
RA(t) = 
 
cos ↵A(t) −sin ↵A(t) 
sin ↵A(t) cos ↵A(t)
Constraints 
rA0 
rB0 
pA(t0) 
pB(t0)
Constraints 
•Constraints podem ser satisfeitas aplicando 
forças ou impulsos em determinados pontos do 
objeto
Colisões 
•Colisão entre corpos rígidos é um dos efeitos 
mais importantes numa simulação 
•Permite que os corpos interajam entre si de 
forma realista 
•O processo é dividido em duas partes: 
detecção e resolução de colisões
Colisões - Detecção 
•Em geral, o processo de detecção de colisões é 
dividido em duas partes 
•Broad Phase: utiliza formas simplificadas das 
formas originais dos objetos para encontrar 
potenciais pares que estão colidindo de forma 
eficiente 
•Narrow Phase: verifica se os pares da Broad 
Phase colidem de fato e calcula os pontos de 
contato
Colisões - Broad Phase
Colisões - Broad Phase 
Axis Aligned 
Bounding Box 
- AABB
Colisões - Broad Phase 
Pares que estão 
potencialmente 
colidindo
Colisões - Narrow Phase 
d  0
Colisões - Narrow Phase
Colisões - Narrow Phase 
•Para detectar se os corpos estão colidindo, 
calculamos a distância entre eles ou o 
penetration depth caso estejam penetrando 
•Dois algoritmos elegantes para executar essa 
fase são o GJK (cálculo de distância entre 
formas convexas) e EPA (Expanding Polytope 
Algorithm para cálculo de penetration depth)
Colisões - Detecção 
•Pode ser dividida em dois tipos: 
•Discreta: identifica em cada passo os pares 
que colidem. Tem problemas com objetos que 
se movimentam muito rápido e objetos de 
pequenas dimensões, onde um objeto pode 
eventualmente atravessar outro (tunneling) 
•Contínua (CCD): calcula o instante em que 
ocorreu a colisão (time of impact) durante um 
passo. Evita que objetos atravessem uns aos 
outros
Colisões - CCD 
ti 
toi
Colisões - Resolução 
•A resolução de colisões calcula e aplica forças 
ou impulsos nos pontos de contato para evitar 
que os corpos penetrem 
•Impulse-Based Dynamics é a forma mais popular 
de se resolver colisões, calculando e aplicando 
impulsos nos corpos de acordo com algumas 
propriedades dos materiais como o coeficiente 
de restituição e o coeficiente de atrito
Colisões - Resolução 
•Partindo da expressão vrel(ti)=ϵvrel(ti+1), onde ϵ 
é o coeficiente de restituição, podemos chegar 
à famosa fórmula do impulso normal 
!
Colisões - Resting Contacts 
•Resting Contacts são pontos de contatos que 
persistem por mais que um passo da simulação 
•Precisam de um tratamento especial para 
manter a estabilidade da simulação, 
principalmente no empilhamento de objetos 
(stacking) 
•Sequential Impulses é um método popular para 
resolver os resting contacts e constraints em 
simulações baseadas em impulsos
Engines 
•Box2D: engine de física 2D criada por Erin 
Catto em C++, licença zlib 
•Chipmunk: engine de física 2D criada por 
Scott Lembcke em C, licença MIT 
•Bullet Physics: engine de física 3D criada por 
Erwin Coumans em C++, licença zlib 
•PhysX: engine de física 3D proprietário da 
Nvidia, suporta aceleração por hardware em 
placas GeForce
Referências 
•Halliday, Resnick. Fundamentals of Physics, 8th Ed. 
•Andrew Witkin, David Baraff. Physically Based 
Modeling: Principles and Practice. http:// 
www.cs.cmu.edu/~baraff/sigcourse/index.html 
•Gino van den Bergen.A Fast and Robust GJK 
Implementation for Collision Detection of 
Convex Objects. http://www.win.tue.nl/~gino/ 
solid/jgt98convex.pdf

Mais conteúdo relacionado

Mais procurados

Física i apontamentos teóricos - cinemática
Física i   apontamentos teóricos - cinemáticaFísica i   apontamentos teóricos - cinemática
Física i apontamentos teóricos - cinemáticaPedro Alves
 
www.AulasParticularesApoio.Com - Física - Dinâmica e Movimento
www.AulasParticularesApoio.Com - Física -  Dinâmica e Movimentowww.AulasParticularesApoio.Com - Física -  Dinâmica e Movimento
www.AulasParticularesApoio.Com - Física - Dinâmica e MovimentoApoioAulas ParticularesCom
 
Fisica 1 cap10
Fisica 1 cap10Fisica 1 cap10
Fisica 1 cap10CLucasC20
 
Fisica 1 cap9
Fisica 1 cap9Fisica 1 cap9
Fisica 1 cap9CLucasC20
 
Leisdenewton 120303064334-phpapp01
Leisdenewton 120303064334-phpapp01Leisdenewton 120303064334-phpapp01
Leisdenewton 120303064334-phpapp01marcianunes33
 
Dinâmica de máquinas e vibrações
Dinâmica de máquinas e vibraçõesDinâmica de máquinas e vibrações
Dinâmica de máquinas e vibraçõesSérgio Faria
 
Notas de aula momento angular
Notas de aula   momento angularNotas de aula   momento angular
Notas de aula momento angularFerreira José
 
Lista capitulo 7_com_respostas
Lista capitulo 7_com_respostasLista capitulo 7_com_respostas
Lista capitulo 7_com_respostaswedson Oliveira
 
Quantidade de movimento e Impulso
Quantidade de movimento e ImpulsoQuantidade de movimento e Impulso
Quantidade de movimento e ImpulsoMarcelo Franco
 
Quantidade de movimento_rbd
Quantidade de movimento_rbdQuantidade de movimento_rbd
Quantidade de movimento_rbdRicardo Bonaldo
 
Apostila mecânica ufv
Apostila mecânica ufvApostila mecânica ufv
Apostila mecânica ufvDalber Silva
 
www.aulasdefisicaapoio.com - Física - Dinâmica e Movimento
www.aulasdefisicaapoio.com - Física -  Dinâmica e Movimentowww.aulasdefisicaapoio.com - Física -  Dinâmica e Movimento
www.aulasdefisicaapoio.com - Física - Dinâmica e MovimentoVideoaulas De Física Apoio
 

Mais procurados (18)

11. rotação b
11. rotação b11. rotação b
11. rotação b
 
Cap 11
Cap 11Cap 11
Cap 11
 
Física i apontamentos teóricos - cinemática
Física i   apontamentos teóricos - cinemáticaFísica i   apontamentos teóricos - cinemática
Física i apontamentos teóricos - cinemática
 
www.AulasParticularesApoio.Com - Física - Dinâmica e Movimento
www.AulasParticularesApoio.Com - Física -  Dinâmica e Movimentowww.AulasParticularesApoio.Com - Física -  Dinâmica e Movimento
www.AulasParticularesApoio.Com - Física - Dinâmica e Movimento
 
Fisica 1 cap10
Fisica 1 cap10Fisica 1 cap10
Fisica 1 cap10
 
Fisica 1 cap9
Fisica 1 cap9Fisica 1 cap9
Fisica 1 cap9
 
Leisdenewton 120303064334-phpapp01
Leisdenewton 120303064334-phpapp01Leisdenewton 120303064334-phpapp01
Leisdenewton 120303064334-phpapp01
 
Dinâmica de máquinas e vibrações
Dinâmica de máquinas e vibraçõesDinâmica de máquinas e vibrações
Dinâmica de máquinas e vibrações
 
Notas de aula momento angular
Notas de aula   momento angularNotas de aula   momento angular
Notas de aula momento angular
 
Ppgf ufpa --prova_2011-01
Ppgf ufpa --prova_2011-01Ppgf ufpa --prova_2011-01
Ppgf ufpa --prova_2011-01
 
Mhs
MhsMhs
Mhs
 
Lista capitulo 7_com_respostas
Lista capitulo 7_com_respostasLista capitulo 7_com_respostas
Lista capitulo 7_com_respostas
 
Quantidade de movimento e Impulso
Quantidade de movimento e ImpulsoQuantidade de movimento e Impulso
Quantidade de movimento e Impulso
 
Momento Angular
Momento AngularMomento Angular
Momento Angular
 
15 oscilacoes (1)
15 oscilacoes (1)15 oscilacoes (1)
15 oscilacoes (1)
 
Quantidade de movimento_rbd
Quantidade de movimento_rbdQuantidade de movimento_rbd
Quantidade de movimento_rbd
 
Apostila mecânica ufv
Apostila mecânica ufvApostila mecânica ufv
Apostila mecânica ufv
 
www.aulasdefisicaapoio.com - Física - Dinâmica e Movimento
www.aulasdefisicaapoio.com - Física -  Dinâmica e Movimentowww.aulasdefisicaapoio.com - Física -  Dinâmica e Movimento
www.aulasdefisicaapoio.com - Física - Dinâmica e Movimento
 

Semelhante a Simulação Física em Games

Aula 10 sistemas de particulas e colisoes
Aula 10   sistemas de particulas e colisoesAula 10   sistemas de particulas e colisoes
Aula 10 sistemas de particulas e colisoesHenriqueCesar777
 
Conceitos Introdutórios de Física e Inteligência Artifical para Jogos
Conceitos Introdutórios de Física e Inteligência Artifical para JogosConceitos Introdutórios de Física e Inteligência Artifical para Jogos
Conceitos Introdutórios de Física e Inteligência Artifical para JogosRafael Martins
 
Conceitos Introdutórios de Física e IA para Jogos
Conceitos Introdutórios de Física e IA para JogosConceitos Introdutórios de Física e IA para Jogos
Conceitos Introdutórios de Física e IA para JogosAndré Kishimoto
 
Mecânica Técnica Apresentação para sala de aula
Mecânica Técnica Apresentação para sala de aulaMecânica Técnica Apresentação para sala de aula
Mecânica Técnica Apresentação para sala de aulaMiquéias Tiburcio
 
10ºano unidade 2 fisica para 11ºano revisão
10ºano unidade 2 fisica para 11ºano revisão10ºano unidade 2 fisica para 11ºano revisão
10ºano unidade 2 fisica para 11ºano revisãoadelinoqueiroz
 
Energia e Movimentos - 10ºano FQ A
Energia e Movimentos - 10ºano FQ AEnergia e Movimentos - 10ºano FQ A
Energia e Movimentos - 10ºano FQ Aadelinoqueiroz
 
Relatório colisões turma t5
Relatório colisões   turma t5Relatório colisões   turma t5
Relatório colisões turma t5Roberto Leao
 
CinemáTica Rotacional
CinemáTica RotacionalCinemáTica Rotacional
CinemáTica Rotacionalguestf9bbf1
 
Aula 10 ensaio de torção
Aula 10   ensaio de torçãoAula 10   ensaio de torção
Aula 10 ensaio de torçãoRenaldo Adriano
 
SLIDES_ CINEMATICA COMPLETO 2022.ppt
SLIDES_ CINEMATICA COMPLETO 2022.pptSLIDES_ CINEMATICA COMPLETO 2022.ppt
SLIDES_ CINEMATICA COMPLETO 2022.pptSaladeAulanaPandemia
 
www.CentroApoio.com - Física - Movimento Circular - Vídeo Aula
www.CentroApoio.com - Física - Movimento Circular - Vídeo Aulawww.CentroApoio.com - Física - Movimento Circular - Vídeo Aula
www.CentroApoio.com - Física - Movimento Circular - Vídeo AulaVídeo Aulas Apoio
 
Projeto de máquinas
Projeto de máquinasProjeto de máquinas
Projeto de máquinasRobert Scheer
 
Quantidade de movimento e colisão
Quantidade de movimento e colisãoQuantidade de movimento e colisão
Quantidade de movimento e colisãoHoracimar Cotrim
 

Semelhante a Simulação Física em Games (20)

Aula 10 sistemas de particulas e colisoes
Aula 10   sistemas de particulas e colisoesAula 10   sistemas de particulas e colisoes
Aula 10 sistemas de particulas e colisoes
 
Física - Cinemática [Editável]
Física - Cinemática [Editável]Física - Cinemática [Editável]
Física - Cinemática [Editável]
 
Conceitos Introdutórios de Física e Inteligência Artifical para Jogos
Conceitos Introdutórios de Física e Inteligência Artifical para JogosConceitos Introdutórios de Física e Inteligência Artifical para Jogos
Conceitos Introdutórios de Física e Inteligência Artifical para Jogos
 
Conceitos Introdutórios de Física e IA para Jogos
Conceitos Introdutórios de Física e IA para JogosConceitos Introdutórios de Física e IA para Jogos
Conceitos Introdutórios de Física e IA para Jogos
 
simetria-molecular-2
 simetria-molecular-2 simetria-molecular-2
simetria-molecular-2
 
Mecânica Técnica Apresentação para sala de aula
Mecânica Técnica Apresentação para sala de aulaMecânica Técnica Apresentação para sala de aula
Mecânica Técnica Apresentação para sala de aula
 
10ºano unidade 2 fisica para 11ºano revisão
10ºano unidade 2 fisica para 11ºano revisão10ºano unidade 2 fisica para 11ºano revisão
10ºano unidade 2 fisica para 11ºano revisão
 
Energia e Movimentos - 10ºano FQ A
Energia e Movimentos - 10ºano FQ AEnergia e Movimentos - 10ºano FQ A
Energia e Movimentos - 10ºano FQ A
 
ELEMAQ.ppt
ELEMAQ.pptELEMAQ.ppt
ELEMAQ.ppt
 
Relatório colisões turma t5
Relatório colisões   turma t5Relatório colisões   turma t5
Relatório colisões turma t5
 
CinemáTica Rotacional
CinemáTica RotacionalCinemáTica Rotacional
CinemáTica Rotacional
 
Cinemática.pptx
Cinemática.pptxCinemática.pptx
Cinemática.pptx
 
Aula 10 ensaio de torção
Aula 10   ensaio de torçãoAula 10   ensaio de torção
Aula 10 ensaio de torção
 
SLIDES_ CINEMATICA COMPLETO 2022.ppt
SLIDES_ CINEMATICA COMPLETO 2022.pptSLIDES_ CINEMATICA COMPLETO 2022.ppt
SLIDES_ CINEMATICA COMPLETO 2022.ppt
 
Aula 3 movimento1 d
Aula 3 movimento1 dAula 3 movimento1 d
Aula 3 movimento1 d
 
ENEM-UNIBAVE-2018-FÍSICA-Parte-I.pptx
ENEM-UNIBAVE-2018-FÍSICA-Parte-I.pptxENEM-UNIBAVE-2018-FÍSICA-Parte-I.pptx
ENEM-UNIBAVE-2018-FÍSICA-Parte-I.pptx
 
Aula 17 - Torção.pdf
Aula 17 - Torção.pdfAula 17 - Torção.pdf
Aula 17 - Torção.pdf
 
www.CentroApoio.com - Física - Movimento Circular - Vídeo Aula
www.CentroApoio.com - Física - Movimento Circular - Vídeo Aulawww.CentroApoio.com - Física - Movimento Circular - Vídeo Aula
www.CentroApoio.com - Física - Movimento Circular - Vídeo Aula
 
Projeto de máquinas
Projeto de máquinasProjeto de máquinas
Projeto de máquinas
 
Quantidade de movimento e colisão
Quantidade de movimento e colisãoQuantidade de movimento e colisão
Quantidade de movimento e colisão
 

Simulação Física em Games

  • 1. Simulação de Física em Games Nilson Souto - xissburg - Twitter @xissburg - http://xissburg.com
  • 2. Conteúdo •Fenômenos físicos que nos interessam •Engines de Física •Simulação de Partículas •Simulação de Corpos Rígidos •Constraints •Colisões •Alguns Engines Populares
  • 3. Fenômenos Físicos •Diversos fenômenos físicos podem simulados em um computador •No caso dos jogos, em geral, apenas nos interessam a Mecânica •A Mecânica de Newton é suficiente •Leis de Newton: •Inércia •F = ma •Ação e Reação
  • 4. Engine de Física •Engines de física são softwares que simulam o movimento de objetos de acordo com as leis da física •Não possuem representação gráfica internamente •O resultado da simulação pode ser usado para criar a animação procedural de objetos representados graficamente
  • 5. Engine de Física Criar e configurar Step objetos Aplicar forças Atualizar velocidade e posição Detectar colisões Resolver constraints Exibir resultado
  • 6. Engine de Física •Após criar os objetos, iniciamos o main loop da simulação •Em cada iteração fazemos um passo na simulação proporcional ao intervalo de tempo que passou entre a iteração anterior e a atual, conhecido como delta-time ou time-step •Após cada passo, obtemos as novas posições e velocidades para cada objeto, e assim podemos redesenhar a cena
  • 7. Simulação de Partículas •Partículas possuem posição, velocidade linear, massa e reagem à forças •Partículas possuem volume infinitamente próximo de zero •Partículas não rotacionam •Relativamente simples de simular várias partículas se movimentando e reagindo aos efeitos de forças quaisquer
  • 8. Simulação de Partículas •Posição, velocidade e força são grandezas vetoriais geralmente de 2 ou 3 dimensões •Vetores são objetos geométricos que possuem comprimento e apontam numa direção y y1 v = (x1, y1) x x1 O
  • 9. Simulação de Partículas •Em 3 dimensões: y x x1 y1 v = (x1, y1, z1) z1 z O
  • 10. Simulação de Partículas • pi : posição da i-ésima partícula • vi : velocidade da i-ésima partícula • fi : força aplicada na i-ésima partícula • mi : massa da i-ésima partícula
  • 11. Simulação de Partículas •Algoritmo for i in [1, n] do pi = p0i vi = v0i end loop for i in [1, n] do fi = ComputeForce(i) vi = vi + (fi/mi)dt pi = pi + vidt end end
  • 12. Simulação de Partículas pi vi t0 t1 fi t2
  • 13. Simulação de Corpos Rígidos •Um corpo rígido é uma idealização de um sólido em que suas deformações podem ser ignoradas •Pode ser simulado de forma semelhante à partícula •Possui volume, forma fixa, e pode rotacionar •Temos que considerar o momento de inércia, orientação, torque e velocidade angular
  • 14. Simulação de Corpos Rígidos Centro de Massa p v !
  • 15. Simulação de Corpos Rígidos •O Centro de Massa é o ponto médio da distribuição da massa de um corpo ! ! R = 1 M Z V ⇢(r)rdV ! •M é a massa total do corpo, r é o vetor posição de um ponto do corpo, V é o volume do corpo, e ρ é a função densidade do corpo, onde ρ(r) = m(r)/v(r)
  • 16. Simulação de Corpos Rígidos •A posição do Centro de Massa é a considerada posição do corpo rígido •A rotação é um ângulo em radianos em 2D •A velocidade do Centro de Massa é a velocidade do corpo •A velocidade angular ω é um escalar em 2D (radianos por segundo)
  • 17. Simulação de Corpos Rígidos •O momento de inércia é o análogo da massa para a rotação •Determina o quão rápido um corpo ganha ou perde velocidade angular ao receber um torque •Em 2D o momento de inércia é um escalar com unidade kgm2 que é calculado a partir da massa e da forma do corpo I = Z V ⇢(r) r2 dV
  • 18. Simulação de Corpos Rígidos •Exemplos de momento de inércia: w h I = m(h2 + w2) 12 r I = mr2 2 p0 p1 p2 p3 p4 p5 p6 I = m 6 NP1 n=1 k~Pn+1 ⇥ ~Pnk(( ~Pn+1 · ~Pn+1) + (~Pn+1 · ~Pn) + (~Pn · ~Pn)) NP1 n=1 k~Pn+1 ⇥ ~Pnk
  • 19. Simulação de Corpos Rígidos •Algoritmo SetupRigidBodies(n) loop for i in [1, n] do fi = ComputeForce(i) vi = vi + (fi/mi)dt pi = pi + vidt ⌧i = ComputeTorque(i) !i = !i + (⌧i/Ii)dt ↵i = ↵i + !idt end end
  • 20. Constraints •Restrição no movimento de um objeto •Utilizadas para criar juntas e conexões entre corpos e para resolver colisões •Representada por uma função C e um conjunto de equações e/ou inequações envolvendo C
  • 21. Constraints •Por exemplo, uma constraint para criar uma junta entre dois corpos rígidos pode ser descrita da seguinte maneira: C(t) = krA(t) − rB(t)k C(t) = 0 rA(t) = pA(t) + RA(t)rA0 rB(t) = pB(t) + RB(t)rB0 RA(t) =  cos ↵A(t) −sin ↵A(t) sin ↵A(t) cos ↵A(t)
  • 22. Constraints rA0 rB0 pA(t0) pB(t0)
  • 23. Constraints •Constraints podem ser satisfeitas aplicando forças ou impulsos em determinados pontos do objeto
  • 24. Colisões •Colisão entre corpos rígidos é um dos efeitos mais importantes numa simulação •Permite que os corpos interajam entre si de forma realista •O processo é dividido em duas partes: detecção e resolução de colisões
  • 25. Colisões - Detecção •Em geral, o processo de detecção de colisões é dividido em duas partes •Broad Phase: utiliza formas simplificadas das formas originais dos objetos para encontrar potenciais pares que estão colidindo de forma eficiente •Narrow Phase: verifica se os pares da Broad Phase colidem de fato e calcula os pontos de contato
  • 27. Colisões - Broad Phase Axis Aligned Bounding Box - AABB
  • 28. Colisões - Broad Phase Pares que estão potencialmente colidindo
  • 29. Colisões - Narrow Phase d 0
  • 31. Colisões - Narrow Phase •Para detectar se os corpos estão colidindo, calculamos a distância entre eles ou o penetration depth caso estejam penetrando •Dois algoritmos elegantes para executar essa fase são o GJK (cálculo de distância entre formas convexas) e EPA (Expanding Polytope Algorithm para cálculo de penetration depth)
  • 32. Colisões - Detecção •Pode ser dividida em dois tipos: •Discreta: identifica em cada passo os pares que colidem. Tem problemas com objetos que se movimentam muito rápido e objetos de pequenas dimensões, onde um objeto pode eventualmente atravessar outro (tunneling) •Contínua (CCD): calcula o instante em que ocorreu a colisão (time of impact) durante um passo. Evita que objetos atravessem uns aos outros
  • 33. Colisões - CCD ti toi
  • 34. Colisões - Resolução •A resolução de colisões calcula e aplica forças ou impulsos nos pontos de contato para evitar que os corpos penetrem •Impulse-Based Dynamics é a forma mais popular de se resolver colisões, calculando e aplicando impulsos nos corpos de acordo com algumas propriedades dos materiais como o coeficiente de restituição e o coeficiente de atrito
  • 35. Colisões - Resolução •Partindo da expressão vrel(ti)=ϵvrel(ti+1), onde ϵ é o coeficiente de restituição, podemos chegar à famosa fórmula do impulso normal !
  • 36. Colisões - Resting Contacts •Resting Contacts são pontos de contatos que persistem por mais que um passo da simulação •Precisam de um tratamento especial para manter a estabilidade da simulação, principalmente no empilhamento de objetos (stacking) •Sequential Impulses é um método popular para resolver os resting contacts e constraints em simulações baseadas em impulsos
  • 37. Engines •Box2D: engine de física 2D criada por Erin Catto em C++, licença zlib •Chipmunk: engine de física 2D criada por Scott Lembcke em C, licença MIT •Bullet Physics: engine de física 3D criada por Erwin Coumans em C++, licença zlib •PhysX: engine de física 3D proprietário da Nvidia, suporta aceleração por hardware em placas GeForce
  • 38. Referências •Halliday, Resnick. Fundamentals of Physics, 8th Ed. •Andrew Witkin, David Baraff. Physically Based Modeling: Principles and Practice. http:// www.cs.cmu.edu/~baraff/sigcourse/index.html •Gino van den Bergen.A Fast and Robust GJK Implementation for Collision Detection of Convex Objects. http://www.win.tue.nl/~gino/ solid/jgt98convex.pdf