Algoritmos de Rasterização e Recorte

Documentos relacionados
Algoritmos de Varrimento para Desenho de Primitivas 2D

Rasterização de primitivas 2D e Pipeline 2D. Soraia Raupp Musse

Pipeline de Visualização 2D

Primitivos gráficos - algoritmos

Primitivos gráficos - algoritmos

Imagem Vetorial x Imagem Matricial. Conversão Matricial de Primitivas Gráficas. Sistema de Coordenadas do Dispositivo. Problema

Computação Gráfica. Rasterização. Aula 4. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro

Prof. Dr. Leandro Alves Neves. Conceitos Fundamentais. Algoritmos de Conversão Matricial.

RECORTE (CLIPPING) por janelas rectangulares

Desenho de Segmentos de Recta

O Problema de Visibilidade. Computação Gráfica Recorte. Onde Acontece? O que é Recorte? Renato Ferreira

Determinação de Superfícies Visíveis

Introdução ao Processamento e Síntese de imagens Recorte 2D

1 Para expressar um ponto intermediário em função dos pontos extremos, precisamos

Fundamentos da Computação Gráfica Lista de Exercícios Marcelo Gattass TeCGraf/Departamento de Informática/PUC-Rio 19jun2003

Introdução à Computação Gráfica Recorte. Claudio Esperança Paulo Roma Cavalcanti

Transformações de Visualização 2D: Clipping. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

Sumário. Traçado de Retas. Antialiasing e OpenGL. 1 Introdução. 2 Conversão Segmento de Reta. 3 Algoritmo DDA. 4 Algoritmo de Bresenham

Objetos definidos no seu próprio sistema de coordenadas

Visualização 2D: - Transformação window to viewport - Clipping

Conversão por Varrimento

Computação Gráfica e Processamento de Imagens. recorte ( clipping ) de : o segmentos de retas o polígonos o textos. Prof.

Primitivas Gráficas. Prof. Márcio Bueno Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof.

Rasterização de primitivas 2D

Algoritmos de Recorte em 2D

Rasterização de linhas e polígonos

ALGORITMOS PARA DESENHAR RETAS E CÍRCULOS

Pipeline de Visualização 3D

Pipeline Gráfico Cluter & Durand, MIT

Prof. Julio Arakaki. Ciência da Computação

Visibilidade. Apontamentos CG + Edward Angel, Sec Instituto Superior Técnico Computação Gráfica 2009/2010

Desenho de Segmentos de Recta

Preenchimento de Polígonos

Neste capítulo, definimos o problema que estudamos e descrevemos os principais algoritmos

ALGORITMOS RASTER PARA DESENHO DE. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Arranjos. Claudio Esperança Paulo Roma LCG/UFRJ. All rights reserved.

Computação Gráfica. Prof. MSc André Yoshimi Kusumoto

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark. 1º Exame 29 Junho de 2010

de Recta e Polígonos

António Costa. Paulo Roma Cavalcanti

Problema. Conversão Matricial. Octantes do Sistema de Coordenadas Euclidiano. Sistema de Coordenadas do Dispositivo. Maria Cristina F.

Computação Gráfica Rasterização de Curvas

Visualização e Projeções

Curvas e Superfícies. 35M34 Sala 3E1 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 227 DIM102

1º Teste Computação Gráfica

Objetos Gráficos Planares

Computação Gráfica 04

Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG

Introdução à Computação Gráfica Ray Tracing. Claudio Esperança Paulo Roma Cavalcanti

Esta opção é utilizada para desenhar círculos, arcos, elipses, e outros grupos curvilíneos.

Conversão Matricial. Prof. Fernando V. Paulovich 20 de maio de SCC Computação Gráca

Computação Gráfica - 12

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Computação Gráfica Primeira lista de exercícios

Computação Gráfica - 09

Rendering de Polígonos. Determinação de Superfícies Visíveis. Back Face Culling. Back Face Culling. Back Face Culling. Back Face Culling.

