INF2608 – Fundamentos da Computação Gráfica

INF2608 – Fundamentos da Computação Gráfica


Atenção: Esta página é constantemente atualizada durante o curso.


Professor:

Marcelo Gattass
e-mail: usuário mgattass no domínio [tecgraf ou inf ou nada].puc-rio.br
Sala 6A no prédio Pe. Laércio Dias de Moura.

A comunicação entre a turma e o professor deve ser feita através do canal Slack FCG22. Me mande um e-mail para enviar um convite. Somente utilize o e-mail neste caso.

Horário:

3as de 16-19h, na sala L548 com abertura para sala Zoom que está no EAD.

Objetivo:

A Computação Gráfica tornou-se onipresente em nossa sociedade quando imagens e videos digitais passaram a ser comuns no nosso dia a dia. Além das imagens fotográficas, imagens resultantes de exames médicos e de sensoriamentos remotos também fazem parte do nosso cotidiano. Muitas inovações atuais envolvem escrever programas para computadores ou celulares que manipulam vídeos e imagens além de gerar animações em cenas tridimensionais.

Este curso estuda os modelos matemáticos e suas inspirações físicas que dão base aos algoritmos da Computação Gráfica. Este curso apresenta de forma geral a Computação Gráfica vista de forma ampla, mas foca no desenvolvimento de algoritmos de rendering de cenas 3D na Web. Outro curso complementar foca nos algortimos de Visão Computacional.

O curso está sendo oferecido neste primeiro semestre de 2022 no formato remoto. Se a pandemia for superada durante o semestre vamos fazer encontros presenciais que serão disponibilizados para os alunos que continuarem remotos.

A metodologia de ensino do curso é baseada no desenvolvimento de notebooks Python que tratam dos assuntos abordados. É esperado que os alunos assistam os vídeos teóricos antes das aulas. O canal do YouTube foi feito especificamente para apoiar os cursos de Computação Gráfica que leciono no Departamento de Informática da PUC-Rio. Quem estiver em dúvida se quer ou não fazer o curso por favor veja os vídeos para ter uma noção dos assuntos tratados.

Eu gostaria de utilizar os tempos de aula para discutir as dúvidas e desenvolver com voces os trabalhos do curso. Ou seja, é esperado que voce assista não só assista e participe das aulas, você deve ver os vídeos antes e durante o encontro desenvolver os trabalhos do curso.

Programa:

  1. Cor em Sistemas Digitais (notas), (pptx), (pdf).
  2. Imagem digital: formação, tratamento de alias e ruídos, transformadas e filtros. (notas), (pptx), (pdf).
  3. 3D Rendering: Traçado de Raios (pptx), (pdf).
  4. 3D Rendering: ZBuffer (pptx), (pdf).
  5. Transformações Geométricas (pptx), (pdf).
  6. Cadeias Cinemáticas e Quatérnios (pptx), (pdf), (notas sobre quatérnios).

Trabalhos:

Na disciplina temos os seguites trabalhos:
  1. T1: Luz e cor.
  2. T2: Imagem 360o.
  3. T3: Rendering com o algoritmo de Traçado de Raios.
  4. T4: Rendering com o agoritmo de mapa de profundidade (Z Buffer).
  5. T5: Rendering com o OpenGL e shaders na web.
  6. T6: Um trabalho relacionando a pesquisa do aluno com o assunto do Curso.

Estes curso recebe alunos que nunca cursaram Computação Gráfica junto com alunos que já tem uma base bastante boa. Os trabalhos acima são pensados para atender os alunos sem experiência previa. Um aluno que já se sentir proficiente em um assunto, pode ou aproveitar o curso para estudar uma maneira de ensinar o assunto ou conversar comigo sobre trocar um ou mais trabalhos por outros que sejam mais avançados que foquem no que ele quer aprender.

Avaliação:

A nota é uma média de trabalhos T1, T2,.., T6. Os trabalhos são individuais mas são desenvolvidos e discutidos no horario da aula. A avaliação também leva em conta a participação nas discussões em aula e nos fóruns de discussão do grupo da disciplina.

Código de Ética:

A disciplina segue o Código de Ética do CTC da PUC-Rio.

Pré-requisito:

Proficiência em programação [Python].
Conhecimentos básicos de Álgebra Linear e Cálculo.

Ambiente de desenvolvimento:

O ambiente de desenvolvimento do curso será Python notebook com as libs Pandas, Numpy + Scipy , Matplotlib, PyTorch. ipycanvas e PyThreejs. Outras libs devem ser instaladas durante o curso, por isso não deixe de criar uma ambiente virtual no Conda. Não queremos atrapalhar os outros sistemas no seu computador. Eu devo utilizar o Visual Studio Code, mas cada um pode utilizar a IDE que quiser. Os trabalhos serão sempre entregues em fonte (trab_do_fulano.ipnb) e um arquivo pdf, resultante da impressão do fonte com os resultados. Todas as IDEs são capazes de gerar esses arquivos.

O computador para acompanhar o curso não precisa ser especial. Placas de vídeo permitem que os algortimos de rede neural e de computação gráfica fiquem muito mais rápidos, mas não são necessárias para o aprendizado. Podemos fazer todos os trabalhos sem elas. Eu estou preparando o curso num notebook, rodando os trabalhos sem GPU. Quem quiser pode utilizar o Google Colab.

Alunos da PUC-Rio que tiverem dificuldades de ter acesso a um equipamento em casa para acompanhar as aulas, por favor entrem em contato comigo, pelo e-mail acima para buscarmos uma solução.

Referências: