técnicas para algoritmos de superfície visível eficientes (techniques for efficient...

25
Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible- surface algorithms) Fabio Utzig Rodrigo Senger

Upload: internet

Post on 17-Apr-2015

117 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Técnicas para algoritmos de superfície visível eficientes

(Techniques for efficient visible-surface algorithms)

Fabio Utzig

Rodrigo Senger

Page 2: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Introdução• Algorítmos de precisão de imagem e precisão de

objetos requer um grande número de operações com enorme custo computacional.

• Essas operações consistem em: – determinar a projeção de um, ou mais objetos– Se eles se interceptam– Onde eles se interceptam– Se é necessário computar o objeto que está mais

próximo do visualizador– Se ele é visível ou não

Page 3: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• Para minimizar o tempo que se leva para criar uma imagem, precisamos organizar algorítmos de Interface-Visíveis, e estão as operações custosas serão executadas com maior eficiência e na menor freqüencia possível.

• A seguir serão demonstradas algumas técnicas para isso.

Introdução (cont)

Page 4: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Coerência• É o grau em que partes de um ambiente ou

suas projeções exibem similaridades.

• Ambientes costumam ter objetos cujas caraterísticas variam de forma suave de uma parte à outra.

• Usamos coerência quando utilizamos cálculos feitos para uma parte de um ambiente, em outra parte próxima, sem mudanças ou com mudanças incrementais.

Page 5: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• Coerência de objetos: Se dois objetos estão completamente separados não há necessidades de comparações entre suas faces e vértices.

• Coerência de faces: Propriedades de uma superfície variam levemente em uma face.

• Coerência de vértices: Um vértice só muda de visibilidade quando cruza atrás de outro vértice visível ou penetra uma face visível.

• Coerência de vértice implicado: Se uma face planar penetra outra, sua linha de intersecção pode ser determinada por dois pontos de intersecção.

Coerência (cont)

Page 6: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• Coerência de scanline: Objetos mudam pouco de um scanline para o próximo.

• Coerência de área: Um grupo de pixels adjacentes muitas vezes é coberto por uma mesma face.

• Coerência de profundidade: Partes adjacentes de uma superfícies costumam ser próximas em profundade enquanto partes distantes tem profundidades separadas. Tendo a profundidade dos outros pontos da superfície pode ser determinado através de uma diferença.

• Coerência de quadro: Imagens de um mesmo ambiente em dois quadros sucessivos costumam ser muito parecidas.

Coerência (cont)

Page 7: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

A transformação perspectiva

• A determinação de superfície visível deve ser feita em 3D, visto que, em 2D informações de profundidade são perdidas.

• Dados dois pontos P1 e P2, eles estão na mesma linha de projeção? Se sim, calcular qual ponto está mais próximo.

• Para descobrirmos se dois pontos estão na mesma linha de projeção, após aplicarmos a normalização:

a) Se é projeção paralela: x1 = x2 e y1 = y2

b) Se e projeção perspectiva: x1 / z1 = x2 / z2 e

y1 / z1 = y2 / z2

Page 8: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• Para evitar divisões podemos utilizar uma transformação perspectiva no objeto, assim, este passará a ter projeção paralela igual à projeção perspectiva do mesmo objeto sem a transformação.

• Esta transformação deforma o objeto e move o centro de projeção para o infinito no eixo positivo z.

• Como esta projeção preserva a profundidade relativa, linhas retas e planos aplicamos divisão somente uma vez para cada ponto, ao invés de utilizar a cada comparação entre dois pontos.

A transformação perspectiva (cont)

Page 9: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

A transformação perspectiva (cont)

Page 10: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

A transformação perspectiva (cont)

Page 11: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• Extensões podem ser utilizadas para evitar comparações desnecessárias entre objetos e suas projeções.

• Caso as extensões de dois objetos não se sobreponham, suas projeções não se sobrepõem.

• Caso as extensões se sobreponham, pode-se ter dois casos:

a) As projeções se sobrepõemb) As projeções não se sobrepõem• Extensões podem ser utilizados em somente um

eixo, para verificar se existe sobreposição neste eixo ou, podem envolver objetos, quando então são conhecidos como Volumes limitantes.

Extensões e Volumes limitantes

Page 12: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• A comparação com os limites mínimo e máximo em uma ou mais dimensões chama-se minmax.

• A parte mais complicada de comparações é encontrar as extensões. Para um polígonos podemos pegar lista de coordenadas de pontos e gravar os menores e maiores valores.

• Extensões são também utilizadas para determinar se uma linha de projeção intercepta um determinado objeto.

• Volumes limitantes podem ser de qualquer forma geométrica primitiva, usa-se uma fórmula para determinar o melhor volume limitante.

Extensões e Volumes limitantes (cont)

Page 13: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• Custo total do teste de interseção de um objeto:T = bB + oOonde,

b: número de vezes que o volume limitante é testado por interseções

B: custo de calcular um teste de interseção em um volume limitante

o: número de vezes que o objeto é testado por interseçõesO: custo de calcular um teste de interseção no objeto

Extensões e Volumes limitantes (cont)

Page 14: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Extensões e Volumes limitantes (cont)

Page 15: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Extensões e Volumes limitantes (cont)

Page 16: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• Se um objeto é aproximado por um poliedro cujas faces cercam completamente o objeto e, todos polígonos tem suas normais apontando para fora do poliedro.

• Se nenhum interior do poliedro está exposto então os polígonos cujas normais apontam na direção oposta ao observador podem ser removidos.

• Na prática são os polígonos cujo produto escalar da normal com o centro de projeção é um valor positivo.

• Uma linha de projeção atravessa tanto um face frontal quanto um face traseira assim, com a utilização de remoção de face traseira temos que em média diminui-se metado dos polígonos a calcular.

Remoção de face traseira

Page 17: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

• Considerando que o algoritmo é linear no número de faces, é possível melhorar a performance através de um preprocessamento utilizando tabelas ou grafos, de acordo com o algoritmo escolhido.

Remoção de face traseira (cont)

Page 18: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Remoção de face traseira (cont)

Page 19: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Particionamento Espacial

• Permite quebrar um grande problema em problemas menores

• Por exemplo, pode-se dividir o plano de projeção em um gride regular 2D e determinar em quais espaços do grid cada projeção do objeto reside. Assim, a comparação de sobreposições precisam ser feitas apenas com projeções que residem na mesma caixa do grid.

Page 20: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Particionamento Espacial (cont)

• Particionamento Adaptado pode ser mais eficiente para objetos distribuídos diferentemente no espaço.

• No particionamento adaptado, o tamanho de cada partição varia.

Page 21: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Hierarquia

• Pode ser usado para restringir o número de comparações entre objetos

• Um objeto em um nível hierárquico pode servir de alcance para seus filhos se eles estiverem inteiramente contidos no objeto pai.

Page 22: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Hierarquia (cont)

• Se dois objetos na hierarquia não se interceptarem, o objeto do nível mais baixo não precisa sofrer testes de inteseção com esses outros dois.

• Da mesma forma, um projetor só deve ser testado contra os seus filhos se estiver baseado em penetrar outro na hierarquia.

• Este uso da hierarquia é uma instância importate da coerência de objetos.

Page 23: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Hierarquia (cont)

Page 24: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Perguntas?

Page 25: Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger

Bibliografia

• Computer Graphics: Principles and Practice. 2nd ed. in C. James D. Foley, [et al.]. Addison-Wesley