Upload
internet
View
134
Download
0
Embed Size (px)
Citation preview
Real Time Rendering
a. Pipeline Gráfico
Pipeline Gráfico
- Pipeline / Estágios
- Gargalo
- Otimização
- Tipos de Processamento Paralelo
referência
Real Time Rendering – Second EditionAkenine-Möller, Haines
Pipeline Gráfico
Aplicação Geometria Rasterização
FísicaEntrada de DadosInteligência ArtificialCulling
Rendering
TransformaçãoIluminação de vérticeProjeção Recorte
Z-BufferTexturizaçãoIluminação por pixel
Representação de modelos geométricos
Representação de modelos geométricos
Lista de VérticesV1: x1, y1, z1V2: x2, y2, z2...
Lista de FacesF1: v1, v2, v3F2: v2, v3, v4...
Lista de materiaisM1: F1, F2, F3M2: F4, F5, F6...
Representação de modelos geométricos
Representação de modelos geométricos
Outras Representações
Half-Edge Meshes – Similar ao HE, mas com simplificação para um predecessor e um sucessor (ao invés de 2).
Quad-Edge Meshes – Similar, porém sem referencia às faces
Corner-Table – Armazena os vértices numa tabela pré-definida de acordo com a ordem ditada pelo polígono
modelos geométricos – 3DS MAX ASCII
Named Object: “Quadrado”Tri-mesh, Vertices: 8 Faces: 12Vertex list:Vertex 0: X: -1.00000 y: -1.00000 z: -1.00000Vertex 1: X: -1.00000 y: -1.00000 z: 1.00000Vertex 2: X: 1.00000 y: -1.00000 z: -1.00000Vertex 3: X: 1.00000 y: -1.00000 z: 1.00000Face List:Face 0: A:2 B:3 C:1 AB:1 BC:1 CA:1Material:”r255b255b255a0”Face 1: A:2 B:1 C:0 AB:1 BC:1 CA:1Material:”r255b255b255a0”
Trabalho 1
Para um cubo composto por faces triangulares (12 triangulos), calcule:
- O tamanho, em Bytes, para cada uma das estruturas citadas
-Como responder as seguintes perguntas:- Quantas faces usam um determinado vértice?- Que arestas usam este vértice?- Que faces tem esta aresta como borda?- Que arestas estão contidas nesta face?- Que faces são adjacentes a esta face?
Estágio de Geometria
Transformação de Modelo e visão
Iluminação por vértice Projeção
Clipping
MapeamentoEm tela
Aproximadamente 100 operações de ponto flutuante para esta aplicação
Transformação de Modelo e Visão
Coordenadas de Modelo
Coordenadas de Mundo
Eye Space
camera
z
x
Transformações Homogeneas
Permite concatenação de matrizes
Vetores: (a b c 0)
Pontos: (a b c 1)
Transformações Homogeneas
Processo de “homogenização” de um ponto
(px/pw, py/pw, pz/pw, 1)
Transformação
Observação: vetores não sairão do lugar
Rotação
Rotação
Escala
Composição de Transformações
Como rotacionar um objeto ao redor de um ponto p?
T(p).Rz().T(-p)
Transformações de corpos rígidos
Distância relativa entre os vértices não é alterada
Desfazer as Transformações
X = T(t)R =
X-1 = (T(t)R)-1 = R-1 T(t)-1 = RTT(-t)
Exercício
Crie uma matriz de transformação para o movimento abaixo
Quaternions
Em simulações dinâmicas é preferivel usar quaternions unitários a matrizes de rotação (corpos rígidos), devido ao acumulo de erros numéricos na matriz de rotação.
Quaternions - Definição
Um quaternion q é uma estrutura algébrica constituída de duas partes: um escalar s e um vetor v = (vx, vy, vz), ou q = [s,v].
A multiplicação de dois quaternions q1 e q2 édefinida como
q1q2 = [s1,v1][s2,v2] = [s1s2−v1 ·v2, s1v2+s2v1+v1×v2]
Quaternions - Definição
Um quaternion unitário é um quaternion onde s2+v2
x+v2y+v2
z= 1.
Assim, se u for um vetor unitário, pode-se dizer que:q = (cossinué unitário
DEMONSTRE
Quaternions - Definição
Uma rotação de um ângulo em torno do eixo u (normalizado) é representada pelo quaternion unitário:
q = [s,v] = [cos(/2),sen(/2)u]
A rotação inversa q−1 é definida invertendo-se o sinal de s ou de v na equação acima, mas não de ambos.
Quaternions - Definição
Para rotacionar um ponto P(x, y, z) por um quaternion q, escreve-se o ponto P como o quaternion p = [0, (x,y, z)] e efetua-se o produto:
prot = q [0, (x´,y´, z´)] q−1 = q p q−1,
O que é Iluminação?O que é Iluminação?
• Fenômeno físico resultante da interação de fótons Fenômeno físico resultante da interação de fótons com uma superfíciecom uma superfície
MotivaçãoMotivação
Modelos de iluminaçãoModelos de iluminação
Conceitos de Raios de LuzConceitos de Raios de Luz
luz
visãoreflexo
Forward RaytracingForward Raytracing
Problema do Forward RaytracingProblema do Forward Raytracing
Backward RaytracingBackward Raytracing
Traçamento de RaiosTraçamento de Raios
Traçamento de RaiosTraçamento de Raios
Interseção do Raio com um objetoInterseção do Raio com um objeto
Interseção Raio com esferaInterseção Raio com esfera
Raio: R(t) = R0 + t * Rd , t > 0 Com R0 = [X0, Y0, Z0] e Rd = [Xd, Yd, Zd] X = X0 + Xd * tY = Y0 + Yd * tZ = Z0 + Zd * t
Esfera:Sc = [xc, yc, zc] S: (xs - xc)2 + (ys - yc)2 + (zs - zc)2 = Raio2
Interseção Raio com esferaInterseção Raio com esfera
Substituindo a equação do raio na equação da esfera: (X0 + Xd*t - Xc)2 + (Y0 + Yd*t - Yc)2 + (Z0 + Zd*t - Zc)2 = Raio2
Desenvolvendo a equação e juntando as constantes:Teremos uma equação da forma: At2 + Bt + COnde
A = Xd2 + Yd2 + Zd2
B = 2*(Xd * (X0 - Xc) + Yd * (Y0 - Yc) + Zd * (Z0 - Zc))C = (X0 - Xc)2 + (Y0 - Yc)2 + (Z0 - Zc)2 – Raio2
Para que de fato a equação resulte numa interseção:At2 + Bt + C = 0
Interseção Raio com esferaInterseção Raio com esfera
-Se as raizes t0 e t1 forem números complexos: não há raízes reais e portanto não há interseção
-Se t0 = t1 : houve tangencia da reta e a esfera
-Se t0 e t1 forem distintas e reais: houve interseção. Deve-se calcular qual o ponto mais próximo do observador.
Exercício: Interseção Raio com planoExercício: Interseção Raio com plano
Equação do Plano:
Ax + By + Cz = d
Determine a equação para interseção com o raio:
R(t) = R0 + t * Rd , t > 0 Com R0 = [X0, Y0, Z0] e Rd = [Xd, Yd, Zd] X = X0 + Xd * tY = Y0 + Yd * tZ = Z0 + Zd * t
IluminaçãoIluminação
-Se houver iluminação?
45
Componentes da Iluminação Componentes da Iluminação – Ambiente– Ambiente
Componentes da Iluminação Componentes da Iluminação – Ambiente– Ambiente
Componentes da Iluminação Componentes da Iluminação – Radiosidade– Radiosidade
48
Componentes da Iluminação Componentes da Iluminação – Radiosidade– Radiosidade
Componentes da Iluminação Componentes da Iluminação – Ambiente– Ambiente
Cora= materia . Ia
Normal de uma SuperfícieNormal de uma Superfície
N
Modelo Phong - DifusoModelo Phong - Difuso
NL
Iluminação
cos Iluminação
cos = L . N
Componentes da Iluminação Componentes da Iluminação – Difuso– Difuso
Cord = Material . cos cos N . L
Cord = K . (N . L)
Componentes da Iluminação Componentes da Iluminação – Especular– Especular
Normal (N)
Reflexo (R)
Luz (L)Observador ( O )
Componentes da Iluminação Componentes da Iluminação – Especular– Especular
Core = Material . (cos n
cos O . RCore = K . (O . R)n
n = 2 n = 5 n = 30
Modelo PhongModelo Phong
NL
Iluminação
cos Iluminação
cos = L . N
Itotal = Iambiente + Idifusa + Iespecular
IluminaçãoIluminação
Reflexo e RefraçãoReflexo e Refração
Recursividade do Ray TracingRecursividade do Ray Tracing
Recursividade do Ray TracingRecursividade do Ray Tracing
NL Reflexo
Transmissão
P
Recursividade do Ray TracingRecursividade do Ray Tracing
Itotal = IPhong( P ) + Raytracing (Reflexo) + Raytracing (Transmissão)
Implementação do Ray TracingImplementação do Ray Tracing
Ray_Tracing (VETOR)Para cada Pixel da Imagem OBJETO_MAIS_PRÓXIMO = NENHUM DISTANCIA_MINIMA = INFINITO Crie um raio do observador ao pixel Para cada Objeto da Cena Se o raio tem interseção com este objeto Se DISTANCIA_MINIMA < distancia (camera até este objeto) OBJETO_MAIS_PRÓXIMO = este objeto Se OBJETO_MAIS_PRÓXIMO == NENHUM Pixel = COR_DE_FUNDO Senão REFLEXO = Calcula_Reflexo (OBJETO_MAIS_PRÓXIMO, LUZ) TRANSMISSÃO = Calcula_Transmissão (OBJETO_MAIS_PRÓXIMO, N) Pixel = Phong(OBJETO) + Ray_Tracing (REFLEXO) + Ray_Tracing (TRANSMISSÃO)
Iluminação por polígonosIluminação por polígonos
N
1 cálculo de iluminação por polígono
Iluminação por vérticeIluminação por vértice
N2
4 cálculos de iluminação por polígono
N1
N3
N4
Iluminação por vérticeIluminação por vértice
Iluminação por pixelIluminação por pixel
n cálculos de iluminação por polígono
ProjeçãoProjeção Ortográfica
Assumindo que os vértices estão em coordenadas de eye space
A matriz não possui inversa, pois a determinante é nula. Assim, esta é uma transformação sem “volta”
Linhas paralelas permanecem paralelas
Projeção
q
z
x
p
Z= -d
pz
qx px
qx -d
px pz
= qx -d px
pz
=
Exercício: Encontre a matriz de Projeção Perspectiva
Projeção Perspectiva
Clipping
Mapeamento para Coordenada de Tela
Algumas Otimizações
b. Triangle Strips
Idéia fundamental: minimizar volume de vértices e consequentemente, minimizar cálculos de iluminação, normais, clipping, etc.
Triangle Strips
Strips: É possível descrever um triângulo com menos de 3 vértices?
Para n triângulos, n+2 vérticesCada Triangulo: Vi, Vi+1, Vi+2
Problema
Triangle Strips
Problema
Triangle Fans
Cada Triangulo: V1, Vi+1, Vi+2
Rasterização
Algoritmo de Z-Buffer