Planeamento

Aulas Laboratoriais

Introdução three.js

Introdução aos conceitos básicos do three.js. Exercícios básicos de modelação, janela e viewport.

Cena simples estática com câmara fixa

Resolução de Problemas (30mins): Cor; Operações sobre vectores e matrizes.

Apoio ao Desenvolvimento (60mins): Modelação com geometria simples dos objectos. Câmara fixa com projeção ortogonal. 

Cena simples interativa com câmara fixa

Resolução de Problemas (30mins): Matrizes de transformação geométrica; Composição de transformações (incl. mudança de referencial)

Apoio ao Desenvolvimento (60mins): Animação interativa. Controlo do movimento da personagem com o teclado.

1ª Avaliação (6.0v)

Entrega e avaliação do primeiro trabalho de laboratorio.

Cena simples interativa com câmara móvel e colisões

Resolução de Problemas (30mins): Cálculo de matrizes de visualização e projecção.

Apoio ao Desenvolvimento (60mins): Animação Procedimental. Câmara móvel que acompanha o movimento do personagem (projeção perspetiva). Detecção de colisões.

2ª Avaliação (5.0v)

Entrega e avaliação do segundo trabalho de laboratorio.

Cena interativa com materiais e luzes

Resolução de Problemas (30mins): Iluminação e Sombreamento. Recorte.

Apoio ao Desenvolvimento (60mins): Iluminação global com luz direccional. Aplicação de materiais nos elementos do jogo. Criação de fontes de luz direcional e pontuais.

3ª Avaliação (5.0v)

Entrega e avaliação do terceiro trabalho de laboratorio.

Cena interativa com luzes dinâmicas e texturas

Resolução de Problemas (30mins): Rasterização e preenchimento de polígonos. Remoção de superfícies ocultas. Ray-Tracing

Apoio ao Desenvolvimento (60mins): Criação de tabuleiro de jogo com aplicação de textura. Fonte de luz spotlight dinâmica. Contabilização de pontos e vidas. Implementação de pausa e fim de jogo.

4ª Avaliação (4.0v)

Entrega e avaliação do quarto trabalho de laboratorio.

Aulas Teóricas

Apresentação e Introdução a CG e ao three.js

Apresentação. Introdução a CG: Aplicações de CG; Sistema Gráfico Interativo; Criação de Imagens Sintéticas; APIs Gráficas; e Pipeline Gráfico. Breve Introdução ao three.js.

Cor. Programação Baseada em Acontecimentos. Matemática para CG

Teoria da cor e modelos de cor. Programação Baseada em Acontecimentos. Matemática para CG (inclui trigonometria e matrizes).    

Transformações Geométricas

Transformações geométricas planas elementares. Transformações no espaço homogéneo. Transformações em 3D.    

Composição de Transformações

Composição de transformações geométricas. Modelação e Grafos de Cena. Matrizes de transformação em three.js.

Animação Interactiva e Colisões

Animação interactiva, por interpolação e procedimental. Tratamento de colisões. Cálculo de intersecções.    

Visualização e Projecção. Câmara Virtual.

Visualização e Projecção. Câmara Virtual Simples. Visualização e Projecção em three.js.    

Iluminação

Modelo de iluminação de Blinn-Phong. 

Sombreamento

Métodos de sombreamento constante, de Gouraud e de Phong.

Recorte

Algoritmo de Cohen-Sutherland. Recorte de polígonos com o algoritmo de Sutherland-Hodgman. Recorte em 3D.

Rasterização

Rasterização de linhas pelo algoritmo de Bresenham. Preenchimento de polígonos.

Remoção de Superfícies Ocultas

Remoção de faces traseiras. Algoritmo de z-buffer.

Mapeamento de texturas

Mapeamento de texturas 2D. Coordenadas de textura. Técnicas de amostragem em texturas.

Formatos de Imagem e Ray-tracing

Generalidades sobre formatos de imagem (BMP, GIF, PNG, JFIF). Considerações sobre uso de diferentes formatos. 

Algoritmo de Ray-Tracing. Cálculo de intersecções em Ray-Tracing. Interacção da luz com superfícies em Ray-Tracing.

Introdução à Programação em GPUs

Evolução do hardware gráfico. Pipeline gráfico fixo vs programável. Processador de vértices e processador de fragmentos.