Projeto 1 – Rasterização : 3ª parte
Data de entrega: 13/9/2024, via Blackboard.
Link do Github: enviar via Blackboard (se ainda não enviou).
Entrega: individual ou duplas.
Nesse projeto, você continuará a implementação do rasterizador para arquivos X3D (limitado a poucos nós e atributos), nessa terceira parte você deverá tratar objetos 3D, pela implementação dos nós TriangleStripSet
, IndexedTriangleStripSet
, IndexedFaceSet
bem como tratar os grafos de cena, o que envolve maior suport para o Transform
. No final, você terá um renderizador funcional que rodará por software.
Código Base
O código base para o projeto pode ser encontrado em: https://github.com/lpsoares/Renderizador, você deverá fazer um Fork do repositório, pois atualizações serão feitas e você deverá atualizar seu projeto. Junto com o código virão uma série de exemplos que você poderá usar para testar seu código, contudo idealmente seu código deve funcionar para outras entradas além das do exemplo. Caso o professor oriente, faça a atualização do seu fork durante o curso.
Estrutura do Projeto
O projeto tem 2 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. Você vai usar um código base em Python para a implementação do seu código.
-
Tarefa 1: implementar as rotinas para desenhar malhas de triângulos
- Fazer o desenho de TriangleStripSet
- Fazer o desenho de IndexedTriangleStripSet
- Fazer o desenho de IndexedFaceSet
-
Tarefa 2: implementar os recursos para o grafo de cena, para transforms dentro de transforms
Implemente as funções GL.triangleStripSet()
, GL.indexedTriangleStripSet()
, GL.indexedFaceSet()
, GL.trasnform_in()
, GL.transform_out()
Teste os exemplos correspondentes. Conforme o exemplo for similar ao resultado esperado você obterá as notas
Exemplo | Pontos |
---|---|
tiras.x3d | 1 |
letras.x3d | 1 |
leques.x3d | 2 |
vertices10.x3d | 1 |
bound500.x3d | 1 |
avatar.x3d | 2 |
girando.x3d | 2 |
Instruções
Como recomendação, você pode ver como deveria ser a saída em: https://lpsoares.github.io/Renderizador/index.html
Entrega
Para entregar o projeto use o Github. Deixe seu código minimamente documentado e garanta que ele está rodando corretamente. Se quiser deixar o código fechado, não esqueça de dar acesso para o professor ao repositório.
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.