4. A grafikus szerelőszalag - áttekintés 4.0. Bevezetés.

Slides:



Advertisements
Hasonló előadás
OpenGL 2. gyakorlat Hapák József
Advertisements

L ÁTHATÓSÁG MEGHATÁROZÁSA tavaszi félév.
Számítógépes geometriai leíró nyelvek
ALAKZATOK TRANSZFORMÁCIÓJA ÚJ KÉPSÍKOK BEVEZETÉSÉVEL
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
Koordináta transzformációk
Koordináta transzformációk
2D képszintézis Szirmay-Kalos László.
Geometriai Transzformációk
Geometriai transzformációk
Inkrementális 3D képszintézis
2D képszintézis Szirmay-Kalos László. Számítógépes grafika feladata képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík.
Számítógépes grafika Szirmay-Kalos László
Poliéderek térfogata 3. modul.
GRAFIKUS PRIMITÍVEK KITÖLTÉSE
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
Transzformációk kucg.korea.ac.kr.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis 4. előadás.
3. Vetületi ábrázolások számítási eljárásai
P z : egy „elemi” projektív transzformáció M = ( m m m m ); P z = ( ) | m m m m | | | | m m m m | | | ( p p p p ) ( 0 0 r 1 ) az.
2. Koordináta-rendszerek és transzformációk 2.1. Koordináta-rendszerek 2.2. Az egyenes és a sík egyenlete 2.3. Affin transzformációk 2.4. Projektív transzformációk.
Számítógépes geometria
2D képszintézis és textúrák
Koordináta-geometria
3.3. Axonometrikus ábrázolások Rövid áttekintés
Bevezetés: a Számítógépi grafika tárgya (Szemelvények: amit tudni illik)
4.7. Textúra A felület anyagszerűsége Sík-képek ráborítása a felületre
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Bevezetés a Számítógépi grafikába - előadás
2. Koordináta-rendszerek és transzformációk
3.4. Perspektív ábrázolások
2. Koordináta-rendszerek és transzformációk
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
3. Vetületi ábrázolások számítási eljárásai
2008/2009 tavasz Klár Gergely  Gyakorlatok időpontjai: ◦ Szerda 10:05–11:35 ◦ Csütörtök 10:00+ε –11:30+ε  Gyakvez: ◦ Klár Gergely ◦
Vektorok különbsége e-x = [ex-xx ey-xy ez-xz] e e-x x szempozíció
2D képszintézis Szirmay-Kalos László.
Rendering pipeline Ogre3D
Transzformációk Szirmay-Kalos László. Transzformációk (x,y) (x’,y’) = T(x,y) l Tönkre tehetik az egyenletet l Korlátozzuk a transformációkat és az alakzatokat.
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
4.4. Láthatóság - takarás A látványban takart részek elhagyása vagy a látható részek kiválasztása.
4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontban ? (4.4.LÁTHATÓSÁG) A képponton át a szembe jutó fénysugár melyik.
3. Vetületi ábrázolások számítási eljárásai
Geometriai transzformációk
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
Bevezetés: a Számítógépi grafika tárgya (Szemelvények: amit tudni illik)
2.2. Az egyenes és a sík egyenlete
2. Koordináta-rendszerek és transzformációk
Bevezetés a számítógépi grafikába 2. Paraméteres görbék Paraméteres görbe: 2D-ben: paraméter: általában: kikötések: legyen folytonos legyen folytonosan.
Bevezetés - Vonalak. Koordinátarendszer Windows form x y Az y lefelé nő Transzformáció a hagyományosra x Eltolás y Ellentett és eltolás.
Raszter-konverzió A képelem látványát alkotó képpontok előállítása Egyenes szakasz képpontjai Sokszög lemez kitöltése.
HASÁBOK FELOSZTÁSA.
ALAKZATOK TRANSZFORMÁCIÓJA ÚJ KÉPSÍKOK BEVEZETÉSÉVEL
4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontjában ? És az ott milyen színű ? (4.7. Árnyalás)
3.4. Perspektív ábrázolások
3.2. Axonometria – Műszaki rajzok párhuzamos vetítéssel
Bevezetés a számítógépi grafikába
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése 6.2. Térbeli alakzatok képe 6.3. Térbeli képelemek és modell-adatszerkezetek 6.4. Képelemek.
Alapvető raszteres algoritmusok, szakasz rajzolása, DDA, MidPoint algoritmus.
Bevezetés a számítógépi grafikába 1.Bevezetés: A Számítógépi grafika tárgya 2.Képek kódolása 3.A geometrikus grafika alapjai 4.Koordináta-rendszerek és.
3D grafika összefoglalás
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
Árnyékszerkesztés alapjai
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Épületelemek árnyéka.
ELEMI GEOMETRIAI ISMERETEK
Geometriai Algoritmusok
Szögfüggvények és alkalmazásai Készítette: Hosszú Ildikó Nincs Készen.
Előadás másolata:

