6
Modelos de reflexão Trabalho 1 Pablo Bioni

Modelos de reflexão

Embed Size (px)

DESCRIPTION

Modelos de reflexão. Trabalho 1 Pablo Bioni. Desenhando uma esfera 2.5D Inicialmente, precisamos conseguir desenhar uma esfera 2.5D, isto é, na verdade não passa de um elemento 2D, mas com uma informação de profundidade embutida em cada Pixel. Mais tarde - PowerPoint PPT Presentation

Citation preview

Page 1: Modelos de reflexão

Modelos de reflexão

Trabalho 1 Pablo Bioni

Page 2: Modelos de reflexão

Desenhando uma esfera 2.5D

Inicialmente, precisamos conseguir desenhar uma esfera 2.5D, isto é, na verdade não passa deum elemento 2D, mas com uma informação de profundidade embutida em cada Pixel. Mais tardeessa informação de profundidade nos fornecerá elementos necessarios para implementaçãodo shader.

Definimos portanto uma esfera de raio R. Sabemos também que podemos considerar que (xc-x)^2 + (yc – y)^2 é a distancia ao quadrado que nosso ponto x,y se encontra do centro (xc,xy)de nossa esfera, desta forma sabemos aonde desenhar ou não obedecendo os limites docirculo de raio R^2.

Para Acharmos Z, utilizamos a formula da esfera r^2 = x^2 + y^2 + z^2, manipulando para colocarem função de Z, temos : z = sqrt ( r^2 – (xc-x)^2 – (yx-y)^2). Nesse momento, consideramos que ocentro de nossa esfera coincide com o nosso Z Maximo. Apontando para fora do monitor, e a medidaque caminhamos para a borda da esfera, temos uma diminuição desse Z. Assumimos portanto que Z é nossa Normal devido a semelhança matemática.

Page 3: Modelos de reflexão

Lendo um espectro de Luz

Nosso proximo passo é conseguir ler um espectro de luz. E acharmos a cor que representa. Destaforma, utilizamos o espectro do iluminante A, que é uma representação padronizada pel CIE parauma lampada doméstica de filete de tungstenio. Precisamos portanto saber tratar uma tabela como comprimento de onda e sua intensidade associada. No nosso caso utilizamos o espectro compreendidoentre os comprimentos de onda de 380nm até 780nm incrementados de 1 a 1.

A leitura desse espectro nos retornando uma coordenada X Y Z no grafico de ferradura, que representao espectro visivel, se dá através da convolução de uma matriz de tristimulus, que é o quanto a visãohumana é sensível para um específico comprimento de onda e a intensidade do comprimento deonda da analisado do iluminante. Desta forma :

X = X + tristimulus[i].x + luz[i].intensidadeY = Y + tristimulus[i].y + luz[i].intensidadeZ = Z + tristimulus[i].z + luz[i].intensidade

Depois de termos a coordenada X Y Z precisamos conseguir transforma-la para sRGB atraves da matriz :var_R = var_X * 3.2406 + var_Y * -1.5372 + var_Z * -0.4986var_G = var_X * -0.9689 + var_Y * 1.8758 + var_Z * 0.0415var_B = var_X * 0.0557 + var_Y * -0.2040 + var_Z * 1.0570

Page 4: Modelos de reflexão

Modelo de reflexão

Para efetivamente conseguirmos dar um volume e fazer a luz interagir com o a esfera, precisamosadotar o um modelo de reflexão da luz. No nosso caso utilizamos o Phong, até o nivel de especular.

Se analizarmos um objeto, qualquer coisa que consigamos ver dele são simplesmente reflexões. Nocaso do especular, Seria a reflexão da fonte de luz, como em geral nao temos a luz fisicamente modeladaem 3D, utilizamos isso ocmo uma aproximação da realidade. Infelizmente por melhor que seja omodelo o uso de especular acaba entregando que a imagem é gerada por computador. Uma solução artistica para tal efeito é usar uma forma basica geometrica da cor da luz para que seja refletidae dar a impressão de realismo.

A composição da iluminação dá-se da seguinte forma para o Phong:1) Luz ambiente – uma especie de offset da cor base do seu objeto, como se o ambiente no qual o elemento se encontra estivesse uniformemente iluminado. Desta forma não importa o ângulo que estejamos olhando, sempre teremos a mesma iluminação.

2) Luz difusa - A luz difusa efetivamente é o que dá volume ao objeto, de forma que a luz incidente em qualquer parte do elemento é refletida da mesma forma em todas as direções do mesmo. Dado pelo produto escalar da Normal com a direção da Luz3) Especular - Como dito anteriormente é uma simulação do reflexo da luz que ilumina o elemento em relação ao ponto de vista do observador. Spec = (R * V )^n onde R e V sao unitários. Onde R é o Vetor de direção do observador e n é a intensidade do Especular.

No nosso exemplo, tivemos um problema de estouro de iluminação quando somavamos a componente especular à difusa e resolvemos isso utilizando um fator multiplicativo limitador, de forma que 85% do maximo fosse difuso e 15% especular.

Page 5: Modelos de reflexão

Anti-Aliasing

No processo de desenho da esfera, a transição entre pixeis acontecia de forma muito brusca, deixando uma espécie de serrilhado nas bordas do objeto.

Para resolver esse problema, ao desenhar a esfera, estimamos uma melhor cor para o pixel a ser desenhado, fazendo uma espécie de amostragem de subpixel para saber o quanto a cor do pixela ser desenhado é diferente dos pixeis ao redor, fazemos o acumulo dessas cores e passamos ater a cor do nosso pixel, de forma que evite o serrilhado pois a transição entre pixeis ficamsuavizadas.

for (float dx=-0.5; dx<=0.5; dx+=0.25f){

for (float dy=-0.5; dy<=0.5; dy+=0.25f){

// Calcula a cor do sub pixelcalculaCorPixelAA(x+dx, y+dy, xc, yc, radius, red, green, blue, lx, ly, lz, r, g, b);

// Acumula ele rAcc += r;gAcc += g;bAcc += b;div ++;

}}

Page 6: Modelos de reflexão