Buscar

Aula_14_Laboratorio_3

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/

Continue navegando