Computação Gráfica: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
 
(30 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 19: Linha 19:


== Conteudo aproximado ==
== 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)
* Modelagem e conceitos de computacao grafica no software [[Blender]] (tarefa 1)
* Programacao em Python usando a API do software [[Blender]] (tarefa 2)
* Programacao em Python (incluindo OpenGL) usando a API do [[Blender]] (tarefa 2)
* Game engine design & usage
* Game engines: projeto e uso
** Transformacoes de objetos e sistemas de coordenadas (ate 2/Out/13)
** Transformacoes geometricas, cameras
*** Matrizes de rotacaos
* Cor, Luz, modelos de transporte de fotons, fotometria, percepcao
*** Quaternions
* Renderizacao estilizada / non-photorealistic rendering - NPR
*** Coordenadas homogeneas
* Renderizacao em paralelo com GPU, threads e distribuida (uso e ideias basicas)
* See Van Dam book..
* Itens do livro do Van Dam de acordo com necessidade dos projetos


== Recursos principais ==
== Recursos principais ==
Linha 37: Linha 34:
* Biblia do Van Dam: "Computer Graphics: Principles and Practice", 3rd. edition, 2013.
* Biblia do Van Dam: "Computer Graphics: Principles and Practice", 3rd. edition, 2013.
http://www-fp.pearsonhighered.com/assets/hip/images/bigcovers/0321399528.jpg
http://www-fp.pearsonhighered.com/assets/hip/images/bigcovers/0321399528.jpg
* Dupla de livros do Velho, Gomes, Souza e outros:
** [http://www.amazon.com/Design-Implementation-3D-Graphics-Systems/dp/1466571217/ref=pd_bxgy_b_img_y  "Computer Graphics: Theory and Practice"]
** [http://www.amazon.com/gp/product/1568815808/ref=s9_simh_gw_p14_d0_i2?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1D4AXWG0RBPK2XMQQSYX&pf_rd_t=101&pf_rd_p=1630083502&pf_rd_i=507846 "Design and Implementation of 3D Graphics Systems"]
** Ainda nao explorei muito esses livros, mas sao muito importantes
http://ecx.images-amazon.com/images/I/51jtxqKEy7L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg
=== Aulas ===
Toda aula inicia com um video curto inspirador sobre CG
* Intro & Historia da CG
** Video do sketchpad, blender demo run 2013, etc.
* Transformacoes de objetos e sistemas de coordenadas (ate 2/Out/13)
** Matrizes de rotacao, coordenadas homogeneas e outras transformacoes
** Modelo geometrico de cameras como sequencia de transformacoes
** O material foi quase igual ao de [[Algebra Linear Numerica]],  porem voltado `a tarefa 1 e ao final das [http://www.lems.brown.edu/~rfabbri/stuff/fabbri-coordinate_changes.pdf notas], em que os calculos e notacao tiveram que ser refeitos para se adequar a rotacoes em torno de eixos arbitrarios usando apenas matrizes.
* [http://wiki.nosdigitais.teia.org.br/Computa%C3%A7%C3%A3o_Gr%C3%A1fica#Pre-requisitos Revisao de python]
* CG 2D e 3D com OpenGL - aula grande! ([http://www.lems.brown.edu/~rfabbri/stuff/graphics-course/aula-cg.pdf pdf] | [http://www.lems.brown.edu/~rfabbri/stuff/graphics-course/aula-cg.key keynote])
* Resumo de programacao blender com python e apresentacao de projetos (5/Nov/13)
* Cores, Iluminacao, Percepcao ([http://www.lems.brown.edu/~rfabbri/stuff/graphics-course/aula-percepcao-cor.pdf pdf] | [http://www.lems.brown.edu/~rfabbri/stuff/graphics-course/aula-percepcao-keynote.zip keynote]) - mais de 100MB
** Visao geral dos conceitos de cor e como podem ser aplicados `a CG (6/Nov/13)
** Aprofundamento: colorimetria, fotometria, iluminacao avancada
** Calibracao de cores, white balance, filtros, codificacao de imagens 3D, highlights, fenomenos naturais de cor (27/Nov/13)
** Leitura - Sobre temperatura de luzes que nao emitem como corpo negro [http://lowel.com/edu/color_temperature_and_rendering_demystified.html]
** Leitura interessante - a cor media das estrelas do universo [http://www.pha.jhu.edu/~kgb/cosspec/]
* Modelo de geracao de imagens RAW/JPEG em cameras reais para renderizacao realistica: [http://vision.middlebury.edu/color/ Estudo de Zickler et. al.] (10/Dez/13)
* Medindo luz - fluxo de energia em renderizacao, radiancia, irradiancia, funcao plenoptica - Cap 26.7 do livro (11/Dez/13)
* '''(em andamento)'''


== Recursos adicionais ==
== Recursos adicionais ==
Linha 46: Linha 69:


=== Provas ===
=== Provas ===
* P1:
* P1: terca-feira 3/Dez/2013 [http://wiki.nosdigitais.teia.org.br/images/c/c2/Prova-cg-2013.pdf (pdf)]
* Pf/Sub:
* Pf/Sub:


Linha 72: Linha 95:
* Data de entrega: 29/Outubro '''--> adiado 1 semana para 5/Novembro'''
* Data de entrega: 29/Outubro '''--> adiado 1 semana para 5/Novembro'''


== Tarefa 3: Splines, Animacao, e Efeitos 3D ==
=== Tarefa 3: Splines, Animacao, e Efeitos 3D ===
* [https://github.com/rfabbri/fabbri-graphics-course/blob/master/lab2/lab2-computer_graphics-fabbri-2013.pdf?raw=true Enunciado]
* [https://github.com/rfabbri/fabbri-graphics-course/blob/master/lab2/lab2-computer_graphics-fabbri-2013.pdf?raw=true Enunciado]
* ''Data de entrega:'' terca-feira 26/Nov/2013 ate a meia-noite. Atrasos serao aceitos, porem somente com reducao na nota.  
* ''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.
* 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 ===
==== Instrucao para Submissao ====
* Enviar um arquivo zipado com tudo (scripts, apresentacao, relatorio/readme, etc) por email, no formato:
* Enviar um arquivo zipado com tudo (scripts, apresentacao, relatorio/readme, etc) por email, no formato:
  <sobrenome>-<nome>-computacao-grafica-<ano>-tarefa<numero_tarefa>.zip
  <sobrenome>-<nome>-computacao-grafica-<ano>-tarefa<numero_tarefa>.zip
Linha 82: Linha 105:
* ''Relatorio em pdf'': Alem do README, explique o conteudo (como funciona, processo de desenvolvimento, teoria de cada efeito) em um relatorio. ''Divida as tarefas entre seus colegas do grupo!''
* ''Relatorio em pdf'': Alem do README, explique 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.
* Grupos de no max. 3 pessoas.
==== Ideias de efeitos ====
Renderizacao de linhas e NPR (non-photorealistic rendering) com [http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Freestyle freestyle]
* https://www.google.com.br/search?q=freestyle+blender
http://wiki.blender.org/uploads/thumb/6/6d/Manual-2.6-Render-Freestyle-Demo-Line_Demo.png/600px-Manual-2.6-Render-Freestyle-Demo-Line_Demo.png
==== Renderizacao Distribuida ====
* No IPRJ temos um cluster disponivel aos alunos para renderizacao paralela em alta resolucao
** Disponivel aos alunos estao os seguintes recursos do cluster: 4 nós, cada um com dois processadores de 6 núcleos dual thread, dando 24 threads por nó - um total de 96 threads. Cada nó possui 16 GB de RAM e 4 placas de rede gigabit lan. Dois dos 4 nós possuem '''placa NVidia Tesla M2075''' com 448 cores / 6GB RAM / 1 Tflops (precisão simples) ou 515 Gflops (precisão dupla), totalizando quase 1000 cuda cores com 12 GB RAM. A servidora de arquivos trabalha em redundância RAID 6 com 3 TBytes livres. Rodando no momento Opensuse 12.2.
* Cada grupo de alunos elege um representante responsavel pela renderizacao, que seja usuario de Linux
* Renderizacao distribuida bem-sucedida em full HD vai valer ate '''1 ponto adicional na media''' do grupo


=== Projetos ===
=== Projetos ===
# Ideia '''default''': Gerar uma animacao de alguns minutos com alta qualidade.
# Ideia '''default''': Gerar uma animacao de alguns minutos com alta qualidade.
## Interessante: explorar freestyle non-photorealistic rendering http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.67/FreeStyle
# Ideia: Propor um projeto de sua preferencia
# Ideia: Propor um projeto de sua preferencia
# Ideia: Melhorar algum projeto de iniciacao cientifica
# Ideia: Melhorar algum projeto de iniciacao cientifica
Linha 90: Linha 123:


== Criterio de Avaliacao ==
== Criterio de Avaliacao ==
(under construction)
* Trabalhos: 70% da media
* Trabalhos: 70% da media
* Uma prova apenas
* Sera dado maior peso aos trabalhos mais complexos
* '''Bonus:''' top 2 projetos terao +3 pontos na media (caso atingirem um alto nivel)


[[Category:IPRJ]] [[Category:Lab Macambira]]
[[Category:IPRJ]] [[Category:Lab Macambira]]

Edição atual tal como às 05h36min de 4 de fevereiro de 2014

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

  • Modelagem e conceitos de computacao grafica no software Blender (tarefa 1)
  • Programacao em Python (incluindo OpenGL) usando a API do Blender (tarefa 2)
  • Game engines: projeto e uso
    • Transformacoes geometricas, cameras
  • Cor, Luz, modelos de transporte de fotons, fotometria, percepcao
  • Renderizacao estilizada / non-photorealistic rendering - NPR
  • Renderizacao em paralelo com GPU, threads e distribuida (uso e ideias basicas)
  • Itens do livro do Van Dam de acordo com necessidade dos projetos

Recursos principais

Bibliografia

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

0321399528.jpg

51jtxqKEy7L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

Aulas

Toda aula inicia com um video curto inspirador sobre CG

  • Intro & Historia da CG
    • Video do sketchpad, blender demo run 2013, etc.
  • Transformacoes de objetos e sistemas de coordenadas (ate 2/Out/13)
    • Matrizes de rotacao, coordenadas homogeneas e outras transformacoes
    • Modelo geometrico de cameras como sequencia de transformacoes
    • O material foi quase igual ao de Algebra Linear Numerica, porem voltado `a tarefa 1 e ao final das notas, em que os calculos e notacao tiveram que ser refeitos para se adequar a rotacoes em torno de eixos arbitrarios usando apenas matrizes.
  • Revisao de python
  • CG 2D e 3D com OpenGL - aula grande! (pdf | keynote)
  • Resumo de programacao blender com python e apresentacao de projetos (5/Nov/13)
  • Cores, Iluminacao, Percepcao (pdf | keynote) - mais de 100MB
    • Visao geral dos conceitos de cor e como podem ser aplicados `a CG (6/Nov/13)
    • Aprofundamento: colorimetria, fotometria, iluminacao avancada
    • Calibracao de cores, white balance, filtros, codificacao de imagens 3D, highlights, fenomenos naturais de cor (27/Nov/13)
    • Leitura - Sobre temperatura de luzes que nao emitem como corpo negro [3]
    • Leitura interessante - a cor media das estrelas do universo [4]
  • Modelo de geracao de imagens RAW/JPEG em cameras reais para renderizacao realistica: Estudo de Zickler et. al. (10/Dez/13)
  • Medindo luz - fluxo de energia em renderizacao, radiancia, irradiancia, funcao plenoptica - Cap 26.7 do livro (11/Dez/13)
  • (em andamento)

Recursos adicionais

Provas

  • P1: terca-feira 3/Dez/2013 (pdf)
  • 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 [5]. 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: Alem do README, explique 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.

Ideias de efeitos

Renderizacao de linhas e NPR (non-photorealistic rendering) com freestyle

600px-Manual-2.6-Render-Freestyle-Demo-Line_Demo.png

Renderizacao Distribuida

  • No IPRJ temos um cluster disponivel aos alunos para renderizacao paralela em alta resolucao
    • Disponivel aos alunos estao os seguintes recursos do cluster: 4 nós, cada um com dois processadores de 6 núcleos dual thread, dando 24 threads por nó - um total de 96 threads. Cada nó possui 16 GB de RAM e 4 placas de rede gigabit lan. Dois dos 4 nós possuem placa NVidia Tesla M2075 com 448 cores / 6GB RAM / 1 Tflops (precisão simples) ou 515 Gflops (precisão dupla), totalizando quase 1000 cuda cores com 12 GB RAM. A servidora de arquivos trabalha em redundância RAID 6 com 3 TBytes livres. Rodando no momento Opensuse 12.2.
  • Cada grupo de alunos elege um representante responsavel pela renderizacao, que seja usuario de Linux
  • Renderizacao distribuida bem-sucedida em full HD vai valer ate 1 ponto adicional na media do grupo

Projetos

  1. Ideia default: Gerar uma animacao de alguns minutos com alta qualidade.
    1. Interessante: explorar freestyle non-photorealistic rendering http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.67/FreeStyle
  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

  • Trabalhos: 70% da media
  • Uma prova apenas
  • Sera dado maior peso aos trabalhos mais complexos
  • Bonus: top 2 projetos terao +3 pontos na media (caso atingirem um alto nivel)