A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Modelos de reflexão Trabalho 1 Pablo Bioni. Desenhando uma esfera 2.5D Inicialmente, precisamos conseguir desenhar uma esfera 2.5D, isto é, na verdade.

Apresentações semelhantes


Apresentação em tema: "Modelos de reflexão Trabalho 1 Pablo Bioni. Desenhando uma esfera 2.5D Inicialmente, precisamos conseguir desenhar uma esfera 2.5D, isto é, na verdade."— Transcrição da apresentação:

1 Modelos de reflexão Trabalho 1 Pablo Bioni

2 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 essa informação de profundidade nos fornecerá elementos necessarios para implementação do 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 do circulo de raio R^2. Para Acharmos Z, utilizamos a formula da esfera r^2 = x^2 + y^2 + z^2, manipulando para colocar em função de Z, temos : z = sqrt ( r^2 – (xc-x)^2 – (yx-y)^2). Nesse momento, consideramos que o centro de nossa esfera coincide com o nosso Z Maximo. Apontando para fora do monitor, e a medida que caminhamos para a borda da esfera, temos uma diminuição desse Z. Assumimos portanto que Z é nossa Normal devido a semelhança matemática.

3 Lendo um espectro de Luz Nosso proximo passo é conseguir ler um espectro de luz. E acharmos a cor que representa. Desta forma, utilizamos o espectro do iluminante A, que é uma representação padronizada pel CIE para uma lampada doméstica de filete de tungstenio. Precisamos portanto saber tratar uma tabela com o comprimento de onda e sua intensidade associada. No nosso caso utilizamos o espectro compreendido entre 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 representa o espectro visivel, se dá através da convolução de uma matriz de tristimulus, que é o quanto a visão humana é sensível para um específico comprimento de onda e a intensidade do comprimento de onda da analisado do iluminante. Desta forma : X = X + tristimulus[i].x + luz[i].intensidade Y = Y + tristimulus[i].y + luz[i].intensidade Z = 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 * var_Y * var_Z * var_G = var_X * var_Y * var_Z * var_B = var_X * var_Y * var_Z *

4 Modelo de reflexão Para efetivamente conseguirmos dar um volume e fazer a luz interagir com o a esfera, precisamos adotar 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. No caso do especular, Seria a reflexão da fonte de luz, como em geral nao temos a luz fisicamente modelada em 3D, utilizamos isso ocmo uma aproximação da realidade. Infelizmente por melhor que seja o modelo 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 refletida e 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 Luz 3) 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.

5 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 pixel a ser desenhado é diferente dos pixeis ao redor, fazemos o acumulo dessas cores e passamos a ter a cor do nosso pixel, de forma que evite o serrilhado pois a transição entre pixeis ficam suavizadas. 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 pixel calculaCorPixelAA(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 ++; }

6


Carregar ppt "Modelos de reflexão Trabalho 1 Pablo Bioni. Desenhando uma esfera 2.5D Inicialmente, precisamos conseguir desenhar uma esfera 2.5D, isto é, na verdade."

Apresentações semelhantes


Anúncios Google