Parte 1 Conceitos de Real Time Rendering a

  • Slides: 68
Download presentation
Parte 1 – Conceitos de Real Time Rendering

Parte 1 – Conceitos de Real Time Rendering

a. Pipeline Gráfico

a. Pipeline Gráfico

Pipeline Gráfico referência - Pipeline / Estágios - Gargalo - Otimização - Tipos de

Pipeline Gráfico referência - Pipeline / Estágios - Gargalo - Otimização - Tipos de Processamento Paralelo Real Time Rendering – Second Edition Akenine-Möller, Haines

Pipeline Gráfico Rendering Aplicação Física Entrada de Dados Inteligência Artificial Culling Geometria Transformação Iluminação

Pipeline Gráfico Rendering Aplicação Física Entrada de Dados Inteligência Artificial Culling Geometria Transformação Iluminação de vértice Projeção Recorte Rasterização Z-Buffer Texturização Iluminação por pixel

Representação de modelos geométricos

Representação de modelos geométricos

Representação de modelos geométricos Lista de Vértices V 1: x 1, y 1, z

Representação de modelos geométricos Lista de Vértices V 1: x 1, y 1, z 1 V 2: x 2, y 2, z 2. . . Lista de Faces F 1: v 1, v 2, v 3 F 2: v 2, v 3, v 4. . . Lista de materiais M 1: F 1, F 2, F 3 M 2: F 4, F 5, F 6. . .

modelos geométricos – 3 DS MAX ASCII Named Object: “Quadrado” Tri-mesh, Vertices: 8 Faces:

modelos geométricos – 3 DS MAX ASCII Named Object: “Quadrado” Tri-mesh, Vertices: 8 Faces: 12 Vertex list: Vertex 0: X: -1. 00000 y: -1. 00000 z: -1. 00000 Vertex 1: X: -1. 00000 y: -1. 00000 z: 1. 00000 Vertex 2: X: 1. 00000 y: -1. 00000 z: -1. 00000 Vertex 3: X: 1. 00000 y: -1. 00000 z: 1. 00000 Face List: Face 0: A: 2 B: 3 C: 1 AB: 1 BC: 1 CA: 1 Material: ”r 255 b 255 a 0” Face 1: A: 2 B: 1 C: 0 AB: 1 BC: 1 CA: 1 Material: ”r 255 b 255 a 0”

Trabalho 1 Defina uma classe que seja uma estrutura de dados para descrever um

Trabalho 1 Defina uma classe que seja uma estrutura de dados para descrever um modelo 3 D extensível e otimizado. Escreva um método que determine o tamanho do modelo, em bytes. Simule o método para uma malha com 1000 triângulos, 6 materiais diferentes Um número inteiro é dado por 2 bytes e um número real por 4 bytes.

Estágio de Geometria Transformação de Modelo e visão Iluminação por vértice Projeção Clipping Mapeamento

Estágio de Geometria Transformação de Modelo e visão Iluminação por vértice Projeção Clipping Mapeamento Em 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 x camera Eye

Transformação de Modelo e Visão Coordenadas de Modelo Coordenadas de Mundo x camera Eye Space z

