transformações 3d -...

Post on 18-Sep-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

joaorb@unisinos.br

Sumário

.1 Transformações 3D

.2 Recorte 3D (Culling & Clipping)

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

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

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)

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)

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)

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)

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)

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

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

Recorte 3D Culling

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

Recorte 3D Culling

ADAEJDJECDCE

B B

E DP

P

B E D

Ce Je Ae Cd Jd Ad

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

Recorte 3D Clipping

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

3D com os planos do frustrum

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

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

top related