4. A grafikus szerelőszalag - áttekintés 4.0. Bevezetés

2 Az elemző-építő program – modellt épít  APRO - alkalmazási program, GM - geometriai modell GRASZ - grafikus alapszoftver: - feladata: rajzolás - működése: műveletek sorozata: a „szerelőszalag”

3 A modell adatszerkezete Színtér l | __ tárgy 1 __... __ tárgy n __ { nil } // tárgyak l l... l l__ lap 1 __... __ lap m __ { nil } // lapok l l... l l__ P1 __ P2 __ P3 __ { nil } // pontok l l... l... (vertices) l l __ { x y z [ w ] }

4 Az elemző-építő program – néha rajzol  APRO - alkalmazási program, GM - geometriai modell GRASZ - grafikus alapszoftver: - feladata: rajzolás - működése: műveletek sorozata: a „szerelőszalag”

A grafikus alapszoftver - rajzol BGI (és mások): KKR-ben, 2D Windows GDI, DirectDraw KKR-ben, 2D OpenGL – SKR  VKR  KKR, 3D alapszoftver Grafikus munkaállomások: pl. a láthatóság hardver / förmver-ben. Néha a GM rendszerekbe beépítve.

6 Grafikus szerelőszalag: a kép előállításának műveletei; műveletek sorozata „grafikus szerelőszalag” (viewing pipeline, „csővezeték”)

7

A 2D szerelőszalag műveletei 0. Geometriai modell – építés, elemzés, módosítás Képelemek előkészítése: elhelyezés 2. Leképezés: VKR  KKR (3D  2D) 3. Képkivágás: a kereten kívüliek elhagyása 4. Láthatóság-takarás: a takart elemek elhagyása 5. Raszter-konverzió „a képpontok színezése” - a képpont a KPPufferba (frame buffer)-be P’ = View · P View = ( Utó · Raszko · Láthat · Vág · Lekép · Előkész )

9 procedure GdrawLine( P,Q : Gpoint ); { Egyenes szakasz kirajzolása } begin prepare (p, Q); // előkészítés mapping(P, U); mapping(Q,V); // Leképezés clipFlag := clipLine( U,U1,V,V1); // Vágás if ( clipFlag ) then paintLine(U1,V1); // Raszter-konv. end;

4.1. Előkészítés Képelemek előkészítése: helyettesítése: geometriai elem  képelem elhelyezése: a közös Világ KR-be

11

12 A képelemek előkészítése Rajzoláskor: APRO bejárja a geometriai modellt, kiválasztja a kívánt elemeket, és átadja a GRASZ-nak. GRASZ egyenként átveszi és „ráteszi” a szerelőszalagra Az első művelet: A képelemek előkészítése

13 Előkészítés: (1) helyettesítés,... A modell geometriai elemeit helyettesítjük képelemekkel Görbült felület  sokszögek (háromszögek) Görbe vonal  szakaszos közelítés OpenGL képelemek: TRIANGLE_STRIP TRIANGLE_FAN QUAD_STRIP

Előkészítés: (2) elhelyezés: SKR  VKR P’ = M · P ; M = T  S  R

Az ablak

Egy fal

Egy ház

Házsor

Elhelyező transzformáció: hasonlóság SKR  VKR; M = T  S  R

20 Egy (másik) Elhelyező transzformáció H: Saját KR-jében K: az ő Saját KR-jében K’ = K +  i (N i ٠H) // lukas kereszt S = V +  j [ M j ٠ K’ ] = // a sáv = V +  j [ M j ٠ ( K + S i N i ٠H ) ] M j, N i : elhelyező transzformációk

21 Egy dőlt kereszt rajzolása T := M j ; draw T  K ; push T ; for i:= 1 to 4 do T := stacktop; T := T  N i ; draw T  H ; end // for i; pop T ;

