Upload
internet
View
110
Download
0
Embed Size (px)
Citation preview
ACEE24 Abril 2004 – Coimbra Portugal
Mecânica e Geometria 3D em jogos de Mecânica e Geometria 3D em jogos de Simulação FísicaSimulação Física
David R. Gil
Agradecimentos à organização do ACEE e ao Pedro Amaro.
Um Pouco Sobre Mim
• 93 → 97 – Modelação em 3D Studio,(noções de C.G, tipos de luz, texturas, maps, etc)
• 97 – Entrei p/ universidade (IST, Eng. Aeroespacial)
• 98 - 1ª Cadeira de C.G., cadeiras de Física e Mecânica Aplicada.
• 99 → ... – Nunca mais parei...
Alguns dos meus trabalhos:
1998 Simulador de Vôo
2001 Earth Screen Saver
2002 Crazy Wings
2003 Terrain Viewer, Star Force
2004 Ecodrive
Simulador de Voo C.A.S.A.(O meu primeiro Jogo)
• Motor Físico muito Motor Físico muito elaborado, noções elaborado, noções de um jogo de de um jogo de simulação 3D. simulação 3D. Texturas, Texturas, iluminação, etc.iluminação, etc.
Earth Screen Saver
• Texturas e Iluminação Refinada, Texturas e Iluminação Refinada, Optimização Gráfica.Optimização Gráfica.
• Simulação Real-TimeSimulação Real-Time• Ver Ver www.dgadv.com
Ver exemplo
Crazy Wings
• Jogo Divertido• 2D, Som e
Jogabilidade
Ver Exemplo
Terrain ViewerTerrain Viewer
Ver Video Serra d’AireVer Video Voo do Falcon 20Ver Exemplo
Para mais detalhes ver página http://www.dgadv.com/dgtv
Star Force Academy
Ver Exemplo
Star Force – Game Engine1º Passo – Ambiente 3D, Articulações, Transformações
Ver Exemplo
Star Force – Game Engine(Outras Funcionalidades)
Luz Especular (que afecta o) Blending
Tiros
Colisões (dos tiros)
Cenário Distante
Cockpit Virtual
Multi – Identidades independentes
Ecodrive
Ver Video
Ver Exemplo
Executado segundo o enunciado do trab. Final da cadeira de Modelação e Visualização 3D (MVT)
Classificação obtida: 20
Um pouco do que isto é feito(programar jogos – os programas mais dificeis)
Programação
ComplicadaGeometria
Física
Computação
GráficaInterface
SomJoga
bilid
ade
AtractivoEstética, Sensibilidade
Inte
ligen
cia
Artific
ial
Motricidade Humana
Estrutura de um jogo de Estrutura de um jogo de simulaçãosimulação
Inicialização
Fim?
Sair
Ciclo de execuçãotemporizado 1/T = 15 fps
Simulação Física
Desenhar cena
Aplicar Controlo
Tocar sons
Geometria
xz
y
v
2
2.5
3
-Os referenciais serverm para localizar numericamente objectos no espaço.
-Referencial Ortonormado, direito
Coordenadas do ponto V:
X=2, Y= 2.5 e Z=3
2 Referenciais(exemplo de um simulador de voo)
xz
y
3
X’Y’
Z’
- Referencial 1 – Referencial de inercia (aeroporto)
- Referencial 2 – Referencial do corpo (avião)
2 Referenciais (Transformação de coordenadas)
x
y
3
X’Y’
Z’
Para desenhar p/exemplo a asa, quero transformar os pontos do referencial avião para o referencial aeroporto:
X
Y
Z
= X’
Y’
Z’
X’x Y’x Z’z
X’y Y’y Z’y
X’z Y’z Z’z
.
Alternativa que não precisa de utilizar algebra linear: comandos tipo glTranslate glRotate
Px
Py
Pz
+
2 Referenciais – Física
xz
y
3
X’Y’
Z’
Lei de Newton:Acel.=Força/massa
Veloc=VelInit+Acel x T
Incremento na posição:
IncX=VelocX x TIncY=VelocY x TIncZ=VelocZ x T
Os Incrementos estão no referencial avião, para poderem ser aplicados à simulação tem de ser transformados para o referencial principal
motor
Peso
Atrito
sustentação
Outras Ferramentas
• Quaterniõese0=(float)cos(-angle*PI/360.0f);e1=c6x*(float)sin(-angle*PI/360.0f);e2=c6y*(float)sin(-angle*PI/360.0f);e3=c6z*(float)sin(-angle*PI/360.0f);//gg
c6x=2.0f*(ct2->cx*(e0*e0+e1*e1-0.5f)+ct2->cy*(e1*e2-e0*e3)+ct2->cz*(e1*e3+e0*e2));c6y=2.0f*(ct2->cx*(e1*e2+e0*e3)+ct2->cy*(e0*e0+e2*e2-0.5f)+ct2->cz*(e2*e3-e0*e1));c6z=2.0f*(ct2->cx*(e1*e3-e0*e2)+ct2->cy*(e2*e3+e0*e1)+ct2->cz*(e0*e0+e3*e3-0.5f));
Funcionamento: dá-se o vector e o angulo em torno do qual, o ponto deve rodar, os calculos devolvem as coordenadas do ponto rodado.
São essenciais para rodar camaras e objectos em 3D em especial para a simulação física de aviões, são evitáveis para uma simulação de 2D e meia, por exemplo: carro, barco, mota.
Ver Exemplo
Outras Ferramentas
• Produto Interno
Pi=x1.x2+y1.y2+z1.z2
- Quantifica o quanto próximos os vectores são: Se eles forem colineares, dá 1, se forem perpendiculares dá 0, se tiverem sentidos opostos dá -1.
- Aplicações: Iluminação, determinar projecções, determinar se um carro está dentro da estrada, etc.
Produto Interno - Exemplos
Outras Ferramentas
• Produto Externo
x=(y1*z2-z1*y1);y=(z1*x2-x1*z1);z=(x1*y2-y1*x1);
- Quantifica a perpendicularidade entre vectores. Se eles forem colineares, dá 0, se forem perpendiculares dá 1
- Aplicações:Detecção de Colisões, Ortogonalizar um sistema de coordenadas, determinar momentos, ou seja, o quanto uma força vai fazer rodar um corpo.
Apresentação disponibilizada em http://www.dgadv.com/down