computação gráfica: aula5: rendering e rasterização
DESCRIPTION
Computação Gráfica: Aula5: Rendering e Rasterização. http://www.fei.edu.br/~psergio [email protected]. Conteúdo:. Rendering Fases do Processo de Realismo Visual Realismo por Passadas Acabamentos não-fotográficos Rasterização Algoritmo de Bresenham para traçado de linhas - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/2.jpg)
Conteúdo:
Rendering Fases do Processo de Realismo Visual Realismo por Passadas Acabamentos não-fotográficos Rasterização
Algoritmo de Bresenham para traçado de linhas Rasterização de Polígonos Preenchimento de polígonos por scanline Remoção de Linhas e Superfícies Escondidas
Biografia: Computação Gráfica: Teoria e Prática; Eduardo Azeredo e Aura Conci; Editora Campus; (Volume Antigo!!!)
![Page 3: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/3.jpg)
O que é o Rendering
A computação gráfica trata da síntese de imagens através do computador. Sintetizar uma imagem não é mostrá-la no computador digitalmente a partir da captura de algo existente. Isso é tratado no Processamento de Imagens. Sintetizar uma imagem (uma cena ou um objeto) é criá-la em termos da definição dos dados dos objetos que a compõe. Isso se faz a partir da geometria da cena, das informações sobre os materiais de que são feitos os objetos (suas cores e suas texturas), das condições de iluminação ambiente; e da posição de observação da cena. Nesse processo de criação sintética, é denominado rendering a fase de Introdução nas cenas, do realismo fotográfico.
Basicamente, podemos descrevê-la por “realismo visual”. Podemos interpretar o processo de rendering como o de converter dados em uma imagem realística ou simplesmente sintetizar um objeto ou cena até ter-se deles uma aparência de algo real e não de formas inteiramente criadas no computador.
![Page 4: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/4.jpg)
Exemplos de Rendering
![Page 5: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/5.jpg)
Exemplos de Rendering
![Page 6: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/6.jpg)
Exemplos de Rendering
![Page 7: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/7.jpg)
Rendering
![Page 8: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/8.jpg)
Rendering
![Page 9: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/9.jpg)
Fases do Processo de Realismo Visual
• Construção do modelo• Transformações lineares• Eliminação de polígonos ou faces escondidas• Clipping• Rasterização• Culling• Coloração, Textura e Iluminação
![Page 10: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/10.jpg)
Realismo por passadas
• Vantagens do realismo por passadas:a) economia de memóriab) facilidade de introdução de modificaçõesc) maior utilização das imagens estáticasd) pode eliminar o anti-alizinge) integração f) reciclagemg) deph of field (simulação de foco)h) glows (incandescência)
![Page 11: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/11.jpg)
Realismo por passadas
• Tipos de passadas:
a) Coresb) Iluminaçãoc) Reflexõesd) Sombrase) Efeitos Especiais f) Profundidade
![Page 12: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/12.jpg)
RasterizaçãoProcesso de conversão da representação vetorial para a matricial.
![Page 13: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/13.jpg)
Rasterização de Retas
Algoritmo de Bresenham para Traçado de Linhasx = x1y = y1Dx = x2 – x1Dy = y2 – y1m = Dy/Dxe = m – 1/2for i = 1 to Dx do desenhaPonto(x,y) while e >= 0 do y = y + 1 e = e – 1 end while x = x + 1 e = e + mend for
![Page 14: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/14.jpg)
Rasterização de Polígonos
O processo de determinar quais pixels serão desenhados no preenchimento échamado conversão de varredura (scan conversion), e mostrado na Figura 7.6.B. A scan line 4, por exemplo, pode ser dividida nas regiões x < 1 (fora do polígono), 1 <= x <= 4 (dentro do polígono), 4<x<6 (fora do polígono), 6 <= x 8 (dentro do polígono) e x > 8 (fora do polígono).
![Page 15: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/15.jpg)
Algoritmo DDA para rasterização de Poligonos
Se abs(x2 – x1) >= abs(y2 – y1) então Tamanho = abs(x2 – x1)else Tamanho = abs(y2 – y1)end if{seleciona o maior dos valores entre Dx e Dy como unidade rasterização}Dx = (x2 – x1) / TamanhoDy = (y2 – y1) / Tamanhoi = 1Enquanto i <= Tamanho faça DesenhaPonto( x, y) {Arredonda x e y: valor arredondado de x e y} x = x + Dx y = y + Dy i = i + 1Fim Enquanto
![Page 16: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/16.jpg)
Remoção de Linhas e Superfícies Escondidas
![Page 17: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/17.jpg)
Remoção de Linhas e Superfícies Escondidas
![Page 18: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/18.jpg)
Remoção de Linhas e Superfícies Escondidas
Os diferentes algoritmos deverão realizar as seguintes tarefas:
•Ler as coordenadas tridimensionais do objeto e armazená-las em forma de matriz.
•Localizar no espaço 3D a posição do observador, através da qual definirá os parâmetros de visibilidade.
•Calcular o vetor normal 3D de cada face do objeto.
•Calcular o vetor da linha de visibilidade para cada face do objeto. Esse vetor é definido pela ligação de algum ponto da face ao observador.
![Page 19: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/19.jpg)
Remoção de Linhas e Superfícies Escondidas
•Realizar o teste de visibilidade. Isso é feito verificando a magnitude do ângulo formado pela normal à face em consideração e a linha de visibilidade. Esse é o ângulo identificado com a letra grega beta ß. Se o valor absoluto do ângulo ß estiver entre 90° e 180°, a superfície estará invisível. A superfície estará visível se esse ângulo estiver entre –90° e 90°. O teste de visibilidade é feito através do ângulo em um dos lados de um cubo. O teste de visibilidade é o ponto central do algoritmode culling.
![Page 20: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/20.jpg)
Remoção de Linhas e Superfícies Escondidas
•Definir os vértices (ou cantos) das faces do objeto e armazená-los de formamatricial (raster).
•Verificar os vértices (ou cantos) visíveis, com seus respectivos posicionamentos.
•Traçar as arestas das faces visíveis, que revelarão o objeto como enxergado de um determinado ponto de vista. Se desejado, é possível traçar também as linhas não-visíveis (tracejadas ou não) naquele ponto de vista.
![Page 21: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/21.jpg)
Hidden Surface Removal (HSR): Algoritmos de remoção de superfícies escondidas
•Algoritmo de Visibilidade por Prioridade ou Algoritmo do Pintor;
•Algoritmo de Eliminação de Faces Ocultas pelo Cálculo da Normal;
•Algoritmo Z-Buffer.
![Page 22: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/22.jpg)
Algoritmo de Visibilidade por Prioridade ou Algoritmo do Pintor
Usando uma linha simplificada de raciocínio como: se um objeto “A” bloqueia a visão de um objeto “B” e ambos os objetos encontram-se na mesma linha de visão do observador, então o objeto “B” está mais distante do observador que o objeto “A”, é possível criar um algoritmo que calcule a distância dos objetos ao observador, e que dê prioridade à visualização dos objetos mais próximos ao observador.
•Calcula-se a distância ao observador de todas as faces poligonais da cena (quechamaremos de D);
•Ordenam-se todos os polígonos pelo valor da sua distância ao observador,D;
•Resolvem-se as ambigüidades nos casos em que as distâncias ao observador(D) de dois polígonos forem iguais (verificando se ocupam as mesmas posiçõesrasterizadas ou não);
•Desenham-se primeiro os polígonos que tiverem mais distantes do observador(ou seja, os que tiverem maior valor de D).
![Page 23: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/23.jpg)
Algoritmo de Visibilidade por Prioridade ou Algoritmo do Pintor
![Page 24: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/24.jpg)
Eliminação de Faces Ocultas pelo Cálculo da Normal
• Ler as coordenadas do objeto no espaço tridimensional, considerando umponto de referência e armazená-las em forma de matriz;
• Localizar no espaço a posição do observador, através da qual serão definidos os parâmetros de visibilidade;
• Calcular o vetor normal de cada face do objeto;
• Calcular o vetor da linha de visibilidade para cada face do objeto;
• Realizar o teste de visibilidade calculando o produto escalar entre os dois vetores: Se n . l > 0, a face estará visível Se n . l < 0, a face estará invisível
• Definir os cantos das faces do objeto e armazená-los em forma matricial;
• Verificar os cantos visíveis, com seus respectivos posicionamentos;
• Traçar as arestas das faces visíveis, que revelarão o objeto como observado deum determinado ponto de vista. Se desejável, é possível traçar também as linhasnão-visíveis naquele ponto de vista.
![Page 25: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/25.jpg)
Algoritmo Z-Buffer
O algoritmo z-buffer, desenvolvido inicialmente por Catmull [Catmull, 74], é umdos algoritmos de determinação de visibilidade de superfícies mais simples de seimplementar, tanto em software quanto em hardware, e hoje é o mais popular dentreos algoritmos de HSR. Porém, apresenta alto custo de memória e processamento.Requer a alocação de até dois buffers, ou matrizes, em memória, com dimensõesidênticas à tela de apresentação, normalmente denominados buffers de Imagem e deProfundidade.
• Criar e inicializar com a cor de fundo um array bidimensional, que conterá ainformação de cada pixel da tela;
• Inicializar o array com o valor da máxima profundidade;
• Achar a coordenada z para cada ponto do polígono;
• Testar a profundidade z de cada ponto da superfície para determinar a maispróxima do observador;
• Atualizar o valor nos arrays se z estiver mais próximo do observador.
![Page 26: Computação Gráfica: Aula5: Rendering e Rasterização](https://reader031.vdocuments.pub/reader031/viewer/2022013004/568152f6550346895dc110a8/html5/thumbnails/26.jpg)
Algoritmo Z-Buffer
Para cada polígono P da cena Para cada pixel (x, y) de um polígono P computar z_depth na posição x, y se z_depth < z_buffer (x, y) então defina_pixel (x, y, color) troque o valor : z_buffer (x, y) = z_depth