A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

INF 1366 – Computação Gráfica Interativa Rasterização

Apresentações semelhantes


Apresentação em tema: "INF 1366 – Computação Gráfica Interativa Rasterização"— Transcrição da apresentação:

1 INF 1366 – Computação Gráfica Interativa Rasterização
Alberto B. Raposo e Marcelo Gattass Alberto Raposo – PUC-Rio

2 Pipeline Gráfico Modeling Transformations Illumination (Shading)
Cluter & Durand, MIT Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display Alberto Raposo – PUC-Rio

3 Transformações de Modelagem
Modeling Transformations Modelos 3D definidos em seu próprio sistema de coordenadas (object space) Transformações de modelagem orientam os modelos de acordo com um sistema de coordenadas comum (world space) Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display Object space World space Alberto Raposo – PUC-Rio Cluter & Durand, MIT

4 Transformação de Visualização
Cluter & Durand, MIT Modeling Transformations Mapeia o world space para o eye space Posição do observador é colocada na origem e a direção de foco é orientada ao longo de um dos eixos (normalmente z) Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Eye space Scan Conversion (Rasterization) Visibility / Display Alberto Raposo – PUC-Rio World space

5 Clipping (Recorte)   
Cluter & Durand, MIT Modeling Transformations Transforma para Normalized Device Coordinates (NDC) Partes do objeto fora do volume de visualização (view frustum) são removidas Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Eye space NDC Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display Alberto Raposo – PUC-Rio

6 Projeções Cluter & Durand, MIT Modeling Transformations Objetos são projetados para o espaço 2D da imagem (screen space) Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping NDC Screen Space Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display Alberto Raposo – PUC-Rio

7 Rasterização  Rasteriza objetos em pixels
Cluter & Durand, MIT Modeling Transformations Rasteriza objetos em pixels Interpola valores (cores, profundidade, etc.) Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display Alberto Raposo – PUC-Rio

8 Visibilidade / Display
Cluter & Durand, MIT Modeling Transformations Cada pixel lembra o objeto mais próximo (depth buffer) Quase todas as etapas do pipeline gráfico envolve mudança de sistema de coordenadas. Transformações são fundamentais em computação gráfica! Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display Alberto Raposo – PUC-Rio

9 Rasterizar Converter coordenadas da tela em cores de pixels
L. McMillan MIT notes (Fall ’98) Alberto Raposo – PUC-Rio

10 Problema Primitivas geométricas são contínuas; tela é discreta (pixels) Cluter & Durand, MIT Alberto Raposo – PUC-Rio

11 2D Scan Conversion (Rasterização)
Solução: computar aproximações discretas para desenho das primitivas Rasterização:algoritmos para geração eficiente dessa aproximação Cluter & Durand, MIT Alberto Raposo – PUC-Rio

12 Algoritmos de rasterização de linhas
Suponha Dx > Dy incrementa x e vê o que acontece com y Dx = 5, Dy =3 incrementa y e vê o que acontece com x

13 Algoritmo simples de linha (no primeiro octante)
yi = m xi + b onde: m = Dy/Dx b = y1 - m x1 void Line(int x1, int y1, int x2, int y2, long int color) { float m = (y2-y1)/(x2-x1); float b = y1 - m*x1; float y; SetPixel(x1,y1, color); while( x1 < x2 ) x1++; y = m*x1 + b; SetPixel(x1,ROUND(y), color); }

14 Algoritmo de linha incremental
Se xi+1 = xi + 1 então yi+1 = yi + Dy/Dx void LineDDA(int x1, int y1, int x2, int y2, int color) { float y; float m = (y2-y1)/(x2-x1); SetPixel(x1,y1, c); y = y1; while( x1 < x2 ) x1++; y += m; SetPixel(x1,ROUND(y), c); }

15 Algoritmo de linha baseado no erro
erro de manter y 0.5 - 0.5 x

