Licenciatura em Engenharia Informática e de Computadores
Computação Gráfica
LEIC CG
Tratamento de Colisões
LEIC CG
Tratamento de Colisões
Detecção de Colisões Determinação da Colisão Resposta à Colisão
LEIC CG
Collision Handling
LEIC CG
Collision Handling
Collision Detection Determination Collision Response Collision
LEIC CG
Tratamento de Colisões
LEIC CG
Collision Handling
Collision Detection Determination Collision Response Collision
LEIC CG
Collision Handling
LEIC CG
O que precisam de conhecer?
Geometria básica Vectores, pontos, coordenadas homogéneas,
Transformações afins, produtos interno e externo
Normais
Planos e outras formas básicas
Conceitos Matemáticos ajudam…
LEIC CG
Equação do Plano
Plano 3D definido por normal e
distância ao longo dessa normal
Equação do plano: (Nx, Ny, Nz) · (x, y, z) + d = 0 Encontrar d: (Nx, Ny, Nz) • (Px, Py, Pz) = − d Para o ponto de test (x,y,z), se eq. plano
> 0: ponto no ‘front side’ (na direcção da normal),
< 0: no ‘back side’
LEIC CG
Produto interno e externo
point point::operator^(point p) {// depends on the choice of orientation point res;
res.x = y*p.z - z*p.y; res.y = z*p.x - x*p.z; res.z = x*p.y - y*p.x; return res;
}
double point::operator*(point p) { return (p.x*x + p.y*y + p.z*z); }
LEIC CG
Onde começamos?
Primeiro têm de detectar collisões
Em intervalos de tempo discretos:
• Em cada frame verificam se objectos se intersectam (overlapping)
Testar se os volumes exactos dos modelo se
intersectam é muito lento
Usam-se volumes envolventes (bounding volumes)
LEIC CG
Volumes envolventes?
Devem ser convexos esferas, cilindros, paralelepípedos, poliedros, etc…
Esferas e paralelepípedos (boxes) são as formas mais usadas
Para boxes, a intersecção começa com testes de
ponto dentro/fora (point inside-outside tests)
LEIC CG
Axis-Aligned Bounding Boxes: AABBs
Especificadas por dois pontos:
Normais simples de calcular
LEIC CG
Problemas com AABB’s
Não muito eficientes Rotação complicada
Tem de se rodar modelo e reculcular AABB
Não é eficiente
LEIC CG
Oriented Bounding Boxes
Definidas por: Centróide, 3 eixos normalizados, 3 meios-comprimentos
Pode ser definido por 8 pontos
Mais eficiente
Eixos são as 3 normais das faces
Melhor envolvência que esferas ou AABB’s
LEIC CG
Esferas como volumes envolventes
O mais simples volume envolvente Definido por Centro e Raio
Teste de point inside/outside:
Calcular a distância entre o ponto a testar e o centro
Se distância <= raio, então ponto está dentro
Não é necessário calcular a raiz quadrada
Compara-se o quadrado da distância com o quadrado do raio
(fica muito mais rápido)
Vale SEMPRE a pena testar com uma esfera antes
fazer testes mais complexos!!
LEIC CG
Esferas como volumes envolventes
r1 C1
r2 C2
Quadrado da distância (squared distance):
If dist( C1, C2)2 ≤ (r
1 + r2)2 then collide
dist( C1, C2)2 = (C
LEIC CG
Conclusões
Não se pode testar todos os pares de faces: O(n2)
usar BVs porque são simples de testar melhor: usar BVs hierárquicos
Primeiro testa-se com esfera,
Se colidir, testa-se com AABB
Se também colidir testa-se com OBB
LEIC CG
LEIC CG
Sistemas de Partículas
William T. Reeves, Particle Systems - A Technique
for Modeling a Class of Fuzzy Objects”, Computer Graphics (Proc. SIGGRAPH’83), Vol. 17, No3 pp. 359-376, 1983
Usado num projecto de efeitos especiais para o
filme “Star Trek II: The Wrath of Khan”
O sistema permite a representação de objectos,
cujas superfícies não são bem definidas, através de uma colecção de partículas, utilizando as leis de mecânica de Newton
LEIC CG
The Wrath of Khan
The Wrath of Khan(de History of Computer Graphics)
http://www.youtube.com/watch?v=n6YvhhY_N5A&NR=1 The Genesis Wave (som doutro filme…)
http://www.youtube.com/watch?feature=endscreen&NR=1&v= NM1r37zIBOQ
Star Trek’s CGI pioneers (2/2)
LEIC CG
Sistemas de Partículas (SP)
Extremamente úteis para simulação de fenómenos físicos
e naturais.
Modo de representar entidades como: água, fogo, fumo,
explosões, conjuntos de animais (bandos, manadas, cardumes), elementos da natureza em geral (neve, chuva, relva, furacões..)
Atualmente quase todos os jogos os usam
É necessário desenhar um sistema eficiente e flexível. Um sistema mal desenhado pode ter um impacto
LEIC CG
Sistemas de Partículas (SP)
Representação de um objecto como uma nuvem de partículas a qual
define o seu volume (ao invés de se utilizar a primitiva poligono utiliza-se a primitiva partícula)
As partículas não são entidades estáticas, ou seja, o SP evolui ao longo
do tempo: as partículas do sistema:
Nascem;
movem-se;
Alteram a sua aparência;
morrem
Um objecto representado por um SP é não-determinístico; a sua
forma nunca é completamente definida
SPs são um exemplo de modelação procedimental estocástica; à
LEIC CG
Propriedades dum SP
Partículas são simples (computacionalmente eficientes) A geração e os atributos das partículas são
procedimentais, podem ser, por ex., resultados de cálculos da ciência e da engenharia
LOD é fácil
variar o número de partículas consoante a distância à câmara
Opção boa na representação de objectos complexos, de
objectos amorfos bem como na modelação de comportamentos complexos
LEIC CG
Modelo básico dum SP
O que é um SP?
Colecção de partículas
Conjunto de funções que controla o comportamento (alteração dos
atributos) das partículas ao longo do tempo
Em cada frame:
1. Geração de partículas com atributos iniciais (frequente o uso de
métodos estocásticos)
2. Destruição das partículas cujo tempo de vida se esgotou 3. Alteração dos atributos das partículas: posição, cor, etc 4. Visualizar as partículas “vivas”
LEIC CG
A estrutura de dados
Desenhar uma estrutura de dados eficiente é
essencial.
Deve fornecer, não só desempenho, como também
flexibilidade.
Deve permitir vários tipos de sistemas, bem como
várias maneiras de comportamento das partículas.
Deve permitir um fácil integração com ferramentas
LEIC CG
LEIC CG
Atributos de uma partícula
Posição (x, y e z) Vector Velocidade (vx, vy e vz) Aceleração (ax, ay e az)
Tamanho
Cor e Transparência Forma
Tempo de Vida
LEIC CG
Método Euler – Posição e Velocidade
a(t) ≈ (v(t+h) - v(t))/h e v(t) ≈ (y(t+h) - y(t))/h, onde h = ∆t Assim:
y(t+h) ≈ y(t) + h v(t)
LEIC CG
LEIC CG
LEIC CG
LEIC CG
Gestor de sistemas
Gere todos os sistemas! Normalmente efectua funções de regulação a
cada um dos sistemas, mas também pode efectuar operações discriminativas.
LEIC CG
Considerações sobre SPs
Sistemas de partículas lidam com enormes quantidades de dados É necessária uma gestão de memória eficaz!
Exemplo:
Imaginem um missil disparado que vai deixando um rasto de fumo.
Quanto maior a distância percorrida pelo missil maior a quantidade de
fumo gerada.
As partículas vão aumentando até chegar a um limite impraticável – uso
adequado do tempo de vida
Mas o primeiro fumo vai desaparecendo!
LEIC CG
Considerações sobre SPs
Podemos destruir a partícula, quando ela deixa de estar
visível!
ATENÇÃO! Devemos evitar destruir a partícula.
A alocação e libertação de memória são muito pesadas
em termos de desempenho!
Lidar com partículas inactivas é algo com que se tem que
lidar sempre.
Deve ser algo muito simples!
LEIC CG
Considerações sobre SPs
As partículas reaproveitam-se utilizando uma
técnica que se chama de respawn!
Consiste em inicializar a partícula que “morre”,
colocando-a de novo no emissor.
Exemplos:
http://www.jhlabs.com/java/particles2.html
LEIC CG
LEIC CG
LEIC CG
LEIC CG