Transformações Homogeneas Permite concatenação de matrizes Vetores: (a b c 0) Pontos: (a b

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çõ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

Transformação Observação: vetores não sairão do lugar

Rotação

Rotação

Rotação

Rotação

Escala

Escala

Composição de Transformações Como rotacionar um objeto ao redor de um ponto p? T(p).

Composição de Transformações Como rotacionar um objeto ao redor de um ponto p? T(p). Rz(a). T(-p)

Transformações de corpos rígidos Distância relativa entre os vértices não é alterada

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 =

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

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

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:

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 q 1 e q 2 é definida como q 1 q 2 = [s 1, v 1][s 2, v 2] = [s 1 s 2−v 1 ·v 2, s 1 v 2+s 2 v 1+v 1×v 2]

Quaternions - Definição Um quaternion unitário é um quaternion onde s 2+v 2 x+v

Quaternions - Definição Um quaternion unitário é um quaternion onde s 2+v 2 x+v 2 y+v 2 z= 1. Assim, se u for um vetor unitário, pode-se dizer que: q = (cos , sin u é unitário DEMONSTRE

Quaternions - Definição Uma rotação de um ângulo em torno do eixo u (normalizado)

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,

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, Escreva uma forma simplificada para rotacionar um ponto ao redor do eixo z = (0, 0, 1)

O que é Iluminação? • Fenômeno físico resultante da interação de fótons com uma

O que é Iluminação? • Fenômeno físico resultante da interação de fótons com uma superfície

Motivação

Motivação

Modelos de iluminação

Modelos de iluminação

Conceitos de Raios de Luz luz visão reflexo

Conceitos de Raios de Luz luz visão reflexo

Forward Raytracing

Forward Raytracing

Problema do Forward Raytracing

Problema do Forward Raytracing

Backward Raytracing

Backward Raytracing

Traçamento de Raios

Traçamento de Raios

Traçamento de Raios

Traçamento de Raios

Interseção do Raio com um objeto

Interseção do Raio com um objeto

Interseção Raio com esfera Raio: R(t) = R 0 + t * Rd ,

Interseção Raio com esfera Raio: R(t) = R 0 + t * Rd , t > 0 Com R 0 = [X 0, Y 0, Z 0] e Rd = [Xd, Yd, Zd] X = X 0 + Xd * t Y = Y 0 + Yd * t Z = Z 0 + Zd * t Esfera: Sc = [xc, yc, zc] S: (xs - xc)2 + (ys - yc)2 + (zs - zc)2 = Raio 2

Interseção Raio com esfera Substituindo a equação do raio na equação da esfera: (X

Interseção Raio com esfera Substituindo a equação do raio na equação da esfera: (X 0 + Xd*t - Xc)2 + (Y 0 + Yd*t - Yc)2 + (Z 0 + Zd*t - Zc)2 = Raio 2 Desenvolvendo a equação e juntando as constantes: Teremos uma equação da forma: At 2 + Bt + C Onde A = Xd 2 + Yd 2 + Zd 2 B = 2*(Xd * (X 0 - Xc) + Yd * (Y 0 - Yc) + Zd * (Z 0 - Zc)) C = (X 0 - Xc)2 + (Y 0 - Yc)2 + (Z 0 - Zc)2 – Raio 2 Para que de fato a equação resulte numa interseção: At 2 + Bt + C = 0

Interseção Raio com esfera -Se as raizes t 0 e t 1 forem números

Interseção Raio com esfera -Se as raizes t 0 e t 1 forem números complexos: não há raízes reais e portanto não há interseção -Se t 0 = t 1 : houve tangencia da reta e a esfera -Se t 0 e t 1 forem distintas e reais: houve interseção. Deve-se calcular qual o ponto mais próximo do observador.

Exercício: Interseção Raio com plano Equação do Plano: Ax + By + Cz =

Exercí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) = R 0 + t * Rd , t > 0 Com R 0 = [X 0, Y 0, Z 0] e Rd = [Xd, Yd, Zd] X = X 0 + Xd * t Y = Y 0 + Yd * t Z = Z 0 + Zd * t

Iluminação -Se houver iluminação?

Iluminação -Se houver iluminação?

Componentes da Iluminação – Ambiente 41

Componentes da Iluminação – Ambiente 41

Componentes da Iluminação – Ambiente

Componentes da Iluminação – Ambiente

Componentes da Iluminação – Radiosidade

Componentes da Iluminação – Radiosidade

Componentes da Iluminação – Radiosidade 44

Componentes da Iluminação – Radiosidade 44

Componentes da Iluminação – Ambiente Cora= materia. Ia

Componentes da Iluminação – Ambiente Cora= materia. Ia

Normal de uma Superfície N

Normal de uma Superfície N

Modelo Phong - Difuso L N cos Iluminação cos = L. N

Modelo Phong - Difuso L N cos Iluminação cos = L. N

Componentes da Iluminação – Difuso Cord = Material. cos N. L Cord = K.

Componentes da Iluminação – Difuso Cord = Material. cos N. L Cord = K. (N. L)

Componentes da Iluminação – Especular Luz (L) Observador ( O ) Normal (N) Reflexo

Componentes da Iluminação – Especular Luz (L) Observador ( O ) Normal (N) Reflexo (R)

Componentes da Iluminação – Especular n=2 n=5 Core = Material. (cos n cos O.

Componentes da Iluminação – Especular n=2 n=5 Core = Material. (cos n cos O. R Core = K. (O. R)n n = 30

Modelo Phong L N Iluminação cos = L. N Itotal = Iambiente + Idifusa

Modelo Phong L N Iluminação cos = L. N Itotal = Iambiente + Idifusa + Iespecular

Iluminação

Iluminação

Reflexo e Refração

Reflexo e Refração

Recursividade do Ray Tracing

Recursividade do Ray Tracing

Recursividade do Ray Tracing L N P Transmissão Reflexo

Recursividade do Ray Tracing L N P Transmissão Reflexo

Recursividade do Ray Tracing Itotal = IPhong( P ) + Raytracing (Reflexo) + Raytracing

Recursividade do Ray Tracing Itotal = IPhong( P ) + Raytracing (Reflexo) + Raytracing (Transmissão)

Implementação do Ray Tracing Ray_Tracing (VETOR) Para cada Pixel da Imagem OBJETO_MAIS_PRÓXIMO = NENHUM

Implementaçã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ígonos N 1 cálculo de iluminação por polígono

Iluminação por polígonos N 1 cálculo de iluminação por polígono

Iluminação por vértice N 3 N 2 N 4 4 cálculos de iluminação por

Iluminação por vértice N 3 N 2 N 4 4 cálculos de iluminação por polígono N 1

Iluminação por vértice

Iluminação por vértice

Iluminação por pixel n cálculos de iluminação por polígono

Iluminação por pixel n cálculos de iluminação por polígono

Projeção Ortográfica Linhas paralelas permanecem paralelas Assumindo que os vértices estão em coordenadas de

Projeção Ortográfica Linhas paralelas permanecem paralelas 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”

Projeção pz p Z= -d q qx z qx px = -d pz qx

Projeção pz p Z= -d q qx z qx px = -d pz qx = -d px pz px x

Exercício: Encontre a matriz de Projeção Perspectiva

Exercício: Encontre a matriz de Projeção Perspectiva

Projeção Perspectiva

Projeção Perspectiva

Clipping

Clipping

Algoritmo de Z-Buffer

Algoritmo de Z-Buffer

b. Triangle Strips Idéia fundamental: minimizar volume de vértices e consequentemente, minimizar cálculos de

b. Triangle Strips Idéia fundamental: minimizar volume de vértices e consequentemente, minimizar cálculos de iluminação, normais, clipping, etc.