REALISMO VISUAL

texto escrito por: Vilson Berilli Mendes

I - INTRODUÇÃO

Realismo visual são técnicas de tratamento computacional aplicadas em modelagem de sólidos, com objetivo de criar um ambiente 3D o mais próximo da realidade.

Como um ambiente 3D têm várias características, o melhor caminho é tratá-las individualmente. Sendo que, podemos dividir as várias técnicas existentes para tratamento em dois grupos distintos: tratamento de "hidelines" e "surfaces"; e tratamento de "shading" e iluminação.

Este texto tem como objetivo mostrar as técnicas para tratamento de texturas e reflexão entre objetos, que estão enquadradas dentro do grupo de "shading". Mas antes, devemos lembrar que as superfícies de um sólido serão representadas por uma malha, isto é, uma área subdividida em vários elementos de área (subpolígonos). Com base nestas informações, podemos dizer que os algoritmos de "shading" estão basicamente relacionados com a posição, orientação e características de cada um desses elementos de área, e também com as fontes de iluminação a que estes estarão submetidos.

Inicialmente, apresentaremos brevemente alguns modelos de iluminação, uma vez que praticamente tanto modelos de tratamento de texturas quanto reflexões entre objetos estão diretamente ligados à fonte de iluminação.

 

II - MODELOS BÁSICOS DE ILUMINAÇÃO

 

1) Luz Ambiente

Este modelo considera a fonte de luz difusa, não-direcional, produzindo múltiplas reflexões de muitas faces.

 

a) A luz ambiente difusa sem luz externa pode ser modelada pela equação:

I = Ki

onde,

I é a intensidade resultante

Ki é a intensidade intrínseca do objeto (valor constante entre 0 e 1)

 

b) Um modelo para a Luz ambiente, sendo que a luz atua em todas as faces de todas as direções é:

I = Ia.Ka

onde,

Ia é a intensidade da luz ambiente ( assumindo como constante p/ todos os objetos)

Ka é a quantidade de luz ambiente refletida das faces do objeto.

 

2) Reflexão difusa

O modelo para a reflexão difusa deve depender da direção e da distância da fonte de luz:

I = IpKd cos q

I = IpKd(N.L)

onde,

Ip é a intensidade de luz pontual

Kd é o coeficiente de reflexão difusa

q é o ângulo entre a normal e a direção da iluminação.

um modelo mais completo de iluminação considera a luz ambiente e a direção de iluminação:

I = Ia.Ka + IpKd cos q

 

Mas este modelo ainda tem diversas deficiencias como, não modelar bem diversos objetos em cena com mesma orientação mas a distâncias diversas do observador. Como a intensidade da luz refletida é inversamente proporcional a distância, alguns modelos que consideram a distância entre os objetos e o observador, d, são dados pelas equações abaixo:

I = Ia.Ka + IpKd cos q / (d+k)

onde k é uma constante da cena, usada para evitar algumas ambiquidades, como divisão por números muito pequenos e grande diferença entre objetos muito próximos. Outro bom modelo considera está influencia função do quadrado da distância:

I = Ia.Ka + IpKd cos q / (d+k)2

 

3) Reflexão especular

São as reflexões que podemos observar em superfícies brilhantes.

( Modelo de Phong para luz especular:) Este modelo considera a reflexão especular como uma função do ãngulo que, a direção de reflexão faz com o observador. Ele é função da cor apenas da fonte de luz. Os modelos anteriores eram função da cor dos objetos a serem modelados, e no caso de usa-se 3 canais em um determinado espaço de cores, cada intensidade I seria decomposta em 3 canais (por exemplo Hue, Saturation and Brighteness, ou Red, Green and Blue).

I = Ia.Ka + Ip [ Kd cos q + Ks cos n a ] / (d+k)

Repare que agora temos mais uma constante , Ks, de luz especular e mais um angulo envolvido. A potência n usada neste modelo geralmente , em função da superfície ser mais ou menos brilhante, varia de 1 a 200. Como no caso anterior podem ser usados os vetores unitários nas direções de reflexão , R, e de visão, V. A equação assim pode ser escrita em termos do produto interno entre os dois vetores.

I = Ia.Ka + Ip [ Kd (L.N) + Ks (R.V)n ] / (d+k)

mas este modelo ainda tem algumas deficiências como....

Os modelos mais realistas requerem um tratamento um pouco mais complexo, deixaremos como referência para pesquisas e testes posteriores.

 

IIITEXTURAS

Na verdade, quando falamos em texturas, queremos dizer que a superfície não é transparente e nem espelhada, em outras palavras, podemos quase dizer que transparência e reflexão entre objetos são casos particulares de texturas.

 

1) Surface-Detail Polygons

Surface-detail polygons é uma aproximação simples para introduzir texturização, em que se adiciona aos sub-polígonos de uma face, detalhes grosseiros que caracterizam as faces do polígono base do objeto que está sendo mostrado.

