FISL14 - Desmontando uma engine de física

770 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
770
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

FISL14 - Desmontando uma engine de física

  1. 1. desmontando uma engine de física
  2. 2. Adriano Melo Engenhero de Software (INdT) Mestrando em IA (UFPE) Membro do CInLUG http://adrianomelo.com http://github.com/adrianomelo
  3. 3. the incredible circus! nas lojas: meego, symbian, windows phone em breve: facebook e android
  4. 4. o que é uma engine de física? (ou motor de física)
  5. 5. simulações de sistemas físicos como dinâmica de corpos rígidos, de corpos maciose de fluidos
  6. 6. representação gráfica representação geométrica motor de físicaframework gráfico
  7. 7. como integrar a representação geométrica com a repre. gráfica?
  8. 8. main loop •alimenta o sistema com eventos, atualiza a simulação física e desenha os elementos na tela
  9. 9. *16ms = 1 seg / 60 fps exemplo de main loop #1
  10. 10. *16ms = 1 seg / 60 fpshttp://entropyinteractive.com/2011/02/game-engine-design-the-game-loop/ exemplo de main loop #2
  11. 11. movendo objetos
  12. 12. •Verlet integration •Euler method •Runge-kutta methods •Symplectic integrator métodos numéricos https://en.wikipedia.org/wiki/Numerical_ordinary_differential_equations
  13. 13. position verlet - equações Positionnew = Positioncurrent + Acceleration * Timestep2 + (Positioncurrent - Positionold) Positionold = Positioncurrent http://www.pagines.ma1.upc.edu/~susin/files/AdvancedCharacterPhysics.pdf
  14. 14. positionold positioncurrent positionnew-g*t2 positioncurrent - positionold trajetória livre p1 p2 p2 p1 p0
  15. 15. trajetória com colisão p0 p1 p2 p2 terá sua posição corrigida para não entrar no outro objeto
  16. 16. detectando colisões
  17. 17. e1 e2 e3 colidem! (e2 e e3) problema não trivial e de alto custo de processamento! e4
  18. 18. volumes delimitadores representação geométrica que otimiza a detecção de colisões http://en.wikipedia.org/wiki/Bounding_volume
  19. 19. alguns tipos..
  20. 20. e1 e2 e3 e4 usando AABBs como volumes delimitadores (bounding volumes) a checagem de colisão seria feita apenas entre e2 e e3
  21. 21. teorema dos eixos de separação dois objetos convexos não se intersectam se e somente se existe uma linha (chamada de eixo) em que as projeções dos objetos não se cruzam. http://en.wikipedia.org/wiki/Separating_axis_theorem
  22. 22. relembrando o que é uma projeção... ponto P reta R projeção de P em R http://en.wikipedia.org/wiki/Vector_projection
  23. 23. 25º 70º quais eixos testar? 0º e1 e2 e3 usando Oriented Bounding Boxes
  24. 24. e1 e2 e3 v1 v2 v5 v6 v4 v3
  25. 25. resolução de colisões
  26. 26. informações para a resolução •normal do contato •tamanho da interseção •a depender da engine: •ponto do contato •vértice ou aresta envolvida na colisão •formas dos objetos colididos •...
  27. 27. restrições usadas para remover liberdades entre corpos
  28. 28. restrição de distância longe.. perto.. x0 x1 |x1 - x0| = d
  29. 29. restrição de angulo x0 x1 x2 (x2 − x0) ⋅ (x1 − x0) < α
  30. 30. uma engine simples...
  31. 31. •verlet integration •modelar corpos rígidos como partículas com restrições •colisões usando as informações do teorema dos eixos de separação •constraint solver (resolve o comportamento das restrições) d1 d2 d3 d4 d5 d6
  32. 32. https://github.com/subprotocol/verlet-js
  33. 33. •Advanded Character Physics •Thomas Jakobsen •Real-time collision detection •Christer Ericson referências
  34. 34. palestras relacionadas •Arquitetura para jogos multi-plataforma •Sala P09 - quinta das 10 às 11 horas •Workshop de Jogos em HTML5 •Sala 714 - quinta das 14 às 17 horas
  35. 35. obrigado Adriano Melo adrianomelo.com

×