4.2. Leképezés (a tárgytérből a képtérbe) Világ KR  Kép KR (+Z) 2D-Szesza: képkeret  képmező 3D-Szesza: Kamera KR  Kép KR-3D

23

Szesza-2. Leképezés a tárgytérből a képtérbe A tárgyak adottak a VKR-ben; „tárgytér” leképezés a „képtérbe”; 3D (2D) Koordináta-transzformáció M A pontok helyvektorának szorzása a leképezés mátrixával: P’ = M · P

2D-Szesza: Leképezés A tárgyak adottak a VKR-ben; „tárgytér” leképezés a „képtérbe”; 3D (2D) alakzatok (pontok) transzformációja P’ = M · P

2D Leképezés: VKR  KKR Nézetmező (keret), tárgytér: { K ba, K jf } Képmező, képtér: { M ba, M jf } Leképezés: u = a · x + b, v = c · y + d

2D Leképezés: VKR  KKR Matematikai modell: u = a · x + b, v = c · y + d; a = du / dx; c = dv / dy; ( < 0 ) dx = k j - k b, dy = k f - k l, du = m j - m b, dv = m f - m l ; b és d: K ba  M ba –ból „finomságok”: c < 0 a := min( |a|, |c| ), c := - a ; valós  egész; levágás-kerekítés kinn ? benn ? határon 27

28 2D Leképezés: minden új leképezésnél beállítás : GsetWorldFrame ( K ba, K jf : Gpoint2 ); GsetScreenViewPort( M ba, M jf : Gpixel ); minden képelemnél a leképezés : GmapWorldToScreen(P:Gpoint2; P1:Gpixel);

3D Leképezés: Párhuzamos, vagy középpontos vetítés (1) VKR-3D  KKR-3D: nézetmező: csonkagúla  „képmező”: téglatest (2) Láthatóság-takarások Z szerint, a téglatestben (3) Végül: kép: síkvetület a téglatest alapjára (4) a téglatest alapja  képmező (a képernyőn)

A kamera koordináta-rendszerében

31 Középpontos vetítés Számítási módszerek: 1.P’ = M  P ; 3D  3D 2.láthatóság-takarás z’ szerint 3.3D  2D: az XY síkra (z elhagyása) M : projektív transzformáció MM : a határozatlan együtthatók módszerével : meghatározza 5-5 „független” pont

32 Például: egy sínpár perspektívája X = [ 1, 0, 0, 0 ]; X’ = X Y = [ 0, 1, 0, 0 ]; Y’ = Y C = [ 0, 1, 0, 1 ]; C’ = [ 0, 0, 1, 0 ] T = [ 0, 0, t*, 1 ] ; T’ = [ 0, 0, 1, 1 ] E = [ k*,k*,k, 1 ]; E’ = [ -1, 1, 0, 1]

33 Az előírásoknak megfelelő mátrix: M = ( s/k* ); s = -1/k+t* | 0 s/k* 0 0 |; k * = k·tg  | /k 1 | ( 0 0 s 0 ) Az X = [x, y, z, h] pontot ezzel transzformálva: X' = M · X = [s · x / k*, s · y / k*, - z / k + h, s · z] és ha z nem nulla, akkor X' = ( x / (z·k*), y / (z·k*), -1 / (s·k) + h / (s·z) )

Vetítés az OpenGL-ben 1.Modell-transzformációk és  PKR (SzKR)-re 2.Vetítés (projektív vagy affin) transzformáció 3.Vágás (a projektív transzformált szűrése) 4.A keret leképezése a képmezőre

35 Leképezés a tárgytérből a képtérbe 2D grafika: VKR (-2D)  KKR (-2D) VKR keret  képmező 3D grafika: elhelyezés: SKR(-3D)  VKR(-3D) leképezés: (1) VKR(-3D)  NKKR(-3D ) (2) NKKR-ben: láthatóság-takarás (3) vetítés az alapsíkra (z=0) (4)  képmező

Vágás A képkereten kívüli részek elhagyás (vagy csak megjelölése)

37

Képkivágás: kereten kívül eső részek elhagyása Vágó-tartomány „mire”, mivel vágunk?: téglalap (téglatest), vagy fél sík (fél tér) A vágott elemek (mit vágunk?): szakasz, sokszög, szöveg, kör mindegyikre más-más Legtöbbször a képtérben, de lehet a tárgytérben is. 38

