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ódulo | Foco | Ferramentas |
|---|---|---|
| 1 — Fundamentos de CG com OpenGL | Como uma imagem é sintetizada: pipeline gráfico, primitivas, recorte, transformações, projeções, modelagem e iluminação | Python, PySide6 e PyOpenGL |
| 2 — Aplicações Interativas e RV/RA com Unity | Como esses fundamentos aparecem em uma game engine: jogos 2D/3D, aplicações mobile e projetos de Realidade Virtual e Aumentada | Unity |
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ê.
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
| # | Aula | Ementa | Status |
|---|---|---|---|
| 01 | Introdução à Computação Gráfica — Hello World 2D e 3D | Pipeline gráfico, contexto OpenGL com PySide6, projeção ortográfica 2D e perspectiva 3D, teste de profundidade e iluminação | ✅ Disponível |
| 02 | Primitivas de Desenho 2D | Primitivas do modo imediato, sistema de coordenadas do mundo, aspect ratio e elementos de GUI com PySide6 | ✅ Disponível |
| 03 | Mapeamento, Recorte e Rasterização | Janela × viewport, algoritmos de recorte de pontos, retas e polígonos, e rasterização de primitivas | 🚧 Em construção |
| 04 | Instanciamento e Transformações Geométricas 2D | Coordenadas homogêneas, matrizes de translação, rotação e escala, composição e instanciamento de objetos | 🚧 Em construção |
| 05 | Câmera Sintética e Projeção em Perspectiva | Câmera virtual, projeção paralela e perspectiva, animação, zoom e pan | 🚧 Em construção |
| 06 | Transformações 3D, Modelagem e Colisão | Transformações geométricas 3D, modelagem geométrica, navegação e detecção de colisão | 🚧 Em construção |
| 07 | Modelos, Superfícies Ocultas e Iluminação | Carga 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
| # | Aula | Ementa | Status |
|---|---|---|---|
| 08 | Realidade Virtual e Aumentada: Conceitos e Aplicações | Conceitos, dispositivos, aplicações e primeiro contato com a Unity | 🚧 Em construção |
| 09 | Programação 2D para Jogos com Unity | Cena, componentes, sprites, física 2D e entrada do usuário | 🚧 Em construção |
| 10 | Programação 2D Mobile com Unity | Adaptação para dispositivos móveis: entrada por toque, resolução e desempenho | 🚧 Em construção |
| 11 | Programação 3D para Jogos com Unity | Cenas 3D, câmeras, iluminação, materiais e navegação | 🚧 Em construção |
| 12 | Aplicações de RV/RA com Unity | Interaçã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
- 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.
- Execute os exemplos: computação gráfica se aprende vendo o resultado na tela; rode e modifique cada exemplo.
- Faça os exercícios: parta dos exemplos prontos e experimente variações (cores, primitivas, transformações, animação).
- 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.