Computação Gráfica 2021.2
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.
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
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
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)
Para entregar o projeto use o github (ou similar). Deixe seu código minimamente documentado e garanta que ele está rodando corretamente.
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.