Computação Gráfica

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar

Esta é a pagina principal de um curso de computação gráfica ministrado em 2013/2 no IPRJ/UERJ, de utilidade geral para a formacao de programadores de nivel intermediario e avancado para desenvolvimento de software multimídia, videogames, interfaces gráficas, dentre outros.

FeedOldGames.png

Informacoes gerais

  • Instrutor: prof. Ricardo Fabbri, Ph.D.
  • Periodo: 2o. Semestre de 2013, voltado ao 10o. periodo de Engenharia da Computacao
  • Tercas 4pm-6:45pm e Quartas 11:30am-2:10pm, sala 211; Lab Inf 309 Tercas e 307 Quartas

Pre-requisitos

O aluno deverá saber conceitos básicos de programação e conseguir aprender linguagens rapidamente sob demanda durante o curso. Experiência prévia com programação orientada a objetos desejável, bem como conhecimento de álgebra linear. A linguagem padrao utilizada sera o Python, sendo C/C++, java e outros tambem utilizados eventualmente.

  • Tutorial de Python da Kitware e Google[1]
    • Slides extremamente uteis para aprender python cientifico rapidamente
    • Boa visao geral do Python cientifico, iPython, PyLab, NumPy, SciPy, Spyder
    • Complementos ao final com processamento de imagens e processamento paralelo
    • Baixe o arquivo tutorial_slides.pdf[2]

Conteudo aproximado

  • Intro & Historia da CG
    • Video do sketchpad, blender demo run 2013, etc.
    • Toda aula iniciara com um video curto sobre CG.
  • Modelagem e conceitos de computacao grafica no software Blender (tarefa 1)
  • Programacao em Python usando a API do software Blender (tarefa 2)
  • Game engine design & usage
    • Transformacoes de objetos e sistemas de coordenadas (ate 2/Out/13)
      • Matrizes de rotacaos
      • Quaternions
      • Coordenadas homogeneas
  • See Van Dam book..

Recursos principais

Bibliografia

  • Biblia do Van Dam: "Computer Graphics: Principles and Practice", 3rd. edition, 2013.

0321399528.jpg

Recursos adicionais

Provas

  • P1:
  • Pf/Sub:

Tarefas

Tarefa 1: intro ao blender - modelagem simples de um mascote do IPRJ

  • Desenhar e modelar um mascote do IPRJ no blender usando apenas cubos e esferas simples
  • Data de entrega: 1/Out/2013


Tarefa 2: Girando Câmeras em Python

Objetivo: Simular uma camera girando em torno de um objeto, usando a API Python do Blender. A rotacao deve ser em torno de um eixo arbitrario. Sugiro os seguintes passos

  1. Realizar a rotacao de um objeto simples (cubo) em torno da origem no plano x-y, tomando o eixo z como eixo de rotacao. Aprenda como rotacoes estao representadas no Blender.
  2. Realizar a rotacao de um objeto simples em torno de um centro e eixo arbitrario.
  3. Realizar agora a rotacao de uma camera em torno do eixo z no plano x-y em torno da origem. Aprenda como cameras sao representadas no Blender. Elas usam a regra da mao direita? E o eixo z aponta para a cena ou contra a cena (z negativo)?
  4. Realizar a rotacao de uma camera em torno de um eixo arbitrario. O usuario devera especificar o passo de rotacao em graus e o numero de passos no programa python, de preferencia em uma janela. Voce pode animar a camera ou entao simplesmente gerar varias copias da camera inicial.
  5. Renderize uma animacao com uma camera girando em torno de um objeto. Mostre a matriz de rotacao.
  6. Renderize a mesma animacao, agora com a camera fixa e o objeto girando no sentido contrario. Mostre a matriz de rotacao.
  • Entrega do projeto:
    • Programa com README explicando como foi feito e mostrando como ficou a geometria.
    • Apresentacao: ha duas alternativas, apresentar em aula para todos, ou enviar um video para o professor gravando a tela do seu computador:
      • Apresentacao de 10min.
      • Se preferir, grave um video do programa funcionando em cada um dos passos acima. Utilize um programa para gravar a tela, no linux [3]. Dessa forma voce sera dispensado da apresentacao.
  • Data de entrega: 29/Outubro --> adiado 1 semana para 5/Novembro

Tarefa 3: Splines, Animacao, e Efeitos 3D

  • Enunciado
  • Data de entrega: terca-feira 26/Nov/2013 ate a meia-noite. Atrasos serao aceitos, porem somente com reducao na nota.
  • Uma versao mais elaborada deste trabalho pode ser entregue opcionalmente como projeto final. Porem o basico de todos os itens devera ser entregue na data pois valera como nota de tarefa tambem.

Instrucao para Submissao

  • Enviar um arquivo zipado com tudo (scripts, apresentacao, relatorio/readme, etc) por email, no formato:
<sobrenome>-<nome>-computacao-grafica-<ano>-tarefa<numero_tarefa>.zip
  • Regra para apresentacao ou screencast similarmente `a tarefa anterior
  • Relatorio em pdf: Simplifique o README e coloque o conteudo (como funciona, processo de desenvolvimento, teoria de cada efeito) em um relatorio. Divida as tarefas entre seus colegas do grupo!
  • Grupos de no max. 3 pessoas.

Projetos

  1. Ideia default: Gerar uma animacao de alguns minutos com alta qualidade.
  2. Ideia: Propor um projeto de sua preferencia
  3. Ideia: Melhorar algum projeto de iniciacao cientifica
  4. Ideia: interatividade com superficies no Scilab, aplicado a processamento de dados de corrosao do prof. Ivan, de amplo interesse de entidades como a petrobras.

Criterio de Avaliacao

(under construction)

  • Trabalhos: 70% da media