Computação Gráfica 2021.2V:\COMUM\PLANO DE COMUNICAÇÃO\logo_insper.jpg

Insper Instituto de Ensino e Pesquisa

Projeto 1 – Rasterização : 2ª parte

Data de entrega: 16/9/2021, via Blackboard.

Entrega: dupla ou individual.

Nesse projeto, você continuará a implementação do rasterizador para arquivos X3D (limitado a poucos nós e atributos), nessa segunda parte você deverá tratar objetos 3D, pela implementação dos nós TriangleSet, TriangleStripSet, IndexedTriangleStripSet, Box. Além disso, você deverá usar os dados (posição, fov, orientação) da câmera. No final, você terá um renderizador funcional que rodará por software.

Estrutura do Projeto

O projeto tem 4 partes principais, e cada tarefa concluída leva a um número de pontos possíveis a adicionar na nota final. Algumas tarefas requerem apenas algumas linhas de código, enquanto outras são mais elaboradas.

Tarefa 1: suavização dos triângulos por superamostragem (2 pontos)

Tarefa 2: fazer as transformadas no modelo (2 pontos)

Tarefa 3: fazer as transformadas de câmera (2 pontos)

Tarefa 4: fazer as transformadas de projeção perspectiva (2 pontos)

Tarefa 5: fazer as transformações para coordenadas da tela (2 ponto)

Essas tarefas devem ser aplicadas nos exemplos: 6 - tri_3D; 7 - tira_tri; 8 - box

Código Base

O código base para o projeto pode ser encontrado em: https://github.com/lpsoares/Renderizador, você deverá atualar seu Fork desse repositório:

git remote add upstream https://github.com/lpsoares/Renderizador

git fetch upstream

git rebase upstream/master

Cuidado para não comprometer seus dados, para atualizar seus dados vocês pode precisar de algo como:

git push origin master --force

Instruções

Para os triângulos uma superamostragem de 2x2 já basta.

Como recomendação: comece verificando se as operações de transformações geométricas de escala, rotação e translação funcionam monitorando se os pontos do triângulo estão indo para onde deveriam ir. Depois monte a matriz de visualização (câmera), e veja se estão coerente as posições dos vértices. Aplique a projeção perspectiva até chegar nos vértices em coordenadas normalizadas e finalmente desenhe os polígonos nos pixels.

Como recomendação, você pode ver como deveria ser a saída em: https://lpsoares.github.io/Renderizador/index.html

(o X_ITE não está fazendo a rotação da câmera em Z corretamente, assim cuidado quando comparar o resultado)

Entrega

Para entregar o projeto use o github (ou similar). Deixe seu código minimamente documentado e garanta que ele está rodando corretamente.

Honestidade acadêmica

As tarefas devem ser concluídas em dupla ou individualmente. Você está convidado a discutir as várias partes das tarefas com seus colegas, mas você deve implementar os algoritmos. Você não deve ficar olhando o código de seus colegas.