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 e navegação do objeto
- Carga de modelos, remoção de superfícies ocultas, fontes de luz, modelos de tonalização (shading) e aplicação de texturas
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 | Sistemas de coordenadas SRO/SRU/SRD, mapeamento janela × viewport, recorte de retas por Cohen-Sutherland e de polígonos por Sutherland-Hodgman, e rasterização com DDA, Bresenham, scan-line e boundary-fill | ✅ Disponível |
| 04 | Instanciamento e Transformações Geométricas 2D | Instanciamento, translação, rotação e escala, coordenadas homogêneas, composição e não comutatividade das matrizes, e as funções glTranslatef, glRotatef, glScalef, glPushMatrix e glPopMatrix — inclusive os aros da Aula 03 refeitos com a pilha de matrizes | ✅ Disponível |
| 05 | Câmera Sintética e Projeções | Câmera sintética e o Sistema de Referência da Câmera, projeção paralela ortográfica e em perspectiva, volume de visualização, glMatrixMode, gluLookAt, glOrtho e gluPerspective, com zoom e pan em 3D | ✅ Disponível |
| 06 | Transformações Geométricas 3D em OpenGL | Transformações geométricas 3D com matrizes 4×4, glTranslatef/glRotatef/glScalef em três eixos, navegação do objeto (em vez da câmera) e instanciamento com a pilha de matrizes | ✅ Disponível |
| 07 | Modelagem Geométrica, Visibilidade e Iluminação | Malhas indexadas e triangulação, orientação de faces e normais, remoção de superfícies ocultas (teste de profundidade e descarte de faces traseiras), tonalização GL_FLAT e GL_SMOOTH, e carga de modelos a partir de arquivos Wavefront OBJ | ✅ Disponível |
| 08 | Modelos de Iluminação | Fontes pontual, direcional e spot, reflexão ambiente, difusa e especular, modelo de Phong, materiais e tonalização flat, Gouraud e Phong | ✅ Disponível |
| 09 | Materiais e Texturas | Mapeamento de texturas, espaço (s,t), filtros e modos de aplicação em OpenGL | 🚧 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 |
|---|---|---|---|
| 10 | Introdução à Unity: Editor, Transformações 3D e Scripting | O que é uma game engine (arquitetura e laço de jogo), Unity × Unreal × Pygame, a engine no pipeline de tempo real, interface do Editor, GameObject e Component, sistema de mão esquerda, Transform, materiais URP, câmera e o primeiro script em C# | ✅ Disponível |
| 11 | Introdução a Jogos 2D: construindo um jogo completo | Jogo one-button em pixel art com Input Actions, sprites fatiados (9-slice), Rigidbody2D, colliders e triggers, prefabs, geração de obstáculos, pontuação, bateria, derrota e reinício; laboratório com luzes 2D (setor escuro com farol), dificuldade progressiva e parallax | ✅ Disponível |
| 12 | Jogos 2D: Sprites, Tilemap e Animação | Spritesheets e atlas, Sprite Editor, Tilemap e colisores compostos, Pixel Perfect Camera, animação quadro a quadro e câmera que segue o jogador | 🚧 Em construção |
| 13 | Cenas 3D: Câmera, Iluminação, Materiais e Colisão | Importação de modelos, materiais URP Lit e texturas, luzes e sombras, física 3D e seleção por Raycast | 🚧 Em construção |
| 14 | Interface, Áudio, Efeitos e Build | uGUI completo (âncoras, layout, menus), estados com várias cenas, recorde, animação, áudio, partículas e build multiplataforma | 🚧 Em construção |
| 15 | Realidade Virtual e Aumentada | Conceitos, dispositivos e rastreamento, técnicas de interação 3D, XR Interaction Toolkit com simulador e AR Foundation | 🚧 Em construção |
Ambiente
Unity 6.3 LTS (6000.3.24f1), instalada pelo Unity Hub. A Aula 10 usa o template 3D URP; a Aula 11 começa em um projeto separado com o template Universal 2D. Os projetos abrem também nas versões Update da série 6 (6.4 em diante); quando uma tela ou API muda entre elas, a página traz a nota correspondente. Abrir um projeto em uma versão mais nova o atualiza para ela, sem caminho de volta.
| Item | Versão |
|---|---|
| Editor | Unity 6.3 LTS (6000.3.24f1) |
| Pipeline de renderização | Universal Render Pipeline: 3D URP ou Universal 2D, conforme a aula |
| Entrada | Input System (o Input Manager legado não é usado) |
| Linguagem | C# |
| Editor de código | Visual Studio Code com a extensão Unity (Microsoft) |
| RV/RA (Aula 15) | XR Interaction Toolkit e AR Foundation, instalados pelo Package Manager |
A licença Personal da Unity é gratuita. Cada aula indica os pacotes adicionais que usa.
Material Complementar
Páginas fora da sequência das aulas, para ler quando o assunto se tornar útil.
| Página | Assunto |
|---|---|
| Do conceito ao jogo completo: documentação, design e produção | Fantasia do jogador, pilares, core loop e MDA; one-pager, GDD e TDD; prototipagem e escopo; backlog e Git com Unity; playtest, balanceamento, game feel, acessibilidade e postmortem — com Drone Gate como estudo de caso |
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.