Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

2D képszintézis Szirmay-Kalos László.

Hasonló előadás


Az előadások a következő témára: "2D képszintézis Szirmay-Kalos László."— Előadás másolata:

1 2D képszintézis Szirmay-Kalos László

2 Számítógépes grafika modellezés Virtuális világ modell világ = sík
képszintézis világ = sík Metafórák: 2D rajzolás

3 2D képszintézis

4 Vektorizáció r(t) r2 rn r1 [0,1]: t1= 0, t2 , ... , tn =1
r1 =r(0), r2 = r(t2), … , rn = r(1)

5 Modellezési transzformáció
Sx 0 Sy 0 cos f sin f 0 -sin f cos f 0 px py 1 TM ux uy 0 vx vy 0 ox oy 1 (x, y) v u [x, y, 1] = [a, b, 1]  (a, b) o [0, 0, 1] [ox oy ] [1, 0, 1] [ox+ux oy+uy 1 ] [0, 1, 1] [ox+vx oy+vy 1 ] (x, y) = o + au + bv

6 Ablak-nézet transzformáció
ww ablak vw nézet (x, y) (X, Y) wh vh TV (vx,vy) (wx,wy) X = (x-wx) vw/ww + vx Y = (y-wy) vh/wh + vy vw/ww vh/wh vx-wxvw/ww vy-wyvh/wh 1 [X, Y, 1] = [x, y, 1]

7 Összetett transzformáció
[X, Y, 1] = ([a, b, 1] TM ) TV [X, Y, 1] = [a, b, 1] (TM TV ) = [a, b, 1] TC TV nézeti transzformáció számítása for each object o TM előállítása TC = TM TV for each point of object o: transzformáció TC -vel endfor

8 Vágás Vektorizáció miatt: pont, szakasz, poligon Pontok vágása
x > xmin x < xmax y > ymin y < ymax ymax Ablak: Belső konvex Külső konkáv Félsík: Külső konvex xmax ymin xmin

9 Szakasz vágás félsíkra
xmax xi, yi x2, y2 x1, y1 x(t) = x1 + (x2 - x1)t, y(t) = y1 + (y2 - y1)t x = xmax Metszéspont: xmax= x1 + (x2 - x1)t  t = (xmax-x1)/(x2-x1) xi = xmax yi = y1 + (y2 - y1) (xmax-x1)/(x2-x1)

10 Cohen-Sutherland vágás
Code = (y > ymax , x > xmax , y < ymin , x < xmin ) 1001 1000 1100 0001 0000 0100 0110 0011 0010

11 Sutherland-Hodgeman poligonvágás
PolygonClip(p[n]  q[m]) m = 0; for( i=0; i < n; i++) { if (p[i] belső) { q[m++] = p[i]; if (p[i+1] külső) q[m++] = Intersect(p[i], p[i+1], vágóegyenes); } else { if (p[i+1] belső) } Első pontot még egyszer a tömb végére

12 Konkáv sokszögek vágása
6 5 3 2 4 1

13 Raszterizáció model Geometriai primitívek: 0.1-1 microsec / primitív
transzformáció vágás raszterizáció Pixel műveletek Pixelek néhány nanosec / pixel rasztertár

14 Szakasz rajzolás Egyenes egyenlete: y = mx + b Egyeneshúzás
for( x = x1; x <= x2; x++) { Y = m*x + b; y = Round( Y ); write( x, y ); } x1 x2

15 Inkrementális elv Y(X) kiszámítása Szakasz rajzolás: Y(X) = mX + b
Y(X) = F( Y(X-1) ) = Y(X-1) + dY/dX Szakasz rajzolás: Y(X) = mX + b Y(X) = F( Y(X-1) ) = Y(X-1) + m Összeadás: fixpontos ábrázolás: y = Y 2T T: hiba < 1 a leghosszabb műveletsornál N 2-T < 1: T > log2 N round( y ): y+0.5-t csonkítjuk

16 DDA szakaszrajzolás DDADrawLine(x1, y1, x2, y2) {
m = (y2 - y1)/(x2 - x1) y = y FOR X = x1 TO x2 { Y = round(y) trunc(y) WRITE(X, Y, color) y = y+m }

17 DDA szakaszrajzoló hardver
X Y X számláló y regiszter 0.5 = CLK S x1 y1 m

18 Terület elárasztás működése
Belső pont = sötétkék Flood(x, y) { if (pixel[x][y] belső pont) { Write(x, y, color); Flood(x, y-1); Flood(x, y+1); Flood(x-1, y); Flood(x+1, y); } 2 2 1 2 mag 1 2 1 1 Flood 1 Write Flood(x,y-1); Flood(x,y+1); Flood(x-1,y); Flood(x+1,y); 2 Write Flood(x,y-1); Flood(x,y+1); Flood(x-1,y); Flood(x+1,y);

19 Területkitöltés Geometriai reprezentáció alapján Belső pixel
p1,p2,...,pn csúcsok p1-p2, p2-p3,...,pn-p1 élek Belső pixel páratlanszor metszünk élt, ha végtelenből jövünk végtelen: vágás után a nézet széle

20 Területkitöltés Egyenesek = vízszintes pászták
x1 x4 x3 x2 y p1 p3 Egyenesek = vízszintes pászták Amíg nincs metszéspont addig nincs változás (koherencia)

21 Kitöltés gyorsítása Vizsgálatok csak az aktív élekre
Metszéspontszámítás inkrementális elv szerint Dx/Dy Dx/Dy y x(y) x(y+1) x(y+2)

22 Aktív él lista AET: aktív éltábla AET ymax Dx/Dy x next
ymin=1024 ymax Dx/Dy x1 next ymax Dx/Dy x1 next ymin=1 ET: éltábla ymin=0


Letölteni ppt "2D képszintézis Szirmay-Kalos László."

Hasonló előadás


Google Hirdetések