16 Algoritmo de linha baseado no erro
void BresLine0(int x1, int y1, int x2, int y2, int c) { int Dx = x2 – x1; int Dy = y2 - y1; float e= -0.5; SetPixel(x1, y1, c); while( x1 < x2 ) x1++; e+=Dy/Dx; if (e>=0) { y1++ ; e -= 1; } erro de manter y 0.5 - 0.5 x e = erro 0.5 - 0.5 x

17 Algoritmo de Bresenham
ei = 2*Dx*e void BresLine0(int x1, int y1, int x2, int y2, int c) { int Dx = x2 - x1; int Dy = y2 - y1; float e= -0.5; SetPixel(x1, y1, c); while( x1 < x2 ) x1++; e+=Dy/Dx; if (e>=0) { y1++ ; e - = 1; } void BresLine1(int x1, int y1, int x2, int y2, int c) { int Dx = x2 - x1; int Dy = y2 - y1; int ei = -Dx; SetPixel(x1, y1, c); while( x1 < x2 ) x1++; ei += 2*Dy; if (ei>=0) { y1++ ; ei - = 2*Dx; } válidos somente quando Dx>Dy, x2 > x1 e y2 > y1

18 Equação implícita da reta
y y2 y1 x x1 x2

19 Equação implícita da reta
NE xp xp+1 xp+2 yp M yp+1/2

20 Algoritmo do ponto médio - variável de decisão -
NE xp xp+1 xp+2 yp M yp+1/2 yp+3/2 MNE ME ME MNE

21 Algoritimo do ponto médio - redução para inteiros -

22 Algoritimo do ponto médio - código C -
void MidpointLine(int x0, int y0, int x1, int y1, int color) { int dx = x1-x0; int dy = y1-y0; int d=2*dy-dx; /* Valor inicial da var. decisao */ int incrE = 2*dy; /* incremento p/ mover E */ int incrNE = 2*(dy-dx); /* incremento p/ mover NE */ int x=x0; int y=y0; Pixel(x,y,color); /* Primeiro pixel */ while (x<xl) { if (d<=0) { /* Escolha E */ d+=incrE; x++; } else { /* Escolha NE */ d+=incrNE; y++; } Pixel(x,y,color); } /* while */ } /* MidpointLine */

23 Rasterização de Cônicas
y F(x,y) = 0 x 450 y simetrias do círculo: cada ponto calculado define 8 pixels x

24 Rasterização de Cônicas
y y=raio; for (x=0; x< y; x++) { if F(M)<0 escolha E else escolha SE Pixel (E ou SE) pinte os simétricos } x E ME M F(x,y) = 0 SE MSE

25 Prenchimento de polígonos
Alberto Raposo – PUC-Rio

26 Rasterizando Polígonos
Em CG interativa, polígonos “rule the world” Triângulo é a “unidade mínima” de um polígono Qualquer polígono pode ser subdividido em triângulos Triângulos garantem ser: Planares Convexos D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

27 Triangularização Polígonos convexos são facilmente triangularizados (Delaunay) Pológonos côncavos apresentam desafios D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

28 Preenchimento “força bruta” para triângulos
Para cada pixel Compute as equações das linhas no centro do pixel “recorte” pelo triângulo Problema: se o triângulo é pequeno, muito esforço computacional é desperdiçado Alberto Raposo – PUC-Rio Cluter & Durand, MIT

29 Preenchimento “força bruta” para triângulos
Melhoria: Compute apenas pixels dentro da bounding box do triângulo Xmin, Xmax, Ymin, Ymax dos vértices do triângulo Cluter & Durand, MIT Alberto Raposo – PUC-Rio

30 Ainda há problemas… Cluter & Durand, MIT Computa-se a equação das linhas para muitos pixels desnecessários Alberto Raposo – PUC-Rio

31 Use rasterização de linhas
Computar os pixels das bordas [P. Shirley, pag 55] Alberto Raposo – PUC-Rio Cluter & Durand, MIT

32 Rasterização Scan-Line
Computar os pixels das bordas Preencher o meio Shirley page 55 Alberto Raposo – PUC-Rio

33 Scan-line Rasterization
Requer um “setup”inicial para ser preparado [P. Shirley, pag 55] Alberto Raposo – PUC-Rio Cluter & Durand, MIT

34 Ver Aula sobre Clipping
Recorte (clipping) Como retirar partes forada janela? Ver Aula sobre Clipping Alberto Raposo – PUC-Rio Cluter & Durand, MIT

35 Rasterização Geral de Polígonos
Considere o polígono abaixo: Como saber se um pixel da scanline está dentro ou for a do polígono? D B C A E F D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

36 Rasterização de Polígonos
Pontos interior-exterior D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

37 Rasterização de Polígonos
Pontos interior-exterior D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

38 Interior e exterior Alberto Raposo – PUC-Rio

39 Rasterização Geral de Polígonos
Cuidados E se está exatamente na extremidade do vértice? Vértices compartilhados? Aresta horizontal? A-B e I-H B C D E F G I H J A D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

40 Preenchimento de polígonos
y dados: {x0, x1, x2, x3, x4} {y0, y1, y2, y3, y4} ymax ymin 1 4 i0 i1 i3 i4 ys acha ymax e ymin Para cada ysÎ [ymax , ymin] Para cada aresta calcula as interseções ordena interseções desenha linhas horizontais 2 3 xi1 xi0 xi4 xi3 x vx= {xi1 , xi0 , xi4 , xi3}

41 Preenchimento de polígonos (scan passando por vértices)
y 1 i0 i1 i2 i4 ys 3 i3 5 2 4 x

42 Preenchimento de polígonos (scan passando por vértices)
y 1 i0 i1 i2 i4 ys 3 i3 5 2 4 x não inclui vértices: i0-? inclui vértices: i0-i1, i2-i3, i4-? L y ys x 1 2 3 5 i0 i2 i3 i1 i4 4 y ys x 1 2 3 5 i0 4 L

43 Interseção nos vértices
só inclui vértices de menor y: i0-i4 J só inclui vértices de maior y: i0-i1, i2-i3 J ou reta horizontal não produz interseção

44 Rasterização Geral de Polígonos
Idéia básica: teste de paridade for each scanline edgeCnt = 0; for each pixel on scanline (l to r) if (oldpixel->newpixel crosses edge) edgeCnt ++; // draw the pixel if edgeCnt odd if (edgeCnt % 2) setPixel(pixel); D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

45 Faster Polygon Rasterization
Como otimizar o código? for each scanline edgeCnt = 0; for each pixel on scanline (l to r) if (oldpixel->newpixel crosses edge) edgeCnt ++; // draw the pixel if edgeCnt odd if (edgeCnt % 2) setPixel(pixel); Alto custo: testar os pixels para cada aresta Solução: active edge table (AET) – tabela de arestas ativas D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

46 Active Edge Table Idéia:
Arestas com intersecção com uma determinada scanline provavelmente também interceptam a próxima scanline A ordem das intersecções não muda muito de uma scanline para outra D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

47 Active Edge Table (AET)
Algoritmo: scanline from bottom to top… Selecione a coordenada y mínima de cada aresta A partir de baixo (bottom), coloque arestas com Ymin= 0 na AET Para cada scanline: Selecione as arestas na AET pela interseção em x Caminhe da esquerda para direita, selecionando os pixels com a regra da paridade (interior-exterior) Incremente a scanline Retire as arestas com Ymax < Y Adicione as arestas com Ymin < Y Recalcule as interseções das arestas Pare quando Y > Ymax para todas as arestas D. Brogan Univ. of Virginia Alberto Raposo – PUC-Rio

48 Active Edge Table (AET)
Slater, Steed & Chrysanthou, 2002 Alberto Raposo – PUC-Rio

49 Active Edge Table (AET)
Alberto Raposo – PUC-Rio Slater, Steed & Chrysanthou, 2002

50 Revisão: Rasterização Scan Line
Para a scanline, determine todas as arestas do polígono que a intercepta Ordene as interseções com a scanline em ordem crescente Use o teste de paridade para saber os pixels que serão desenhados Linhas horizontais não entram na contagem de paridade Pontos mínimos Ymin contribuem na contagem da paridade Pontos máximos Ymax não contribuem na contagem da paridade D. Brogan Univ. of Virginia Não desenhada porque H é max de AH e HG não contribui na contagem F Não desenhada porque D é min de ED e incrementa contagem para 2. DC não contribui. H G E D C A B Aresta de baixo desenhada porque A é min de AH e AB não contribui Alberto Raposo – PUC-Rio

51 Revisão: Rasterização Scan Line
Desenha uma linha por vez Vantagem: não exige todo o modelo e toda a imagem na memória Alberto Raposo – PUC-Rio Cluter & Durand, MIT

52 Revisão: Rasterização Scan Line
Inicializa: Raster, Polygons, Edge Table, AEL Para cada scanline y Atualiza Active Edge List (inserir arestas da EdgeTable[y]) Rasterizar pixels de acordo com AEL Atualiza AEL (delete, increment, resort) Alberto Raposo – PUC-Rio

53 Informações Adicionais
M. Slater et al. Computer Graphics and Virtual Environments: From Realism to Real-Time, Addison Wesley, 2002. Peter Shirley. Fundamentals of Computer Graphics, A K Peters, Ltd., Natick, MA, USA, 2002. Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Phlips, L. R., Introduction to Computer Graphics,  Addison-Wesley, 1995. Marcelo Gattass: notas de aula. Alberto Raposo – PUC-Rio


Carregar ppt "INF 1366 – Computação Gráfica Interativa Rasterização"

Apresentações semelhantes


Anúncios Google