Em cada uma das abordagens para determinacão de superficies visíveis, tem-se um grande número de operações custosas para o computador, como o cálculo de intersecções entre os objetos da cena ou de suas projeções e onde elas acontecem e a deterinação de qual objeto está mais próximo do observador.
Para minimizar o tempo gasto para geração destas imagens, algumas técnicas podem ser utilizadas para aumentar a eficiência destas operações, como a utilização do conceito de coerência, a transformação de perspectiva, caixas limitantes (Bounding Volumes), Back-face culling, subdivisão especial e hierarquia.
Como foi dito anteriormente, o conceito de coerência foi incorporado à determinacão de superficies visíveis em 1974, por Sutherland et al. Ele constatou que no ambiente, os objetos geralmente variam suas propriedades de forma suave. Isto permite que cálculos feitos para uma determinada região da imagem ou do ambiente sejam reaproveitados em áreas próximas. Vários tipos de coerência foram identificados:
Coerência de objetos | se um objeto está inteiramente separado de outro objeto (objetos disjuntos), estes não podem apresentar intersecções a nível de faces e arestas |
Coerência de face | as propriedades gráficas de uma face variam de forma suave |
Coerência de arestas | a visibilidade de uma aresta só é alterada quando a mesma cruza atrás de uma aresta visível ou penetra uma face visível |
Coerência geométrica | o segmento de intersecção entre duas faces planas pode ser determinado a partir de dois pontos de intersecção |
Coerência das linhas de varredura | entre duas linhas de varredura subsequentes, há uma pequena variação de suas propriedades geométricas e físicas |
Coerência na área de cobertura | um grupo de pixels adjacentes geralmente é coberto pela mesma face visível |
Coerência na profundidade | o valor de profundidade entre duas partes adjacentes de uma face apresenta pouca variação e diferentes superfícies que estão localizadas na mesma posição são separadas por valores diferentes de profundidade |
Coerência nos quadros | dois quadros consecutivos de uma animação diferem muito pouco um do outro |
Independentemente do tipo de projeção, paralela ou perspectiva, em que se escolha trabalhar, para saber se um ponto P1(x1,y1,z1) sobrepõe-se em relação a um ponto P2(x2,y2,z2), pode-se traçar um raio a partir do centro de projeção e verificar se estes pertencem ao mesmo. Caso isto aconteça, basta fazer uma comparação entre os seus valores de z para saber qual ponto está mais próximo do observador. Assim, em uma projeção paralela se x1 = x2 e y1 = y2, então os pontos estão no mesmo raio projetado. Entretanto, em uma projeção paralela, para que dois pontos pertençam ao mesmo raio, precisa-se fazer quarto divisões:
Estas divisões podem ser evitadas transformando as coordenadas do objeto 3D para o sistema de coordenadas da câmera, fazendo com que o teste para verificar se um objeto sobrepõe-se a outro seja igual ao teste feito para a projeção paralela.
A matriz M transforma o volume de visão normalizado da projeção em perspectiva em um paralelepípedo limitado por -1 <= x <= 1, -1 <= y <= 1, -1 <= z <= 1.
A caixa limitante tem como objetivo simplificar os testes de sobreposição de objetos na cena. Ele consistem em determinar um volume limitante justo ao objeto, sendo este volume geralmente o menor cubo que envolva o objeto, com planos paralelos aos eixos do sistema de referência, como mostra a figura 1:
Figure 1: Caixas limitantes não paralelas e paralelas aos eixos de referência, respectivamente.
A técnica de back-face culling tem como objetivo remover as faces do objeto que estão "de costas" para o observador. Isto é feito através da verificação do ângulo formado entre o vetor normal da superfície do objeto n = (nu,nv,nn) e um raio de visao V = (0,0,-1) no espaço normalizado. O ângulo é dado pela seguinte equação:
Se Bf > 0 ou nn < 0, a face está "de costas" para o observador, portanto não estando visível. Caso contrario, ela é potencialmente visível, como mostra a figura 2:
Figure 2: Exemplo de Back-face Culling
Esta técnica de pré-processamento tem como abordagem básica a separação coerente dos objetos da cena em grupos. Uma forma de aplicá-la e dividir o plano de projeção em uma grade regular e realizar a verificação de sobreposição apenas nos objetos que estiverem dentro de cada pedaço da grade, ou seja, primeiro determina-se em qual parte da grade o raio de projeção intercepta e depois testar apenas os objetos desta partição.
Figura 3: Particionamento espacial
Uma estrutura hierarquica aninhada, onde cada nó filho é considerado como parte do nó pai, pode ser utilizada para diminuir o número de comparações necessárias para determinar superficies visíveis em uma cena. Neste caso, se não houver intersecção entre dois objetos da hierarquia, seus nós filhos não precisarão ser testados.