790 likes | 1.04k Views
Real Time Rendering. a. Pipeline Gráfico. 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. Rasterização. Aplicação. Geometria. Z-Buffer
E N D
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 Rasterização Aplicação Geometria Z-Buffer Texturização Iluminação por pixel Física Entrada de Dados Inteligência Artificial Culling Transformação Iluminação de vértice Projeção Recorte
Representação de modelos geométricos Lista de Vértices V1: x1, y1, z1 V2: x2, y2, z2 ... Lista de Faces F1: v1, v2, v3 F2: v2, v3, v4 ... Lista de materiais M1: F1, F2, F3 M2: F4, F5, F6 ...
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: 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:”r255b255b255a0” Face 1: A:2 B:1 C:0 AB:1 BC:1 CA:1 Material:”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 Iluminação por vértice Transformação de Modelo e visão 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 Space z
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
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
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+v2x+v2y+v2z= 1. Assim, se u for um vetor unitário, pode-se dizer que: q = (cosq, sinq u ) é unitário DEMONSTRE
Quaternions - Definição Uma rotação de um ângulo q em torno do eixo u (normalizado) é representada pelo quaternion unitário: q = [s,v] = [cos(q /2),sen(q /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? • Fenômeno físico resultante da interação de fótons com uma superfície
Conceitos de Raios de Luz luz visão reflexo
Interseçã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 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 + C Onde 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 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 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ção • Se houver iluminação?
Componentes da Iluminação – Ambiente Cora= materia . Ia