1 / 26

Computação Gráfica: Aula5: Rendering e Rasterização

Computação Gráfica: Aula5: Rendering e Rasterização. http://www.fei.edu.br/~psergio psergio@fei.edu.br. 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

nodin
Download Presentation

Computação Gráfica: Aula5: Rendering e Rasterização

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computação Gráfica: Aula5: Rendering e Rasterização http://www.fei.edu.br/~psergio psergio@fei.edu.br

  2. 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!!!)

  3. 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.

  4. Exemplos de Rendering

  5. Exemplos de Rendering

  6. Exemplos de Rendering

  7. Rendering

  8. Rendering

  9. 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

  10. Realismo por passadas • Vantagens do realismoporpassadas: • economia de memória • facilidade de introdução de modificações • maiorutilização das imagensestáticas • podeeliminar o anti-alizing • integração • reciclagem • dephof field (simulação de foco) • glows (incandescência)

  11. Realismo por passadas • Tipos de passadas: • Cores • Iluminação • Reflexões • Sombras • EfeitosEspeciais • Profundidade

  12. Rasterização Processo de conversão da representação vetorial para a matricial.

  13. Rasterização de RetasAlgoritmo de Bresenham para Traçado de Linhas x = x1 y = y1 Dx = x2 – x1 Dy = y2 – y1 m = Dy/Dx e = m – 1/2 for 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 + m end for

  14. 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).

  15. 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) / Tamanho Dy = (y2 – y1) / Tamanho i = 1 Enquanto 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 + 1 Fim Enquanto

  16. Remoção de Linhas e Superfícies Escondidas

  17. Remoção de Linhas e Superfícies Escondidas

  18. 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.

  19. 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 algoritmo • de culling.

  20. Remoção de Linhas e Superfícies Escondidas • Definir os vértices (ou cantos) das faces do objeto e armazená-los de forma • matricial (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.

  21. 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.

  22. 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 (que • chamaremos 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ções • rasterizadas ou não); • Desenham-se primeiro os polígonos que tiverem mais distantes do observador • (ou seja, os que tiverem maior valor de D).

  23. Algoritmo de Visibilidade por Prioridade ou Algoritmo do Pintor

  24. Eliminação de Faces Ocultas pelo Cálculo da Normal • Ler as coordenadas do objeto no espaço tridimensional, considerando um • ponto 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 de • um determinado ponto de vista. Se desejável, é possível traçar também as linhas • não-visíveis naquele ponto de vista.

  25. Algoritmo Z-Buffer • O algoritmo z-buffer, desenvolvido inicialmente por Catmull [Catmull, 74], é um • dos algoritmos de determinação de visibilidade de superfícies mais simples de se • implementar, tanto em software quanto em hardware, e hoje é o mais popular dentre • os 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ões • idênticas à tela de apresentação, normalmente denominados buffers de Imagem e de • Profundidade. • Criar e inicializar com a cor de fundo um array bidimensional, que conterá a • informaçã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 mais • próxima do observador; • Atualizar o valor nos arrays se z estiver mais próximo do observador.

  26. 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

More Related