A partir de um conjunto de objetos 3D, determinar quais as linhas ou superfícies dos objetos que são visíveis.

  1. Algoritmos no ESPAÇO IMAGEM

    for (pixel in image){
    	get the closest object using projection rays
    	draw with the right color
    }
    
  2. 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.

NV=|N||V|cosα

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

  1. Remover as faces com backface culling
  2. Compara as arestas contra cada volume da cena, em que podem ocorrer estas 4 situações:

À aresta — Algoritmo de Appel

  1. Backface culling
  2. 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.
  3. Apenas os segmentos com QI igual a zero são visíveis.

Atherton & Weiller

  1. Ordenar os polígonos pela coordenada Z, o polígono mais próximo do observador é selecionado como janela de corte.
  2. 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.
  3. Passa ao polígono seguinte e repete.

Algoritmos no Espaço Imagem

Algoritmo de Warnock

  1. Divide sucessivamente a imagem projetada em áreas retangulares.
  2. Se uma área é considerada coerente, desenha, caso contrário, divide em áreas menores e repete.

Algoritmo de Linha de Varrimento

TODO

Z-Buffer

  1. Preencher o Z-Buffer com 0 e o frame buffer com a cor de fundo.
  2. 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 z(x+1,y) pode ser calculado a partir de z(x,y).
Usando Ax+By+Cz+D=0, temos que:

z=DAxByC

Se em (x,y) a equação tem o valor z1 então e, (x+1,y) o valor de z pode ser calculado assim:

z=z1+Δxδzδx=z1+1δzδx=z1AC

Ray Casting

Este não é preciso explicar

Lista de Prioridades

  1. Ordenar os polígonos por ordem crescente de Z (utilizando o vértice mais afastado)
  2. Pintar por ordem.