Pular para o conteúdo principal

Computação Gráfica e Realidade Virtual

Sobre esta Disciplina

A Computação Gráfica é a subárea da Ciência da Computação que estuda métodos para sintetizar e manipular digitalmente conteúdo visual — presente em interfaces gráficas, jogos eletrônicos, publicidade, engenharia, arquitetura e medicina.

A disciplina é organizada em dois módulos:

MóduloFocoFerramentas
1 — Fundamentos de CG com OpenGLComo uma imagem é sintetizada: pipeline gráfico, primitivas, recorte, transformações, projeções, modelagem e iluminaçãoPython, PySide6 e PyOpenGL
2 — Aplicações Interativas e RV/RA com UnityComo esses fundamentos aparecem em uma game engine: jogos 2D/3D, aplicações mobile e projetos de Realidade Virtual e AumentadaUnity

O primeiro módulo constrói o entendimento de baixo para cima, escrevendo o desenho vértice a vértice. O segundo mostra o mesmo maquinário já encapsulado por uma engine — e é aí que se percebe o que a engine está fazendo por você.

Referências oficiais do curso

Este material é um apoio ao estudo — complementa as aulas presenciais, mas não substitui a leitura da bibliografia oficial da disciplina:

AZEVEDO, Eduardo; CONCI, Aura; LETA, Fabiana R. Computação Gráfica. Rio de Janeiro: Elsevier, 2003–2008. 2 v.

FOLEY, James D. et al. Computer Graphics: Principles and Practice. 3. ed. Addison-Wesley, 2013.

BURDEA, Grigore; COIFFET, Philippe. Virtual Reality Technology. 2. ed. Wiley-Interscience, 2003.

Para aprofundamento em OpenGL: HEARN, D.; BAKER, M. P.; CARITHERS, W. R. Computer Graphics with OpenGL. 4. ed. Pearson Prentice Hall, 2011; e COHEN, M.; MANSSOUR, I. H. OpenGL: uma abordagem prática e objetiva. Novatec, 2006.


Módulo 1 — Fundamentos de CG com OpenGL

Síntese de imagens 2D e 3D no pipeline fixed-function, com Python: PySide6 fornece a janela, o contexto gráfico e os elementos de interface; PyOpenGL expõe as funções gl*.

Conteúdo

  • Introdução à Computação Gráfica: subáreas, histórico e aplicações
  • O pipeline gráfico e os espaços de coordenadas
  • Primitivas gráficas e elementos de interface com PySide6
  • Mapeamento janela × viewport, recorte (clipping) e rasterização
  • Transformações geométricas 2D: coordenadas homogêneas, matrizes e instanciamento
  • Câmera virtual, projeção paralela e projeção em perspectiva
  • Transformações geométricas 3D, modelagem geométrica, navegação e detecção de colisão
  • Carga de modelos, remoção de superfícies ocultas e modelos de iluminação

Aulas

#AulaEmentaStatus
01Introdução à Computação Gráfica — Hello World 2D e 3DPipeline gráfico, contexto OpenGL com PySide6, projeção ortográfica 2D e perspectiva 3D, teste de profundidade e iluminação✅ Disponível
02Primitivas de Desenho 2DPrimitivas do modo imediato, sistema de coordenadas do mundo, aspect ratio e elementos de GUI com PySide6✅ Disponível
03Mapeamento, Recorte e RasterizaçãoJanela × viewport, algoritmos de recorte de pontos, retas e polígonos, e rasterização de primitivas🚧 Em construção
04Instanciamento e Transformações Geométricas 2DCoordenadas homogêneas, matrizes de translação, rotação e escala, composição e instanciamento de objetos🚧 Em construção
05Câmera Sintética e Projeção em PerspectivaCâmera virtual, projeção paralela e perspectiva, animação, zoom e pan🚧 Em construção
06Transformações 3D, Modelagem e ColisãoTransformações geométricas 3D, modelagem geométrica, navegação e detecção de colisão🚧 Em construção
07Modelos, Superfícies Ocultas e IluminaçãoCarga de modelos, remoção de faces ocultas, fontes de luz e modelos de tonalização🚧 Em construção

Ambiente

pip install PySide6 PyOpenGL

Baixe o arquivo de dependências: requirements.txt

Os exemplos usam o pipeline fixed-function do OpenGL 2.1 (perfil de compatibilidade). Cada exemplo é um arquivo independente e executável, baixável a partir da própria aula.


Módulo 2 — Aplicações Interativas e RV/RA com Unity

Desenvolvimento de aplicações interativas em uma game engine, cobrindo conceitos, dispositivos e técnicas de interação em Realidade Virtual e Aumentada.

Conteúdo

  • Realidade Virtual e Aumentada: conceitos, dispositivos e aplicações
  • Game engines: arquitetura, cena, componentes e ciclo de vida
  • Programação 2D para jogos e aplicações mobile
  • Programação 3D para jogos
  • Interação em interfaces 3D: dispositivos e técnicas de interação
  • Animações, efeitos audiovisuais e projeto multiplataforma
  • Desenvolvimento de aplicações de RV/RA

Aulas

#AulaEmentaStatus
08Realidade Virtual e Aumentada: Conceitos e AplicaçõesConceitos, dispositivos, aplicações e primeiro contato com a Unity🚧 Em construção
09Programação 2D para Jogos com UnityCena, componentes, sprites, física 2D e entrada do usuário🚧 Em construção
10Programação 2D Mobile com UnityAdaptação para dispositivos móveis: entrada por toque, resolução e desempenho🚧 Em construção
11Programação 3D para Jogos com UnityCenas 3D, câmeras, iluminação, materiais e navegação🚧 Em construção
12Aplicações de RV/RA com UnityInteração em interfaces 3D e desenvolvimento de aplicações de Realidade Virtual e Aumentada🚧 Em construção

Ambiente

Unity (versão LTS), com os pacotes de RV/RA indicados em aula. As versões exatas e os materiais específicos deste módulo são combinados em aula.


Como Usar Este Material

  1. Siga a ordem das aulas: o conteúdo é incremental — cada aula pressupõe as anteriores, e o Módulo 2 pressupõe os fundamentos do Módulo 1.
  2. Execute os exemplos: computação gráfica se aprende vendo o resultado na tela; rode e modifique cada exemplo.
  3. Faça os exercícios: parta dos exemplos prontos e experimente variações (cores, primitivas, transformações, animação).
  4. Confirme em aula: prazos, avaliações e materiais específicos da turma mudam a cada semestre e não ficam nesta página.

Pré-Requisitos

  • Algoritmos e Programação — lógica, estruturas de dados básicas e programação em Python
  • Álgebra linear básica (vetores, matrizes, produto escalar e vetorial)
  • Noções de geometria analítica (sistemas de coordenadas)

Créditos

Os exemplos do Módulo 1 foram criados originalmente em C++ pelo professor Rafael Rieder. As versões publicadas aqui são a adaptação para Python, com PySide6 na interface.