Exame Tipo Computação Gráfica

Computação Gráfica - 09

Exame de 1ª Época Computação Gráfica

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

Processamento digital de imagens

1º Exame Computação Gráfica

Características Principais. Introdução à Computação Gráfica Ray Tracing. Ray Casting. Contexto Histórico. Claudio Esperança Paulo Roma Cavalcanti

MATEMÁTICA. O aluno achou interessante e continuou a escrever, até a décima linha. Somando os números dessa linha, ele encontrou:

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Computação Gráfica Primeira lista de exercícios

Interval Trees, Priority Search Trees, Segment Trees. João Comba. Pesquisas intervalares sobre segmentos de reta

Exame de Época Especial Computação Gráfica

Objetos Gráficos Planares

SOLUÇÃO ANALÍTICA E NUMÉRICA DA EQUAÇÃO DE LAPLACE

Processamento Digital de Imagens

Transcrição:

Algoritmos de Rasterização e Recorte 35T56 Sala 3E3 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 227 1

Desenhando linhas Sequência de pixels deve estar o mais próximo possível da linha original Quais propriedades uma linha deve ter? 1 pixel aceso por linha ou coluna (dependendo de sua inclinação) Devem ter intensidade constante, independente de sua orientação e tamanho Rapidez Linhas largas, estilos, pontos finais 2

Desenhando linhas Algoritmo incremental básico int x0,y0,x1,y1,x,valor; float dx,dy,y,m; dy=y1 y0; dx=x1 x0; m=dy/dx; y=y0; for(x=x0;x<=x1;x++) { WritePixel(x, Round(y), valor); y+=m; } 3

Algoritmo Incremental Básico Traça linhas da esquerda para a direita Se m >1, os papéis de x e y devem ser trocados Utiliza floats e a função Round() 4

Algoritmo do Ponto Médio Utiliza aritmética inteira Cálculo de (x i+1,y i+1 ) é feito de forma incremental Assume inclinação da linha entre 0 e 1 Produz mesma saída que o algoritmo de Bresenham Em que lado da linha o ponto médio (M) está localizado? 5

Algoritmo do Ponto Médio Representando a linha pela função implícita F x, y ax by c 0 A equação da linha pode ser escrita como y dy dx x B,logo,F x, y dy x dx y Bdx 0 A equação acima resulta em 0 para pontos na linha, é positiva para pontos abaixo da linha e negativa para pontos acima Para se usar o critério do ponto médio devese avaliar F M F x p 1,y p 1 2 d 6

Algoritmo do Ponto Médio int x0,y0,x1,y1,valor,dx,dy, incrl,incrne,d,x,y; dx=x1 x0;dy=y1 y0;d=2*dy dx; incrl=2*dy;incrne=2*(dy dx); x=x0;y=y0; WritePixel(x,y,valor); while(x<x1) { if(d<=0) { d+=incrl; x++; } } else { d+=incrne; x++; y++; } } WritePixel(x,y,valor); 7

Algoritmo do Ponto Médio Ordem dos pontos inicial e final. Escolha do ponto quando linha passa exatamente no ponto médio deve ser consistente entre as duas direções Tratando janelas de recorte (clipping). Deve se usar o valor real do ponto no icício da janela de recorte para inicialização do algoritmo Variando intensidades dos pontos em função da inclinação da linha 8

Desenhando Círculos 8 Simetria coordenadas de 45 o de arco do círculo podem ser replicadas gerando o círculo completo Algoritmo incremental básico é lento e não produz bons resultados 9

Algoritmo do Ponto Médio Considere apenas o segundo octante do círculo, de x=0 até x=y=r/sqrt(2) F(x,y)=x 2 + y 2 R 2 é positiva for a do círculo e negativa dentro d old F x p 1,y p 1 2 x p 1 2 y p 1 2 R 2 10

