Remoção de Faces Traseiras
Recorte
Instituto Superior Técnico
Edward Angel, Cap. 7
Instituto Superior Técnico
Computação Gráfica
2009/2010
Na última aula...
Câmara Virtual Simples
Transformação de Visualização
Volumes canónicos
©2010, CG&M/IST e Figuras Addison Wesley
Volumes canónicos
Transformações de Normalização
Sumário
Remoção de Faces Traseiras
Back-face Culling
Back-face Culling
Computação Gráfica
Câmara Virtual Simples
Câmara Virtual Simples
Câmara Virtual Simples
Parâmetros de entrada
posição (VRP)
orientação (VPN, VUV´)
localização do plano de visualização (D) dimensões da janela de visualização
w, h, RA e FOV (vertical e horizontal)
planos de recorte através das distâncias F e B sobre VPN projecção ortográfica ou perspectiva
Câmara Virtual Simples
VUV (view up vector)
ângulos de abertura (FOVs) B
F
D
©2010, CG&M/IST e Figuras Addison Wesley 6
VPN-direcção de visualização
(view plane normal)
VRP plano de recorte anterior plano de recorte posterior Janela de visualização 2w x 2h
Computação Gráfica
Pipeline de Visualização 3D
Pipeline de Visualização 3D
Pipeline de Visualização 3D
Pipeline de Visualização 3D
Computação Gráfica
Remoção de Faces Traseiras
Remoção de Faces Traseiras
Faces Traseiras
Requisitos
Objecto é um poliedro sólido
faces poligonais envolvem o volume
O interior não é exposto pelo recorte
Conclusão
Faces traseiras não são visíveis
Solução
Identificar faces traseiras
Remover da cena
Identificar Faces Traseiras
Como identificar faces traseiras?
Calcular o ângulo entre a normal e a VPN?
N N
©2010, CG&M/IST e Figuras Addison Wesley
Não é eficiente!
V
> 90o < 90o
Identificar Faces Traseiras
Como identificar faces traseiras?
Usar produto interno
Normal ao polígono (N) Vector de visualização (V)
< 0 Polígono visível < 0 Polígono visível = 0 Arestas visíveis
> 0 Polígono invisível (back-face)
Cálculos em coordenadas de visualização (VRC)
V
N N
> 90o < 90o
Identificar Faces Traseiras
Como identificar faces traseiras?
Usar produto interno ( N ⋅⋅⋅⋅ V > 0 ⇒⇒⇒⇒ back-face) Cálculos em coordenadas da câmara (VRC)
É mesmo necessário calcular o produto interno?
Não!
©2010, CG&M/IST e Figuras Addison Wesley
Não!
Basta verificar a componente Z da normal!! NZ > 0 ⇒⇒⇒⇒ back-face
V
N N
> 90o < 90o
Front-Face Back-Face
Remover Faces Traseiras
Em poliedros convexos
RSO fica completa com back-face culling
Em poliedros côncavos
Algumas front-faces podem estar
totalmente ocultas (E) totalmente ocultas (E) parcialmente ocultas (C) x z A B C D E F G H
Back-Face Culling
Remoção de faces traseiras
Remove (aprox.) metade dos polígonos
Limitações
Objectos definidos com outra representação:• Convertidos em malhas poligonais©2010, CG&M/IST e Figuras Addison Wesley
Apenas funciona em
Modelos sólidos
Definidos com malhas poligonais
Para volumes não convexos
Apenas serve como passo de pré-processamento É necessário usar outro algoritmo
Computação Gráfica
Pipeline de Visualização 3D
Pipeline de Visualização 3D
Pipeline de Visualização 3D
Pipeline de Visualização 3D
Computação Gráfica
Recorte
Recorte
Volume de Visualização
Sobre que volume de visualização é feito o recorte?
Volume Perspectivo (Frustum)? Volume Ortogonal?
Volume Canónico Perspectivo? Volume Canónico Ortogonal? Volume Canónico Ortogonal?
Onde estamos no pipeline 3D?
2º Andar, 3º Passo
Recorte de Polígonos
Qual o volume de visualização
Que temos neste ponto?
Recorte
(1/3)
Usa volume canónico ortogonal
Paralelepípedo z
∈
[0..1], x,y
∈
[-1..1]
y (-1, 1, 1) (-1, 1, 0)
plano de recorte posterior (z = 1)
©2010, CG&M/IST e Figuras Addison Wesley
y z x (-1, 1, 1) (1, -1, 1) (1, -1, 0) (-1, -1, 0) (-1, 1, 0) (-1, -1, 1) (1, 1, 1) plano de recorte anterior (z = 0) posterior (z = 1)
Recorte
(2/3)
Elimina primitivas fora do volume canónico
Recorte
(3/3)
Vértices:
Comparar
x e y com +/- 1 z com 0 e 1
Conservar se dentro dos limites, eliminar se fora
©2010, CG&M/IST e Figuras Addison Wesley
Conservar se dentro dos limites, eliminar se fora
Arestas
Calcular intersecção com planos de recorte Determinar valores x, y, z na intersecção Conservar parte da aresta dentro do volume
Computação Gráfica
Recorte 2D
Recorte 2D
Recorte de Linhas
(x ≤ X ≤ X ) e (Y ≤ Y ≤ Y ) ⇒ ponto dentro Rectângulo de Recorte A B C D E F G H I J G´ D´ F´ H´ I´ J´ Recorte A B C G´ D´ H´©2010, CG&M/IST e Figuras Addison Wesley
(xmin ≤ X ≤ Xmax) e (Ymin ≤ Y ≤ Ymax) ⇒ ponto dentro
Extremos dentro [AB]: segmento dentro Um fora outro dentro [CD]
Determinar ponto de intersecção [D’]
Rejeitar exterior
Ambos fora [GH ou IJ]:
Determinar pontos de intersecção
se houver [GH], usá-los rejeitar se não [IJ]
Recorte de Linhas:
Força Bruta
Testar extremos contra rectângulo de recorte
Tratar os casos triviais de inclusão total
Casos não triviais:
usar equação paramétrica da recta
Resolver equações simultâneas
segmento de recta (tline) 4 lados do rectângulo (tedge)
Existe intersecção se:
X = X0 + t (X1 - X0) Y = Y0 + t (Y1 - Y0)
Computação Gráfica
Recorte 2D
Recorte 2D
Algoritmo de Cohen-Sutherland
(1/5)
Usa Outcodes
divide plano em 9 regiões
1000 1010
1001 1º Bit: Acima do lado superior (Y > Ymax)
2º Bit: Abaixo do lado inferior (Y < Ymin)
Casos triviais:
OC1= OC0 = 0000 => aceita
OC1 & OC0 ≠ 0000 => rejeita (semiplano ext.)
0000 0010
0100 0001
0101 0110
2º Bit: Abaixo do lado inferior (Y < Ymin) 3º Bit: À direita do lado direito (X > Xmax) 4º Bit: À esquerda do lado esquerdo (X < Xmin)
Algoritmo de Cohen-Sutherland
(2/5)
Restantes Casos (OC
1& OC
0= 0)
Subdividir segmento inicial:
Corte através de um lado da janela atravessado Partir de um extremo exterior
Testar outcode para escolher próximo lado de recorte (bit a 1)
Descartar o fragmento exterior
©2010, CG&M/IST e Figuras Addison Wesley
Descartar o fragmento exterior
Se fragmento interior trivialmente tratável o processo termina. Caso contrário, subdividi-lo repetir o processo.
Exemplo
Algoritmo de Cohen-Sutherland
(3/5) Rectangulo de Recorte A B C D 0000 1001 0010 1000 1010Recorte de [AD]
Subdividir pelo lado superior → [AB] e [BD]. Descartar fragmento exterior [BD].
Aceitar trivialmente [AB] (OCA = OCB = 0)
Algoritmo de Cohen-Sutherland
(4/5)Exemplo
I H F G 0000 0100 1001 0010 1000 1010 Rectangulo de Recorte©2010, CG&M/IST e Figuras Addison Wesley
Partir de E e subdividir por baixo → [EF] e [FI] Descartar [EF] → [FI] não trivial
Subdividir [FI] pelo lado superior → [FH] e [HI]. Descartar [HI] → [FH] não trivial (OCH = 0010). Subdividir [FH] pelo lado direito → [FG] e [GH]. Descartar [GH] → Aceitar [FG] (OCF = OCG = 0).
E
F
Algoritmo de Cohen-Sutherland
(5/5)
Eficiente em duas situações:
Janelas rectangulares “grandes”
Rectângulo abrange quase toda as linhas
Grande parte dos segmentos trivialmente aceites
Grande parte dos segmentos trivialmente aceites
“Pick” (selecção de objectos),
Rectângulo de recorte pequeno
Centrado na posição do cursor
Próxima Aula
Recorte
Algoritmo de Cyrus-Beck
©2010, CG&M/IST e Figuras Addison Wesley
Algoritmo de Cyrus-Beck