real time rendering. a. pipeline gráfico pipeline gráfico - pipeline / estágios - gargalo -...

Post on 16-Apr-2015

145 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related