Baixe o app para aproveitar ainda mais
Prévia do material em texto
Laboratório 3 Prof. Eduardo Gastal eslgastal@inf.ufrgs.br INF01047 – 2017/1 Conceitos Essenciais Definição e diferença entre ponto e vetor Ponto: Posição espacial Vetor: Comprimento (magnitude, norma) Sentido (orientação, direction) 2 Conceitos Essenciais Representação dentro do computador Vetor: Definido em relação a uma base vetorial O que significam os coeficientes 𝑣1, 𝑣2, …? Ponto: Definido em relação a uma base de vetores e um ponto de origem (sistema de coordenadas) 3 𝑣 = 𝑣1 𝑒1 + 𝑣2 𝑒2 𝑒1, 𝑒2, … p = o + 𝑑 = o + 𝑑1 𝑒1 + 𝑑2 𝑒2 Conceitos Essenciais Operações com pontos e vetores Vetor + Vetor, Vetor + Ponto, Ponto - Ponto, ... Produto interno (produto escalar, dot product) Produto vetorial 3D (vector, cross product) 4 90° 𝑢 ⋅ 𝑣 = 𝟎 (vetores ortogonais) 𝑢 ⋅ 𝑣 > 𝟎< 90° 𝑢 ⋅ 𝑣 < 𝟎 > 90° Conceitos Essenciais Operações que não existem: Ponto + Ponto ? ... 5 𝑢 ⋅ 𝐩 = ? 𝑢 ⋅ 𝑣 ⋅ 𝑤 = ? Conceitos Essenciais Combinação linear de vetores Linhas e interpolação linear Planos Combinação convexa de pontos 6 = 𝐩 = 𝐚 + 𝑡 𝐛 − 𝐚 | 𝑡 ∈ [0,1]{ }𝐿 (𝐩 − 𝐚) ⋅ 𝑛 = 0{ }Π= 𝐩 ∈ ℝ3 | 𝑎1 𝑣1 + 𝑎2 𝑣2 + ⋯+ 𝑎𝑁 𝑣𝑁 𝐩 = 𝛼1𝐚 + 𝛼2𝐛 + 𝛼3𝐜 | 0 ≤ 𝛼1, 𝛼2, 𝛼3 ≤ 1 e 𝛼1 + 𝛼2 + 𝛼3 = 1 Conceitos Essenciais Rendering O que é rasterização? O que é ray casting? Qual a diferença entre esses processos? Pipeline gráfico (rasterização) O que envolve cada passo do pipeline 7 Pipeline Gráfico (Rasterização) 8 Aplicação R e n d e ri n g Imagem (framebuffer) Fragment Generation Fragment Shading Visibility Model & View Vertex Shading Projection Clipping Screen Mapping (Viewport) Programáveis! GPU shaders Linguagem: GLSL (OpenGL) Obrigatório após OpenGL 3.3 (antes: pipeline fixo) Conceitos Essenciais Quais as vantages do uso de triângulos para modelagem geométrica? Estrutura de dados para representação de objetos virtuais Separação de Geometria vs Topologia 9 Conceitos Essenciais Transformações Geométricas Rotação, Translação, Escalamento (Reflexão) Reconhecer as matrizes destas transformações Não precisam decorar as matrizes... Composição de transformações (não comutativo) Transformam pontos em novos pontos Transformam vetores em novos vetores O que significa “rotacionar” um ponto? Rotação do vetor que define o ponto em relação à origem Idem para “escalamento” de um ponto Faz sentido uma translação de um vetor? 10 Conceitos Essenciais Coordenadas Homogêneas Por que utilizamos? Para poder representar translação como uma multiplicação de matrizes Para fazer projeção perspectiva (divisão por w) Qual a diferença entre um ponto e um vetor representados em coordenadas homogêneas? Ponto: w=1, Vetor: w=0. Como construir matrizes em coordenadas homogêneas para as transformações geométricas? 11 Conceitos Essenciais Mudança de Sistema de Coordenadas Revisem a Aula 08 12 Mudança de Sist. Coordenadas 13 𝑥 𝑦 o 𝑝 𝑞 r Mudança de Sist. Coordenadas 14 𝑥 𝑦 o 𝑝 𝑞 r 𝐳 + 𝑎𝑢𝑢 + 𝑎𝑣 𝑣𝐚 = Mudança de Sist. Coordenadas 15 𝑥 𝑦 o 𝑝 𝑞 r 𝐳 + 𝑎𝑢𝑢 + 𝑎𝑣 𝑣 = 𝐫 + 𝑎𝑝 𝑝 + 𝑎𝑞 𝑞𝐚 = Mudança de Sist. Coordenadas 16 𝑥 𝑦 o 𝑝 𝑞 r 𝐳 + 𝑎𝑢𝑢 + 𝑎𝑣 𝑣 = 𝐫 + 𝑎𝑝 𝑝 + 𝑎𝑞 𝑞𝐚 = = 𝑝 𝑞 𝐫 𝑎𝑝 𝑎𝑞 1 𝑢 𝑣 𝐳 𝑎𝑢 𝑎𝑣 1 Mudança de Sist. Coordenadas 𝐳 + 𝑎𝑢𝑢 + 𝑎𝑣 𝑣 = 𝐫 + 𝑎𝑝 𝑝 + 𝑎𝑞 𝑞𝐚 = = 𝑝 𝑞 𝐫 𝑎𝑝 𝑎𝑞 1 𝑢 𝑣 𝐳 𝑎𝑢 𝑎𝑣 1 𝑥 𝑦 𝐨 𝑎𝑢 𝑎𝑣 1 𝑎𝑝 𝑎𝑞 1 = 𝑥 𝑦 𝐨 𝑢𝑥 𝑣𝑥 𝑧𝑥 𝑢𝑦 𝑣𝑦 𝑧𝑦 0 0 1 𝑝𝑥 𝑞𝑥 𝑟𝑥 𝑝𝑦 𝑞𝑦 𝑟𝑦 0 0 1 Mudança de Sist. Coordenadas 𝐳 + 𝑎𝑢𝑢 + 𝑎𝑣 𝑣 = 𝐫 + 𝑎𝑝 𝑝 + 𝑎𝑞 𝑞𝐚 = = 𝑝 𝑞 𝐫 𝑎𝑝 𝑎𝑞 1 𝑢 𝑣 𝐳 𝑎𝑢 𝑎𝑣 1 𝑢𝑥 𝑣𝑥 𝑧𝑥 𝑢𝑦 𝑣𝑦 𝑧𝑦 0 0 1 𝑎𝑢 𝑎𝑣 1 = 𝑝𝑥 𝑞𝑥 𝑟𝑥 𝑝𝑦 𝑞𝑦 𝑟𝑦 0 0 1 𝑎𝑝 𝑎𝑞 1 𝑥 𝑦 𝐨 𝑎𝑢 𝑎𝑣 1 𝑎𝑝 𝑎𝑞 1 = 𝑥 𝑦 𝐨 𝑢𝑥 𝑣𝑥 𝑧𝑥 𝑢𝑦 𝑣𝑦 𝑧𝑦 0 0 1 𝑝𝑥 𝑞𝑥 𝑟𝑥 𝑝𝑦 𝑞𝑦 𝑟𝑦 0 0 1 Conceitos Essenciais Projeção Perspectiva Intersecção com o plano de projeção na direção do centro de projeção 19 Posição da Câmera (Centro de Projeção) c Plano de Projeção p’ p q’ r’ q r Conceitos Essenciais Projeção Paralela Ortográfica Intersecção com o plano de projeção com raios paralelos de projeção 20 Posição da Câmera (Centro de Projeção) c Plano de Projeção p’ p q’ r’ q r Conceitos Essenciais Projeções Não é necessário decorar as matrizes... Mas: é necessário entender o que elas fazem Qual o papel da divisão por w na projeção perspectiva? 21 Sistemas de Coordenadas 22 Sistemas de Coordenadas 23 Translação, Escala, Rotação... Sistemas de Coordenadas Coordenadas do Modelo (Model Coord.) Coordenadas do Mundo (World Coord.) Coordenadas da Câmera (Camera Coord.) Normalized Device Coordinates 24 Translação, Escala, Rotação... Sistemas de Coordenadas Coordenadas do Modelo (Model Coord.) Coordenadas do Mundo (World Coord.) Coordenadas da Câmera (Camera Coord.) Normalized Device Coordinates 25 Translação, Escala, Rotação... Definição da Câmera Sistemas de Coordenadas Coordenadas do Modelo (Model Coord.) Coordenadas do Mundo (World Coord.) Coordenadas da Câmera (Camera Coord.) Normalized Device Coordinates 26 Translação, Escala, Rotação... Definição da Câmera Sistemas de Coordenadas Coordenadas do Modelo (Model Coord.) Coordenadas do Mundo (World Coord.) Coordenadas da Câmera (Camera Coord.) Normalized Device Coordinates 27 Translação, Escala, Rotação... Definição da Câmera Projeção (com divisão por w) Sistemas de Coordenadas Coordenadas do Modelo (Model Coord.) Coordenadas do Mundo (World Coord.) Coordenadas da Câmera (Camera Coord.) Normalized Device Coordinates 28 Translação, Escala, Rotação... Definição da Câmera Projeção (com divisão por w) Conceitos Essenciais Rasterização Processo de converter primitivas geométricas em pixels Além disso, envolve interpolação dos atributos numéricos de cada vértice para cada pixel Cor, normais, profundidade (para o z-buffer), ... 29 Conceitos Essenciais Rasterização: Linhas Midpoint algorithm: escolhe pixel mais próximo verticalmente da linha Digital differential analyzer: simples otimização do loop do midpoint algorithm Bresenham: ideia essencial é acumular o erro, e tomar a decisão sobre qual pixel vai ser desenhado baseado neste erro. 30 Conceitos Essenciais Rasterização: Triângulos Ideia basica: utilizar edge equations para determinar se um pixel está dentro ou fora do triângulo 31 Conceitos Essenciais Clipping: recorte de primitivas que saem fora da região de interesse Culling: descarte de primitivas que não serão vistas pela câmera virtual Por exemplo: pontos fora do cubo unitário em NDC (normalized device coordinates) não aparecem na tela! 32 Conceitos Essenciais Por que é importante fazer clipping e culling? Performance: evitamos processar primitivas que não irão aparecer na tela Evita casos problemáticos, como a singularidade do plano 𝑧 = 0 (𝑤 = 0), o que pode resultar em divisão por zero Algoritmo de Cohen-Sutherland Rapidamente detecta linhas que podem precisar de recorte 33 Conceitos Essenciais Visibilidade: como desenhar corretamente objetos que se sobrepõe? Algoritmo do z-buffer Algoritmo do Pintor 34 Importante! Perguntas? 35 Backface Culling 36 𝑢 𝑤 𝑣 Camera (Eye) Coord. Backface Culling 37 𝑢 𝑤 𝑣 Camera (Eye) Coord. Backface Culling 38 𝑢 𝑤 𝑣 Camera (Eye) Coord. Como detectar triângulos que estão “de costas” para a câmera? Backface Culling 39 𝑢 𝑤 𝑣 Camera (Eye) Coord. Como detectar triângulos que estão “de costas” para a câmera? 𝑛 Backface Culling40 𝑢 𝑤 𝑣 Camera (Eye) Coord. Como detectar triângulos que estão “de costas” para a câmera? Descartar (cull) triângulos quando 𝑐 ⋅ 𝑛 𝑛 𝑐 Backface Culling 41 𝑢 𝑤 𝑣 Camera (Eye) Coord. Como detectar triângulos que estão “de costas” para a câmera? Descartar (cull) triângulos quando 𝑐 ⋅ 𝑛 𝑛 < 0 𝑐 Backface Culling 42 𝑢 𝑤 𝑣 Camera (Eye) Coord. Como detectar triângulos que estão “de costas” para a câmera? Descartar (cull) triângulos quando 𝑐 ⋅ 𝑛 𝑛 < 0 𝑐 𝑐 Perguntas? 43 Tarefas para Entregar (Moodle) INF01047 Fundamentos de Computação Gráfica (2017/1) http://moodle.inf.ufrgs.br Senha: FCG20171 “Laboratório 3 - Tarefas para Entregar” Configuração sugerida Code::Blocks: Settings > Editor > Syntax highlighting > Comment line (normal) > Foreground > Escolha uma cor escura Settings > Editor > SpellChecker > desabilitar “Enable online spell checker” Salve documentos na pasta C:\codeblocks Caso o Code::Blocks não consiga salvar os arquivos modificados, utilize o NOTEPAD++ 44 http://moodle.inf.ufrgs.br/
Compartilhar