Cada sub-polígono é coplanar com sua face correspondente no polígono base e é tratado independentemente, de tal forma que não há necessidade de ser comparado com os outros sub-polígonos durante a determinação da visualização da sua face.

Não é difícil constatar que quanto mais rico for a unidade de detalhe, menos prático será o modelamento com polígonos ou com outra geometria primitiva.

Uma solução é usar a técnica de mapeamento da imagem.

 

2) Texture Mapping

Técnica inventada por Catmull e aperfeiçoada por Blinn e Newell

    1. Primeiro faz-se um mapeamento dos 4 cantos de um patch na superfície que se deseja renderizar.
    2. Depois, estes 4 pontos com coordenadas (s,t) são mapeados no espaço de coordenadas do mapa de textura (u,v).

Como polígonos podem ser previamente decomposto em triângulos, como no caso de interpolação linear, pode aparecer uma distorção na projeção de alguns sólidos.

3) Bump Mapping

Quando o mapa da textura é uma fotografia de uma superfície áspera, a superfície renderizada não fica muito correta, porque a direção da fonte de luz utilizada para criar o mapeamento é diferente da direção da iluminação do sólido. Blinn desenvolveu uma técnica para amenizar este efeito, dando uma perturbação na normal à superfície antes de aplicar o modelo de iluminação, e este método é chamado de Bump Mapping.

Esta perturbação nada mais é do que um deslocamento na posição real dos pontos da superfície. Isto é, supondo que o vetor P representa um ponto na superfície, onde P = [x(s,t), y(s,t), z(s,t)], e Ps e Pt as derivadas parciais de P em relação aos parâmetros s e t. Como Ps e Pt são tangente à superfície, o produto vetorial resulta num vetor (não-normalizado, isso é unitário) normal a superfície em P. Então,

N = Ps x Pt

Deslocando P na direção da normal, isto é, adicionando ao vetor normal normalizado um valor B Bump-map. O novo ponto é

P' = P + B N

|N|

Blind mostra que uma boa aproximação para a nova normal (não-normalizada, isso é unitário) é

N' = N + Bu(N x Pt) – Bv(N x Ps)

|N|

onde Bu e Bv são as derivadas parciais de B em relação aos parâmetros (u,v).

N' é então normalizado e substituído na equação de iluminação.

A figura abaixo ajuda no entendimento dos elementos deta equação.

 

IV – REFLEXÃO ENTRE OBJETOS

Reflexão entre objetos ocorre quando uma superfície reflete as outras que estão à sua volta.

Blinn e Newell desenvolveram Reflection Mapping (mapa de reflexão) para modelos de reflexão especular entre objetos. Nesta técnica, um centro de projeção é escolhido para mapear o ambiente que será refletido na superfície esférica que envolve o objeto a ser renderizado. O ambiente mapeado é então ajustado como um mapa de textura 2D. Em cada ponto do objeto a ser mostrado, o mapa de reflexão é indexado por coordenadas polares do vetor obtido para reflexão V sobre N. As coordenadas x e y do mapa representam longitude ( de 0º a 360º) e latitude (-90º a 90º) respectivamente como mostra a figura (a). Hall sugere uma variação em que o eixo y é seno (latitude), de tal forma que áreas iguais no mapa esférico seja igual no mapa de reflexões. Figura (b).

V RAY TRACING

Ray Tracing é uma técnica que possibilita a representação de cenas complexas, como objetos com sombras, vários tipos de reflexões e texturas.

O princípio utilizado é o contrario do que realmente acontece quando vemos uma cena. Isso é, nolmalmente um raio de luz originário no objeto chega aos nossos olhos. Nesta técnica supoem-se que um raio originário de nossos olhos ( ou dos olhos do observador) cheguem até o objeto que se quer renderizar.

Na vida real, uma ou mais fonte de luz ilumina uma cena com um número infinito de raios de luz. Apenas uma pequena parte destes raios são refletidos dos objetos da cena e atingem o olho do observador. Como apenas estes raios nos interessa, podemos traçá-los de volta para o objeto e deste para cada fonte de luz. Inserindo uma tela de projeção em algum ponto entre o observador e o objeto, traça-se um raio do olho do observador até cada pixel da tela e deste para qualquer objeto que a fonte de luz ilumina.

O resultado final será que as cores e intensidades que serão associadas à tela irão produzir uma imagem exatamente como uma fotografia reproduz.

O resultado final será que as cores e intensidades que serão associadas à tela irão produzir uma imagem exatamente como uma fotografia reproduz. A primeira figura deste testo foi produxida por esta técnica.

VI – REFERÊNCIA BIBLIOGRÁFICAS

· J. D. Foley, A. van Dam, S.K.Feiner, J.F.Hughes. Computer Graphics – Principles and Practice.

· Roger T. Stevens . The C++ Graphics Programming Handbook.

· John C. Beatty, Kellogg S. Booth. Computer Graphics – Second Edition.

· Springer-Verlag, edited byTosiyasu L. Kunii. Advanced Computer Graphics