Slides Computação Gráfica · Compara-se o quadrado da distância com o quadrado do raio ......
-
Upload
phungxuyen -
Category
Documents
-
view
217 -
download
0
Transcript of Slides Computação Gráfica · Compara-se o quadrado da distância com o quadrado do raio ......
Licenciatura em Engenharia Informática e de Computadores
Computação Gráfica
Colisões e Sistemas de Partículas
LEIC CG Tratamento de Colisões
Detecção de Colisões Determinação
da Colisão Resposta à
Colisão
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Tratamento de Colisões
Detecção de Colisões Determinação
da Colisão Resposta à
Colisão
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Collision Handling
Collision Detection Collision
Determination Collision Response
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Collision Handling
Collision Detection Collision
Determination Collision Response
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Tratamento de Colisões
Detecção de Colisões Determinação
da Colisão Resposta à
Colisão
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Collision Handling
Collision Detection Collision
Determination Collision Response
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Collision Handling
Detecção de Colisões Determinação
da Colisão Resposta à
Colisão
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
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…
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
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’
= 0: no plano
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
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);
}
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
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)
Para aproximar o volume real dos objectos
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
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)
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Axis-Aligned Bounding Boxes: AABBs
Especificadas por dois pontos:
Normais simples de calcular
Teste de point-inside muito simples:
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Problemas com AABB’s
Não muito eficientes
Rotação complicada
Tem de se rodar modelo e reculcular AABB
Não é eficiente
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
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
Mas teste point inside/ouside mais complicado de calcular
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
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!!
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG Esferas como volumes envolventes
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
r1
C1
r2
C2
Quadrado da distância (squared distance):
If dist( C1, C2)2 ≤ (r1 + r2)
2 then collide
dist( C1, C2)2 = (C2x-C1x)
2+(C2y-C1y)2+(C2z-C1z)
2
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
© 2011 Corpo docente de AVT / CG&M / DEI / IST / UTL
LEIC CG
Sistemas de Partículas
© 2011 Corpo docente de Computação Gráfica / CG&M / DEI / IST / UTL
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)
http://www.youtube.com/watch?v=T91iqyqyH6M
© 2011 Corpo docente de Computação Gráfica / CG&M / DEI / IST / UTL
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 desastroso em termos de desempenho.
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; à
semelhança dos fractais
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
já existentes.
LEIC CG Um exemplo
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
Decremento do tempo de vida (por frame)
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)
v(t+h) ≈ v(t) + h a(t)
LEIC CG Método Euler – Posição e Velocidade
LEIC CG Uma partícula (Exemplo)
LEIC CG Atributos dum SP (Exemplo)
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!
E agora? Quando o fumo desaparecer o que se faz à partícula??
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!
A solução é re-aproveitar as partículas, não as destruindo.
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
http://www.jhlabs.com/java/particles.html
LEIC CG Fireworks (circular)
LEIC CG Fireworks (rectangular)
LEIC CG Fireworks (iglu)
LEIC CG Fireworks (disco)