Algoritmo do Ponto Médio Se L for escolhido, o próximo ponto médio vai ser e o incremento é Caso SE seja escolhido, o próximo ponto médio é e o incremento é d new F x p 2, y p 1 2 x p 2 2 y p 1 2 2 R 2 D E 2x p 3 d new F x p 2, y p 3 2 x p 2 2 y p 3 2 2 R 2 D SE 2x p 2 y p 5 Note que as diferenças agora não são constantes. Solução: Utilizar diferenças de segunda ordem 11

Algoritmo do Ponto Médio int raio,valor,x,y,deltal,deltase; x=0; y=raio; d=1 raio; CirclePoints(x,y,valor); while(y>x) { if(d<0) { d+=2*x+3; x++; } else { d+=2*(x y)+5; x++; 12 } } y ; CirclePoints(x,y,valor);

Algoritmo do Ponto Médio int raio,valor,x,y,deltal,deltase; x=0; y=raio; d=1 raio; deltal=3; deltase=2*raio+5; CirclePoints(x,y,valor); while(y>x) { if(d>0) { d+=deltal; deltal+=2; deltase+=2; x++; } 13 else { d+=deltase; deltal+=2; deltase+=4; x++; y ; } CirclePoints(x,y,valor); }

Preenchendo Retângulos Utiliza se diferentes tipos de coerência para facilitar esta tarefa, por exemplo, espacial, de span, de linha (scan line) e de aresta (edge) Escrita de pixels em bloco acelera o processo Problemas com bordas compartilhadas por mais de um retângulo. Solução desenhar somente as arestas esquerda e inferior Quais os problemas desta solução? 14

Preenchendo Polígonos Método funciona computando spans entre arestas à esquerda e à direita do polígono Métodos simples que não utiliza coerência de arestas para acelerar sua execução 15

Preenchendo Polígonos 16

Preenchendo Polígonos Linhas horizontais uso de paridade para controle dos spans Slivers área poligonal fina cujo interior não contém um span para cada linha de scan 17

Preenchendo Polígonos Coerência de arestas muitas arestas que intersectam a linha de scan i também intersectam a linha de scan i+1 Uso de uma tabela de arestas ativas (AET) e de uma tabela de arestas (ET) global As arestas da AET são ordenadas pelos seus valores de interseção x. Pares destes valores (arredondados) são extremos de um span Uso de um algoritmo incremental para atualização das interseções a cada nova linha de scan 18

Preenchendo Polígonos Para tornar as operações sobre a AET mais eficientes, se utiliza a ET que armazena as arestas ordenadas pelas suas coordenadas y min inclinação da linha (m) também é armazenada nas tabelas de arestas Para cada linha de scan, os spans são calculados e preenchidos. Depois arestas cujo valor y max = y são removidas e novas arestas cujo valor y min = y são adicionadas 19

Preenchendo com Padrões Qual a relação da primitiva a ser preenchida com o padrão? Fixar um local ou vértice da primitiva para o início da textura representando o padrão Considerar a tela como se fosse completamente preenchida pelo padrão, mas somente visível dentro da primitiva Diferenças entre as duas técnicas Uso de escritas de pixels em bloco 20

Primitivas Largas Copiando pixels Canetas móveis (footprint) Preenchendo áreas entre bordas Aproximação por polilinhas largas 21

Recorte Recorte (clipping) é o processo de determinação da(s) porção(ões) de uma primitiva internas à uma área de recorte (clip region) Scissoring (tesourando?) 22

Recorte de Linhas em Áreas Retangulares Cálculo direto se os pontos finais estão dentro do retângulo Linhas trivialmente aceitas ou rejeitadas Resolvendo equações simultâneas paramétricas x x 0 t x 1 x 0 y y 0 t y 1 y 0 23

Algoritmo de Recorte de Linhas de Cohen Sutherland Pontos finais são checados Divisão da área total em regiões Se o and lógico dos códigos dos pontos finais não é zero, a linha pode ser rejeitada trivialmente 24

Algoritmo de Recorte de Linhas de Cohen Sutherland Linhas que não podem ser trivialmente aceitas ou rejeitadas são subdivididas em dois segmentos e ao menos um pode ser descartado Algoritmo é executado até 4 vezes por linha 25

