Introducao O quarto trabalho pratico da disciplina consiste na implementacao de radiosidade progressiva. Para desenvolver o trabalho, foi disponibilizado o codigo fonte que devera ser utilizado como base para a implementacao. O objetivo do trabalho e modificar o codigo fonte fornecido para os fatores de forma sejam calculados nos vertices dos elementos e aplicar o Gouraud Shading. Deve-se escolher uma das duas formas de implementacao para o calculo de fatores de forma: ffactors_simple.cpp e ffactors_Wallace.cpp.Desenvolvimento Para o desenvolvimento do trabalho foi utilizado o calculo disponivel na classe ffactors_Wallace.cpp. Na Figura 1 e 2 a seguir e possivel verificar o resultado da implementacao do algoritmo Gouraud Shading. Apesar de apresentar aliasing, o resultado obtido com o Gouraud se aproximou bastante do esperado.Figura 1: Imagem gerada com o codigo baseFigura 2: Imagem gerada com a implementacao do algoritmo Gouraud Shading Descricao O terceiro trabalho de implementacao da disciplina de Computacao Grafica tem como objetivo ampliar a biblioteca Close2GL, implementando os metodos de rasterizacao. Para a execucao dos testes, foram utilizadas as bibliotecas OpenGL e Close2GL. Implementacao Durante o processo de desenvolvimento do pipeline, foram desenvolvidos alguns metodos auxiliares e outros foram modificados, como e apresentado a seguir. O metodo responsavel por ler o arquivo de entrada foi modificado para que ele saiba diferenciar um objeto com e sem textura, podendo assim tratar cada caso individualmente. Mapeamento de textura A biblioteca OpenGL nao possui nenhum metodo capaz de carregar imagens e, para isso, utilizou-se a biblioteca OpenCV. O OpenCV (Open Source Computer Vision Library) e uma biblioteca escrita na linguagem de programacao C/C++ voltada ao desenvolvimento de aplicacoes de visao computacional e sistemas de tempo real. O metodo loadImage, implementado utilizando o OpenCV, recebe via interface a imagem que sera utilizada como textura. Depois de carregada, a imagem e armazenada na variavel IplImage* image, podendo assim ser utilizada como textura. IplImage e uma variavel do OpenCV que armazena a imagem como uma matriz de pixels. O metodo loadImage e descrito a seguir:void loadImage(char *FileName){ image = cvLoadImage(FileName, CV_LOAD_IMAGE_COLOR ); } Para realizar o mapeamento da textura no objeto, inicialmente e preciso passar os parametros para desenhar os objetos da forma correta, primeiro glTexCoord2f() e depois glVertex3f(). Na implementacao do mapeamento de textura, foi utilizado o codigo que esta na descricao do trabalho. Os seguintes resultados foram obtidos.Iluminacao Para implementar os metodos responsaveis pela iluminacao dos objetos, foi utilizado como base os slides apresentados em aula. Foram implementados os metodos ambiente, difuso e especular. Cada metodo foi testando junto com uma coloracao, Gourad ou Flat, como e apresentado a seguir.Ambiente Conforme e apresentado no slide, a luz ambiente e representada pela seguinte funcao: Os parametros I, intensidade da luz do ambiente, e K, intensidade do reflexo do objeto, foram passados por parametro. Os valores de N e L foram calculados, e depois normalizados, utilizando os vertices passados pelo arquivo de entrada.Luz ambiente com FlatLuz ambiente com GouradDifusa Conforme e apresentado no slide, a luz ambiente e representada pela seguinte funcao: Os parametros I, intensidade da luz do ambiente, e K, intensidade do reflexo do objeto, foram