segunda-feira, 12 de dezembro de 2011

Normal map

Antes de começar... preciso dizer que a "normal" que estamos falando aqui é um vetor perpendicular à face que, normalmente, aponta para o lado de fora e que reflete a luz em sua direção. Existem outras definições mais completas e mais complexas que esta, mas por enquanto, esta basta.

Tendo dito o que está acima.... Se você já se perguntou como os games fazem para exibir uma quantidade tão alta de detalhes, esta postagem é para você.


Se você não sabe do que estou falando, veja a imagem abaixo. Percebe a mancha escura próximo à orelha esquerda na cabeça da Suzanne? Pois bem, ela é causada por "normal" invertida. Assim, acredito que você já começou a entender melhor.




























Normal map é um dos grandes recursos que a computação gráfica tem para dar a impressão que um objeto possui mais detalhes do que realmente ele possui. Se você está se perguntando o é que os jogos tem a ver com isso? Eu respondo. 

Para que possamos ter um trabalho no qual sintamos a menor perda de informação possível daqueles personagens e cenários complexos e ainda assim permanecermos com o "real time" dos jogos, os objetos (personagens com suas armas e armaduras, elementos de cena, cenários e afins) com enorme quantidade de geometria (high poly) que vemos nas aberturas, transições, encerramentos ou mesmo propagandas dos jogos são substituídos por outros objetos com bem menos geometria (low poly) só que com o uso do normal map.

A textura de normal map tem esse nome porque a variação de tons vermelhos, verdes e azuis é criada a partir do deslocamento das normais. Para exibir uma imagem no ambiente de terceira dimensão, o raio de luz percorre a distância entre a fonte luminosa, bate no objeto que é iluminado e depois segue em direção à câmera. O trajeto percorrido pelo raio de luz pode, entretanto, ser manipulado. Esta manipulação é criada com uma imagem de normal map.

Nesta imagem composta pelas três cores RGB (Red, Green e Blue ou vermelho, verde e azul respectivamente se traduzirmos para o português), cada cor corresponde, que chamamos de canal, corresponde a uma dimensão espacial. Vale lembrar que o 3D é uma sigla que significa três dimensões e que estas são largura, altura e profundidade. 

Assim sendo, cada canal de cor corresponde a uma dimensão espacial (X, Y ou Z) e utiliza os parâmetros dispostos na variação de cada cor que é utilizada na textura de normal map para efetuar a manipulação da luz quando sobre os objetos 3D. 

Ah... e não é somente a área de jogos que faz uso deste recurso, filmes através dos famosos VFX (sigla em inglês para Efeitos Visuais), artes interativas e toda uma gama de recursos que necessitam de um processamento de imagem de forma inteligente faz uso das imensas vantagens que o normal map traz. 

Imagine que você pode usar aquela sua cena que seu computador demorava horas para renderizar, só que demorando bem menos tempo que antes. Os seus personagens podem voltar a ter aspectos visuais complexos sem que para isso você necessariamente que gastar horas e horas para obter a sua imagem. 

Nenhum comentário:

Postar um comentário