Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Transcript of Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
![Page 1: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/1.jpg)
Computação Gráfica – Visibilidade
Profa. Mercedes Gonzales Márquez
![Page 2: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/2.jpg)
Tópicos
Visibilidade Algoritmos de Visibilidade
![Page 3: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/3.jpg)
O sistema de visão humana usa vários recursos para perceber a profundidade. Um deles é a oclusão de objetos, ou seja, objetos mais distantes em relação a um observador ao longo de um raio de visão são escondidos pelos objetos opacos mais próximos.
Na Figura, a superfície SA é visível em relação ao observador e as outras ficam escondidas, em inglês hidden.
Visibilidade
![Page 4: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/4.jpg)
Visibilidade
![Page 5: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/5.jpg)
Como diferenciar as distâncias das superfícies em relação ao seu centro de projeção, “limitando” à “visão” somente para as superfícies mais próximas?.
A essência dos algoritmos de visibilidade é muito simples: remover as partes que “não devem ser vistas” pelo computador na produção de uma imagem sintética.
Problema de Visibilidade
![Page 6: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/6.jpg)
Quais primitivas transformadas e projetadas contribuem para os pixels da imagem?
Problema de Visibilidade
![Page 7: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/7.jpg)
Problema de Visibilidade
Em geral resolve-se o problema oposto: Quais as superfícies invisíveis que:
estão fora do campo de visão são faces de trás num poliedro fechado estão ocultas por outras faces mais próximas da
câmara
![Page 8: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/8.jpg)
São classificados em três grandes grupos: (a) técnicas baseadas em espaço de imagem,
(b) técnicas baseadas em espaço do objeto ou da cena e
(c) técnicas mistas.
Algoritmos de Visibilidade
![Page 9: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/9.jpg)
A determinação de visibilidade por técnicas baseadas no espaço de imagem tem resolução a nível de pixels.
As baseadas em espaço da cena tem resolução a nível do espaço de representação das figuras geométricas.
Algoritmos de Visibilidade
![Page 10: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/10.jpg)
Alguns métodos:– Detecção das faces de trás (back-face culling) - Técnica
baseada no espaço da cena.– Depth-buffer (z-buffer) – Técnica baseada no espaço da
imagem.– Painter’s algorithm (Algoritmo do Pintor) - Técnica baseada
no espaço da cena.
Algoritmos de Visibilidade
![Page 11: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/11.jpg)
Backface Culling(Escolha das faces de trás) Este método pode ser aplicado em um único poliedro
convexo fechado na cena.
Não pode ser aplicado : - Em poliedros côncavos - ou quando existem mais objetos
![Page 12: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/12.jpg)
Backface Culling
As faces cujas normais estão na direcção contrária ao observador não são visíveis. Elas estão numa parte do poliedro cuja visibilidade e bloqueada por outras faces mais próximas ao observador.
E
Usa-se o conceito de vetor normal da face apontando para fora do volume.
![Page 13: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/13.jpg)
Backface Culling
Esse conceito não pode ser aplicado para um poliedro côncavo como o da figura, observe que a face pintada de vermelho tem vetor normal na mesma direção do observador.
E
![Page 14: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/14.jpg)
Backface Culling
Como determinar se a face é da frente?
Fase da frente – Fase da frente – o ângulo o ângulo θθ formado pelo vetor formado pelo vetor da linha de vista E e o vetor normal N é menor ou da linha de vista E e o vetor normal N é menor ou igual a 90igual a 90o o
![Page 15: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/15.jpg)
Backface Culling
Resumindo– E.N ≥ O → Face da
frente– E.N < O → Face de trás
ou E.N ≥ O
![Page 16: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/16.jpg)
Backface Culling
Como determinar o vetor normal n da face com pontos P1, P2 e P3?
1232, PPvePPuondevun
P3
P2
P1
n
)23)(21()21)(23(
)23)(21()21)(23(
)23)(21()21)(23(
yyxxyyxxz
xxzzxxzzy
zzyyzzyyx
PPPPPPPPn
PPPPPPPPn
PPPPPPPPn
![Page 17: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/17.jpg)
Backface Culling
Veja o programa visibilidade.c no qual cada vez que um cubo é rotacionado são exibidas somente as faces visíveis detetadas pelo algoritmo backface culling. Responda as seguintes perguntas:
– Como são construídas as faces do cubo?– Como são feitas as rotações do cubo, por quê não é usado o comando glRotatef?– Qual é o trecho de código que determina os vetores normais das faces do cubo?– Qual é o trecho de código que determina o vetor da direção de vista. Qual é a posição do observador?– Mude a posição do observador para cima do cubo e para um lado do cubo e observe os novos resultados de visibilidade.
![Page 18: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/18.jpg)
Z-Buffer
• Método que opera no espaço da imagem• Mantém para cada pixel um valor de profundidade (z-buffer ou
depth buffer) • Ao início fazemos:
z-buffer = profundidade máxima Buffer de cor = cor de fundo
• Durante a rasterização de cada polígono, cada pixel passa por um teste de profundidade Se a profundidade do pixel for menor que a registrada no z-
buffer• Pintar o pixel (atualizar o buffer de cor)• Atualizar o buffer de profundidade
Caso contrário, ignorar
![Page 19: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/19.jpg)
Z-Buffer
![Page 20: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/20.jpg)
Z-Buffer
• OpenGL: Habilitar o z-buffer:
glEnable (GL_DEPTH_TEST);
Não esquecer de alocar o z-buffer → GLUT_DEPTH• Número de bits por pixel depende de implementação /
disponibilidade de memória
Ao gerar um novo quadro, limpar também o z-buffer:glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Ordem imposta pelo teste de profundidade pode ser alteradaglDepthFunc(…)
• Veja os exemplos em OpenGL: hidplanes.c, planes.c e triangles.c
![Page 21: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/21.jpg)
Z-Buffer
• Exercícios:
(1) As diferentes opções para o parâmetro do comando glDepthFunc estão na página 290 do livro Redbook. Teste cada uma das opções nos três programas (hidplanes.c, planes.c, triangles.c) e relate os resultados.
(2) Desenhe com polígonos (faces) o seguinte cenário mostrado na vista frontal e vista de topo. Aplique as duas técnicas de visibilidade (z-buffer e back face culling) e discuta os resultados visuais após observar o cenário de vários pontos de vista.
![Page 22: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/22.jpg)
Algoritmo do Pintor
• Também conhecido como algoritmo de prioridade em Z (depth priority)
• Idéia é pintar objetos mais distantes (background) antes de pintar objetos próximos (foreground)
Técnica de pintores : as montanhas distantes foram pintadas em primeiro lugar, o gramado mais próximo foi adicionado e, finalmente, as árvores foram acrescidas.
![Page 23: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/23.jpg)
Algoritmo do Pintor
Basicamente, o procedimento envolve três passos:
1. ordenar, de forma decrescente, os polígonos pelas distâncias, ou profundidades, em relação ao observador;
2. resolver as ambiguidades na ordenação, dividindo os polígonos; e
3. desenhar na memória de exibição os polígonos, dos mais distantes para os mais próximos, sendo os valores gravados anteriormente sempre sobrescritos pelos novos valores.
![Page 24: Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.](https://reader035.fdocument.pub/reader035/viewer/2022062404/552fc14d497959413d8e2aeb/html5/thumbnails/24.jpg)
Algoritmo do Pintor
Exemplo de Ambiguidade na ordenação: (a) Sobreposição cíclica;
(b) solução
(a) (b)