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

53
Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B. Raposo e Marcelo Gattass [email protected] http://www.tecgraf.puc-rio.br/~abraposo/ INF1366/index.htm

Transcript of Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Rasterização Alberto B....

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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