alberto raposo – puc-rio inf 1366 – computação gráfica interativa rasterização alberto b....
TRANSCRIPT
![Page 1: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/1.jpg)
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Rasterização
Alberto B. Raposo e Marcelo [email protected]
http://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm
![Page 2: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/2.jpg)
Alberto Raposo – PUC-Rio
Pipeline GráficoModeling
Transformations
Illumination(Shading)
Viewing Transformation(Perspective / Orthographic)
Clipping
Projection (to Screen Space)
Scan Conversion(Rasterization)
Visibility / Display
Cluter & Durand, MIT
![Page 3: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/3.jpg)
Alberto Raposo – PUC-Rio
Transformações de Modelagem• 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)
Modeling Transformations
Illumination(Shading)
Viewing Transformation(Perspective / Orthographic)
Clipping
Projection (to Screen Space)
Scan Conversion(Rasterization)
Visibility / Display Object space World spaceCluter & Durand, MIT
![Page 4: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/4.jpg)
Alberto Raposo – PUC-Rio
Transformação de VisualizaçãoModeling
Transformations
Illumination(Shading)
Viewing Transformation(Perspective / Orthographic)
Clipping
Projection (to Screen Space)
Scan Conversion(Rasterization)
Visibility / Display
Eye space
World space
• 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)
Cluter & Durand, MIT
![Page 5: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/5.jpg)
Alberto Raposo – PUC-Rio
Clipping (Recorte)• Transforma para Normalized Device
Coordinates (NDC)
• Partes do objeto fora do volume de visualização(view frustum) são removidas
Modeling Transformations
Illumination(Shading)
Viewing Transformation(Perspective / Orthographic)
Clipping
Projection (to Screen Space)
Scan Conversion(Rasterization)
Visibility / Display
Eye space NDC
Cluter & Durand, MIT
![Page 6: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/6.jpg)
Alberto Raposo – PUC-Rio
Projeções• Objetos são projetados para o espaço
2D da imagem (screen space)Modeling
Transformations
Illumination(Shading)
Viewing Transformation(Perspective / Orthographic)
Clipping
Projection (to Screen Space)
Scan Conversion(Rasterization)
Visibility / Display
NDC Screen Space
Cluter & Durand, MIT
![Page 7: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/7.jpg)
Alberto Raposo – PUC-Rio
Rasterização• Rasteriza objetos em pixels• Interpola valores (cores,
profundidade, etc.)
Modeling Transformations
Illumination(Shading)
Viewing Transformation(Perspective / Orthographic)
Clipping
Projection (to Screen Space)
Scan Conversion(Rasterization)
Visibility / Display
Cluter & Durand, MIT
![Page 8: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/8.jpg)
Alberto Raposo – PUC-Rio
Visibilidade / Display• 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!
Modeling Transformations
Illumination(Shading)
Viewing Transformation(Perspective / Orthographic)
Clipping
Projection (to Screen Space)
Scan Conversion(Rasterization)
Visibility / Display
Cluter & Durand, MIT
![Page 9: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/9.jpg)
Alberto Raposo – PUC-Rio
Rasterizar
•Converter coordenadas da tela em cores de pixels
L. McMillanMIT 6.837 notes (Fall ’98)
![Page 10: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/10.jpg)
Alberto Raposo – PUC-Rio
Problema
• Primitivas geométricas são contínuas; tela é discreta (pixels)
Cluter & Durand, MIT
![Page 11: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/11.jpg)
Alberto Raposo – PUC-Rio
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
![Page 12: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/12.jpg)
Algoritmos de rasterização de linhas Suponha x > y
incrementa x evê o que acontece com y
incrementa y evê o que acontece com x
x = 5, y =3
![Page 13: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/13.jpg)
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); }}
Algoritmo simples de linha(no primeiro octante)
yi = m xi + b
onde:m = y/xb = y1 - m x1
![Page 14: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/14.jpg)
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); }}
Algoritmo de linha incremental
Se xi+1 = xi + 1
entãoyi+1 = yi + y/x
![Page 15: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/15.jpg)
Algoritmo de linha baseado no erro
erro de manter y
0.5
- 0.5 x
![Page 16: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/16.jpg)
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; } SetPixel(x1, y1, c); }}
Algoritmo de linha baseado no erro
erro de manter y
0.5
- 0.5 x
e = erro - 0.5
x
0.5
- 0.5
![Page 17: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/17.jpg)
Algoritmo de Bresenhamvoid 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; } SetPixel(x1, y1, c); }}
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; } SetPixel(x1, y1, c); }}
ei = 2*Dx*e
válidos somente quando Dx>Dy, x2 > x1 e y2 > y1
![Page 18: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/18.jpg)
Equação implícita da reta
x1 x2
y1
y2
x
yBx
DxDyy
0...),( DxByDxxDyyxF
DxDyn
F x y( , ) 0
F x y( , ) 0
F x y a x b y c( , ) . . Dxb
Dya
![Page 19: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/19.jpg)
Equação implícita da reta
E
NE
xp xp+1 xp+2
yp
Myp+1/2
![Page 20: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/20.jpg)
Algoritmo do ponto médio- variável de decisão -
d F x y a x b y cp p p p ( , ) ( ) ( )1 112
12
F Mescolha NEescolha E
( )
00
ME
d F x y a x b y cnew p p p p ( , ) ( ) ( )2 212
12
d d anew old
d F x y a x b y cnew p p p p ( , ) ( ) ( )2 232
32
d d a bnew old MNE
E a
NE a b
E
NE
xp xp+1 xp+2
yp
Myp+1/2
yp+3/2MNE
ME
![Page 21: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/21.jpg)
Algoritimo do ponto médio- redução para inteiros -
d F x y a x b y cstart ( , ) ( ) ( )0 01
2 0 01
21 1
d F x y a b a bstart ( , ) / /0 0 2 2
E
NE
aa b
d a bstart 2.
E
NE
aa b
22
d F x y2. ( , )
![Page 22: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/22.jpg)
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; x++; y++; } Pixel(x,y,color); } /* while */
} /* MidpointLine */
Algoritimo do ponto médio- código C -
![Page 23: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/23.jpg)
Rasterização de Cônicas
x
y
F(x,y) = 0
F
FxFy
450
x
y
simetrias do círculo:cada ponto calculado define 8 pixels
![Page 24: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/24.jpg)
Rasterização de Cônicas
E
SEM ME
MSE
F(x,y) = 0
x
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}
![Page 25: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/25.jpg)
Alberto Raposo – PUC-Rio
Prenchimento de polígonos
![Page 26: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/26.jpg)
Alberto Raposo – PUC-Rio
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. BroganUniv. of Virginia
![Page 27: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/27.jpg)
Alberto Raposo – PUC-Rio
Triangularização
• Polígonos convexos sãofacilmente triangularizados (Delaunay)
• Pológonos côncavos apresentamdesafios
D. BroganUniv. of Virginia
![Page 28: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/28.jpg)
Alberto Raposo – PUC-Rio
Preenchimento “força bruta” para triângulos• Para cada pixel
– Compute as equações das linhas no centro do pixel– “recorte” pelo triângulo
Cluter & Durand, MIT
Problema: se o triânguloé pequeno, muito esforço computacional édesperdiçado
![Page 29: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/29.jpg)
Alberto Raposo – PUC-Rio
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
![Page 30: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/30.jpg)
Alberto Raposo – PUC-Rio
Ainda há problemas…
• Computa-se a equação das linhas para muitos pixels desnecessários
Cluter & Durand, MIT
![Page 31: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/31.jpg)
Alberto Raposo – PUC-Rio
Use rasterização de linhas
• Computar os pixels das bordas
[P. Shirley, pag 55]
Cluter & Durand, MIT
![Page 32: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/32.jpg)
Alberto Raposo – PUC-Rio
Rasterização Scan-Line
• Computar os pixels das bordas• Preencher o meio
Shirley page 55
![Page 33: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/33.jpg)
Alberto Raposo – PUC-Rio
Scan-line Rasterization
• Requer um “setup”inicial para ser preparado
[P. Shirley, pag 55]
Cluter & Durand, MIT
![Page 34: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/34.jpg)
Alberto Raposo – PUC-Rio
Recorte (clipping)• Como retirar partes forada janela?
Cluter & Durand, MIT
![Page 35: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/35.jpg)
Alberto Raposo – PUC-Rio
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?
A
B
C
D
E
F
D. BroganUniv. of Virginia
![Page 36: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/36.jpg)
Alberto Raposo – PUC-Rio
Rasterização de Polígonos
• Pontos interior-exterior
D. BroganUniv. of Virginia
![Page 37: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/37.jpg)
Alberto Raposo – PUC-Rio
Rasterização de Polígonos• Pontos interior-exterior
D. BroganUniv. of Virginia
![Page 38: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/38.jpg)
Alberto Raposo – PUC-Rio
Interior e exterior
![Page 39: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/39.jpg)
Alberto Raposo – PUC-Rio
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
CD
E
FG
I H
J
AD. BroganUniv. of Virginia
![Page 40: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/40.jpg)
Preenchimento de polígonos
y
ys
x
0
1
23
4
0xi1 xi0 xi4 xi3
ymax
ymin
dados:{x0, x1, x2, x3, x4}{y0, y1, y2, y3, y4}
acha ymax e ymin
Para cada ys[ymax , ymin]
Para cada aresta calcula as interseções
ordena interseções
desenha linhas horizontais
vx= {xi1 , xi0 , xi4 , xi3}
i0i1 i3i4
![Page 41: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/41.jpg)
Preenchimento de polígonos(scan passando por vértices)
y
ys
x
01
2
3 5i0 i2
i3
0
i1 i4
4
![Page 42: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/42.jpg)
Preenchimento de polígonos(scan passando por vértices)
y
ys
x
01
2
3 5i0 i2
i3
0
i1 i4
4
inclui vértices: i0-i1, i2-i3, i4-?
não inclui vértices: i0-?
y
ys
x
01
2
3 5i0 i2
i3
0
i1 i4
4
y
ys
x
01
2
3 5i0
04
![Page 43: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/43.jpg)
Interseção nos vértices
ousó inclui vértices de menor y: i0-i4
só inclui vértices de maior y: i0-i1, i2-i3
reta horizontal não produz interseção
![Page 44: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/44.jpg)
Alberto Raposo – PUC-Rio
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. BroganUniv. of Virginia
![Page 45: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/45.jpg)
Alberto Raposo – PUC-Rio
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
ativasD. BroganUniv. of Virginia
![Page 46: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/46.jpg)
Alberto Raposo – PUC-Rio
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. BroganUniv. of Virginia
![Page 47: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/47.jpg)
Alberto Raposo – PUC-Rio
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. BroganUniv. of Virginia
![Page 48: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/48.jpg)
Alberto Raposo – PUC-Rio
Active Edge Table (AET)
Slater, Steed & Chrysanthou, 2002
![Page 49: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/49.jpg)
Alberto Raposo – PUC-Rio
Active Edge Table (AET)
Slater, Steed & Chrysanthou, 2002
![Page 50: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/50.jpg)
Alberto Raposo – PUC-Rio
Revisão: Rasterização Scan Line
A B
D C
F
EH G
Para a scanline, determine todas as arestas do polígono que a interceptaOrdene as interseções com a scanline em ordem crescenteUse o teste de paridade para saber os pixels que serão desenhadosLinhas horizontais não entram na contagem de paridadePontos mínimos Ymin contribuem na contagem da paridade Pontos máximos Ymax não contribuem na contagem da paridade
Aresta de baixo desenhada porque A é min de AH e AB não contribui
Não desenhada porque H é max de AH e HG não contribui na
contagem
Não desenhada porque D é min de ED e incrementa contagem
para 2. DC não contribui.
D. BroganUniv. of Virginia
![Page 51: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/51.jpg)
Alberto Raposo – PUC-Rio
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
y
Cluter & Durand, MIT
![Page 52: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/52.jpg)
Alberto Raposo – PUC-Rio
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)
![Page 53: Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass abraposo@tecgraf.puc-rio.br abraposo/INF1366/index.htm](https://reader036.vdocuments.mx/reader036/viewer/2022062522/570638431a28abb8238f1b69/html5/thumbnails/53.jpg)
Alberto Raposo – PUC-Rio
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. http://www.tecgraf.puc-rio.br/~mgattass/cg.html