Szakaszok vágása a síkban a normálvektoros ( Cyrus-Beck) eljárás Adott egy félsík h határa: h= ( R, n ) Adott: egy PQ szakasz Keressük a PQ szakasznak a fél-síkba eső részét (itt: PM)

„Triviális vizsgálatok” sg( X ) = n٠(X - R) (előjele) sg(P) ≥ 0, ha P a félsíkban < 0, ha P azon kívül van. Ha sg(P) és sg(Q) ≥ 0: mindkettő belül; a szakasz „triviálisan látható” Ha sg(P) és sg(Q) < 0: mindkettő kívül, a szakasz „triviálisan eldobható” Különben: „vágni kell”: M := h × PQ

M kiszámítása: M a h egyenesen: (M - R) ٠n = 0, (1) (m x - r x ) ٠n x + (m y - r y ) ٠n y = 0 M a PQ szakasz egyenesén : M = P + t ٠(Q - P), t valós m x = p x + t ٠(q x – p x ) (2) m y = p y + t ٠(q y – p y ) (3) 3-3: t, m x, m y ; megoldás mindig van!!! (miért??)

Megjegyzések: Tetszőleges konvex n-szögre: n-szer, egymásután. Tengelyállású téglalapra: 4-szer; de! n = (0,  1), illetve (  1,0) n ٠ v = n 2, illetve = n 1 !!!! A térben: szakasz vágása fél-térre; (M - R) ٠ n = 0 1 skalár-egyenlet és M = P + t ٠(P – Q) 3 skalár-egyenletet ad 4 ismeretlen: t, m x, m y, m z ; megoldás mindig van!!! Téglatestre, tetszőleges konvex sokszöglapra (poliéderre)

Szakaszok vágása; Cohen-Sutherland eljárás Adott egy téglalap határaival: x = b, j, y= a, f Adott: a PQ szakasz Keressük a PQ szakasz téglalapba eső részét.

A végpontok BAJF-kódja: BAJF( X ) = 0000, ha belül 1xxx, ha balra kinn x1xx ha alul kinn xx1x, ha jobbra kinn xxx1, ha fölül kinn Egy vagy két 1-es BAJF( X ) : négy összehasonlítással „Triviális vizsgálatok”: ha BAJF( P ) = 0 és BAJF( Q ) = 0: „triviálisan belül” ha BAJF( P ) & BAJF( Q )  0 : „triviálisan eldobható” különben „vágni” kell

„Vágás”: a kintiek helyett határpontok P és Q bitjein balról jobbra haladva (vagy más sorrendben) ahol 1-es van azzal a határral vágunk; Új végpont és a BAJF-kódot újraszámoljuk Legfeljebb 4 lépésben: a vágott szakasz vagy 0 (!): lehet nem triviálisan is eldobható!

46 Sokszöglemez (poligon) vágása Csúcspontok: { P i } Vágás egy-egy határral { P i }  { Q j }; P 1  Q i, M 1  Q 2 ( P 2 ) M 2  Q 3, P 3  Q 4, M 3  Q 5, P 4, M 4  Q 6, P 5  Q 7

47 Sokszöglemez (poligon) vágása - 2 Konvex, konkáv, önmetsző A „fűrész” A „kígyó” { P i, M k }  ’ { Q j }; és { M k } külön is; majd rendezés páros-páratlan összekötés

Vágás – „látnivalók” misc/graphics/article.php/c8965/   o-wei.Hsieh/Haowei.Hsieh/mm.html   Demo  

Másfajta elemek vágása Sokszögvonal: szakaszok egyenként Pontjelölők: (ízlés szerint): (a) vagy az egész látszik, vagy semmi, (b) ha a jelölt pont látszik, akkor a jelölő is, (c) a jel vonalankénti vágása. Feliratok: (ízlés szerint): az egész vagy semmi, ha a jelölt pont …, vágás betűnként, vagy pálcánként Raszteres pontlapok: maszkolás stb. Összetett elemeknek először a befoglaló dobozát vágjuk

50 Térbeli elemek vágása Normálvektoros vágás: fél-tér, téglatest, konvex soklap (poliéder) például: a nézetmező; csonkagúla Cohen-Sutherland: téglatest, 27 mező, BAJFEH -kód Mélység-vágás: a Z tengelyre merőleges „közelsík” és „távolsík” Oldal-vágás: a csonka-gúla oldalaival az XZ ás YZ síkbeli vetületben vághatunk