Algoritmo de Recorte de Linhas Paramétrico Calcula o valor t na representação paramétrica da linha para o ponto que intersecta a linha de recorte N i P t P Ei 0 N i P 0 P 1 P 0 t P Ei 0 N i P 0 P Ei N i P 1 P 0 t 0 t N i P 0 P Ei N i D onded P 1 P 0 26

Algoritmo de Recorte de Linhas Paramétrico 27

Algoritmo de Recorte de Linhas Paramétrico Para cada aresta do retângulo de recorte se calcula o valor t de interseção, descartando os valores t<0 e t>1 As interseções são marcadas como potencialmente entrando (PE) ou potencialmente saindo (PS) N i D 0 PE angulo 90 o N i D 0 PS angulo 90 o 28

Algoritmo de Recorte de Linhas Paramétrico { dx=x1 x0; dy=y1 y0; visivel=0; if(dx==0 && dy==0 && ClipPoint (x0,y0)) visivel=1; else { te=0;tl=1; if Clipt(dx,xmin x0,te,ts) if Clipt( dx,x0 xmax,te,ts) if Clipt(dy,ymin y0,te,ts) } if Clipt( dy,y0 ymax,te,ts) { visivel=1; 29 } } if(ts<1) { x1=x0+ts*dx; y1=y0+ts*dy; } if(te>0) { x0=x0+te*dx; y0=y0+te*dy; }

Alg. de Rec. de Políg. de Sutherland Hodgman Utiliza a estratégia dividir e conquistar Mais geral, pode ser utilizado para recorte de um polígono convexo ou côncavo contra um polígono de recorte convexo O recorte é efetuado aresta por aresta do polígono de recorte 30

Alg. de Rec. de Políg. de Sutherland Hodgman Vértices são adicionados ao polígono recortado de acordo com as regras abaixo Pode ser implementado como um pipeline de recortes. Vantajoso em uma implementação em hardware 31

Alg. de Rec. de Políg. de Sutherland Hodgman Arestas falsas podem ser incluídas pelo algoritmo Pós processamento é utilizado para remover estas arestas falsas 32

Antialiasing Aumento de resolução Solução cara que alivia mas não soluciona o problema Amostragem por área sem peso Considerar que linhas têm uma largura associada e utilizar as áreas de interseção no cálculo da intensidade a ser desenhada Intensidade do pixel diminui com a distância para a linha Pixels não interceptados não são afetados 33 Áreas iguais contribuem intensidades iguais

Amostragem por área Amostragem por área com peso Similar a anterior, porém utiliza filtros onde aŕeas mais próximas ao pixel contribuem mais que áreas mais afastadas 34

Linhas Antialiased de Gupta Sproull Pré calcula o subvolume de um filtro normalizado à distâncias diferentes do centro do pixel e armazena em uma tabela (LUT) Algoritmo do ponto médio pode ser modificado para gerar linhas antialiased LUT funciona para linhas de uma largura somente 35

Antialiasing (linhas) Calculando interseções de linhas de larguras diferentes Como lidar com os pontos finais das linhas? Problemas com interseções de linhas Como tratar cores em linhas cruzadas? Acumulação das primitivas antes do desenho 36

Antialiasing (Círculos) Interseção com filtro cônico de raio 1 também depende do raio do círculo Tabelas individuais para raios menores e uma para raios maiores Para círculos de raio não inteiro, interpola se os valores das tabelas 37

Antialiasing (Pontos Fins de Linhas, Retângulos, Polígonos) No caso de pequenos retângulos, a interseção é calculada pela subtração de duas interseções com retângulos maiores Fins de linhas arredondados podem ser calculados como meios círculos Polígonos podem ser tratados como se fossem retângulos, i.e., com ângulos de 90 o (aproximação falha em alguns casos) Tabelas extras para 45 o e 135 o propiciam um melhor resultado 38