A partir de um conjunto de objetos 3D, determinar quais as linhas ou superfícies dos objetos que são visíveis.
-
Algoritmos no ESPAÇO IMAGEM
for (pixel in image){ get the closest object using projection rays draw with the right color } -
Algoritmos no ESPAÇO OBJETO
for (object in world){
determine the parts of the object that are visible
draw the visible parts
}
Backface culling
Apenas desenha as faces que estão "viradas" para o observador.
Resultado > 0: Front Face
Resultado < 0: Back Face
Em média, esta técnica reduz o número de faces para metade.
Algoritmos no Espaço Objeto
Ao volume — Algoritmo de Roberts
Requisitos: cada aresta deve pertencer a uma face de um poliedro convexo
- Remover as faces com backface culling
- Compara as arestas contra cada volume da cena, em que podem ocorrer estas 4 situações:
À aresta — Algoritmo de Appel
- Backface culling
- Calcular a Quantitative Invisibility (número de polígonos entre o observador e o ponto; quando uma aresta passa por trás de um polígono, a sua QI é incrementade em 1, e quando volta a ser visível é decrementada em 1). Quando se chega ao vértice final da aresta, o QI desse vértice é o valor inicial de QI nas arestas que se iniciam nesse vértice.
- Apenas os segmentos com QI igual a zero são visíveis.
Atherton & Weiller
- Ordenar os polígonos pela coordenada Z, o polígono mais próximo do observador é selecionado como janela de corte.
- O polígono é usado para efetuar clipping dos restantes, resultando 2 lista, uma com a parte visível e outra ou a parte invisível.
- Passa ao polígono seguinte e repete.
Algoritmos no Espaço Imagem
Algoritmo de Warnock
- Divide sucessivamente a imagem projetada em áreas retangulares.
- Se uma área é considerada coerente, desenha, caso contrário, divide em áreas menores e repete.
Algoritmo de Linha de Varrimento
TODO
Z-Buffer
- Preencher o Z-Buffer com 0 e o frame buffer com a cor de fundo.
- Para cada polígono, e para cada pixel do mesmo, se o Z estiver mais próximo do que o valor atual do Z-Buffer, substitui o Z-Buffer e o frame buffer.
Otimização:
Se assumirmos que o polígono é plano, então
Usando
Se em
Ray Casting
Este não é preciso explicar
Lista de Prioridades
- Ordenar os polígonos por ordem crescente de Z (utilizando o vértice mais afastado)
- Pintar por ordem.