transformações 3d -...

17
Transformações & Recorte 3D Detecção de Colisão Processamento Gráfico Desenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt Transformações 3D Update: 23 Out. 2007 [email protected]

Upload: others

Post on 18-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Transformações & Recorte 3DDetecção de Colisão

Processamento Gráfico

Desenvolvimento de Jogos & Entretenimento Digital

UNISINOS

Prof. MSc. João Ricardo Bittencourt

Transformações 3D

Update: 23 Out. 2007

[email protected]

Page 2: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Sumário

.1 Transformações 3D

.2 Recorte 3D (Culling & Clipping)

.3 Detecção de Colisão Trivial: Contexto 2D Em ambientes 3D

Page 3: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Conceitos As transformações 3D seguem o mesmo

princípio das transformações 2D Considera o espaço tridimensional Chave: Multiplicação de matrizes! Baseadas nas coordenadas homogêneas As transformações podem ser combinadas

Na OpenGL sempre são acumulativas Transformações

Translação Escala Rotação

Page 4: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Transformações 3D Translação

x ' y ' z ' 1= x y z 1⋅1 0 0 Dx0 1 0 Dy0 0 1 Dz0 0 0 1 glTranslated(dx,dy,dz)glTranslatef(dx,dy,dz)

Page 5: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Transformações 3D Escala

x ' y ' z ' 1= x y z 1⋅Sx 0 0 00 Sy 0 00 0 Sz 00 0 0 1

glScaled(sx,sy,sz)glScalef(sx,sy,sz)

Page 6: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Transformações 3D Rotação – Eixo Z

x ' y ' z ' 1= x y z 1⋅cos −sen 0 0sen cos 0 00 0 1 00 0 0 1

glRotated(angGraus,0.0,0.0,1.0)glRotatef(angGraus,0.0,0.0,1.0)glRotatef(angGraus,vx,vy,vz)

Page 7: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Transformações 3D Rotação – Eixo X

x ' y ' z ' 1= x y z 1⋅1 0 0 00 cos −sen 00 sen cos 00 0 0 1

glRotated(angGraus,1.0,0.0,0.0)glRotatef(angGraus,1.0,0.0,0.0)

Page 8: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Transformações 3D Rotação – Eixo Y

x ' y ' z ' 1= x y z 1⋅ cos 0 sen 00 1 0 0

−sen 0 cos 00 0 0 1

glRotated(angGraus,0.0,1.0,0.0)glRotatef(angGraus,0.0,1.0,0.0)

Page 9: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Recorte 3D Objetivo: otimizar o processamento eliminando

polígonos desnecessários. Culling

Eliminar porções ou objetos inteiros que não são visíveis. Polígonos que estão fora do frustrum ou que estão encobertos

Clipping Computar a intersecção dos objetos no

frustrum. Mesmo princípio do clipping 2D

Algoritmo de Cohen-Sutherland

Page 10: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Recorte 3D Culling

Definir uma caixa imaginária em torno do objeto

Esta caixa é chamada de bounding volume Esfera, caixas,cápsulas, losangos,

cilindros,elipsóides

Page 11: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Recorte 3D Culling

Page 12: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Recorte 3D Culling

Otimização: organização dos bounding volumes dos objetos em uma árvore.

Se o nodo pai envolve a área dos nodos filhos, a verificação de culling é feita somente para o nodo pai.

Se colide com um nodo pai nem verifica para os nodos filhos

Page 13: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Recorte 3D Culling

ADAEJDJECDCE

B B

E DP

P

B E D

Ce Je Ae Cd Jd Ad

Page 14: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Recorte 3D Clipping

Os objetos que não foram excluídos no culling poderão interseccionar com o frustrum. Logo, precisam ser cortados

Algoritmo de Cohen-Sutherland adaptado para 3D. São usados 6 bits:

Bit 1 – ponto acima do frustrum y>1 Bit 2 – ponto abaixo do frustrum y<-1 Bit 3 – ponto a direita do frustrum x>1 Bit 4 – ponto a esquerda do frustrum x<-1 Bit 5 – ponto atrás do frustrum z<-1 Bit 6 – ponto em frente do frustrum z>0

Page 15: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Recorte 3D Clipping

Trivialmente aceito Trivialmente rejeitado Cálculo da intersecção dos polígonos do objeto

3D com os planos do frustrum

Page 16: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Detecção de Colisão Cercar o objeto com uma caixa invisível

(bounding volume) Pseudo-código (2D)

Se algum vértice do quadrado amarelo está contido no quadrado azul

Ocorreu colisão

Page 17: Transformações 3D - Unisinosprofessor.unisinos.br/ltonietto/jed/pgr/010_Transf3D.pdfDesenvolvimento de Jogos & Entretenimento Digital UNISINOS Prof. MSc. João Ricardo Bittencourt

Detecção de Colisão Podem ser usadas outras formas: eclipse,

esfera,losango,... Os objetos 3D podem ser organizados

hierarquicamente Pseudo-código trivial(3D) Se algum vértice da caixa amarela está contido

na caixa azul Ocorreu colisão