quinta-feira, 2 de março de 2017

Atividade 4 - Carregando Malhas de Triângulos e aplicando cores


Carregando Malhas

Após implementar a câmera perspectiva, a próxima etapa é, com a ajuda do Assimp, implementar o suporte a formas mais complexas de objetos 3D, pois não se pode fazer nada muito realista só com esferas e triângulos. A biblioteca Assimp oferece suporte para tornar mais fácil a leitura e tratamento de vários formatos de objetos 3D. Através do Assimp, um arquivo do tipo ".obj" foi transformado em uma lista de triângulos, e nós só precisávamos renderizar estes triângulos na tela usando a função que nós já criamos, logo, carregando o modelo default do blender, a cabeça de macaco, o resultado foi esse:


Atribuindo Cores

A próxima etapa foi descartar este algoritmo que controlava o tom de branco de acordo com a distância da tela e, atribuir cor para todas as primitivas. A maneira mais simples de fazer isso é simplesmente adicionar o atributo "cor" para a classe "primitives", o qual seria um vetor de três valores, r, g e b, representando respectivamente Vermelho, Verde e Azul. E para demonstrar o funcionamento desta mudança nós carregamos um modelo de um boneco Lego e atribuímos cores aleatórias para todos os seus triângulos, o resultado é mostrado abaixo:

  

E assim concluímos nossa quarta atividade da disciplina.

Repositório no GitHub do nosso Ray Tracer: https://github.com/avin1cius/RT-Template

Atividade 3 - Câmera Pinhole arbitrária


A implementação da câmera pinhole foi bem trivial. Partindo do reaproveitamento do código da câmera ortográfica, bastou ser adicionado o atributo de distância entre o ponto focal e a tela, e com isso o cálculo da direção dos raios, que agora possuem a mesma origem.

Abaixo temos uma imagem gerada a partir da Pinhole, todas as esferas estão posicionadas nas mesmas coordenadas x e y, mas com z variando de -1 a -5 para demonstrar a distorção perspectiva gerada pela câmera.


A imagem cima foi gerada com a câmera posicionada no centro do universo. Posicionando-a em um ponto arbitrário foi gerada a seguinte imagem:



Repositório no GitHub do nosso Ray Tracer: https://github.com/avin1cius/RT-Template