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 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​

#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çãoSistemas 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
04Instanciamento e Transformações Geométricas 2DInstanciamento, 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
05Câmera Sintética e ProjeçõesCâ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
06Transformações Geométricas 3D em OpenGLTransformaçõ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
07Modelagem Geométrica, Visibilidade e IluminaçãoMalhas 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
08Modelos de IluminaçãoFontes pontual, direcional e spot, reflexão ambiente, difusa e especular, modelo de Phong, materiais e tonalização flat, Gouraud e Phong✅ Disponível
09Materiais e TexturasMapeamento 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​

#AulaEmentaStatus
10Introdução à Unity: Editor, Transformações 3D e ScriptingO 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
11Introdução a Jogos 2D: construindo um jogo completoJogo 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
12Jogos 2D: Sprites, Tilemap e AnimaçãoSpritesheets 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
13Cenas 3D: Câmera, Iluminação, Materiais e ColisãoImportação de modelos, materiais URP Lit e texturas, luzes e sombras, física 3D e seleção por Raycast🚧 Em construção
14Interface, Áudio, Efeitos e BuilduGUI completo (âncoras, layout, menus), estados com várias cenas, recorde, animação, áudio, partículas e build multiplataforma🚧 Em construção
15Realidade Virtual e AumentadaConceitos, 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.

ItemVersão
EditorUnity 6.3 LTS (6000.3.24f1)
Pipeline de renderizaçãoUniversal Render Pipeline: 3D URP ou Universal 2D, conforme a aula
EntradaInput System (o Input Manager legado não é usado)
LinguagemC#
Editor de códigoVisual 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áginaAssunto
Do conceito ao jogo completo: documentação, design e produçãoFantasia 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​

  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.