640 likes | 863 Views
4. A grafikus szerelőszalag - áttekintés 4.0. Bevezetés. A g rafikus szerelőszalag: a képet előállító műveletek sorozata, grafikus szerel ő szalag = viewing pipeline „cs ő vezeték”. 2. Az elemző-építő program – modellt épít. · APRO - al kalmazási program,
E N D
A grafikus szerelőszalag: a képet előállító műveletek sorozata, grafikus szerelőszalag = viewing pipeline „csővezeték” 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 - bejárható • Színtér l | __ tárgy1 __ . . . __ tárgyn __ { nil } // tárgyak l . . . l l__ lap1 __ . . . __ lapm __ { nil } // lapok l . . . l l__ P1 __ P2 __ P3 __ { nil } // pontok l . . . . . . (vertices) l l __ { x y z [ w ] }
Térbeli „képelemek” • 3 koordináta • háromszög-sáv • legyező • Négyszög-sáv • négyszögháló
A grafikus alapszoftver - rajzol • BGI (és mások): KKR-ben, 2D • Windows GDI, DirectDraw KKR-ben, 2D • OpenGL – SKR VKRKKR, 3D alapszoftver • Grafikus munkaállomások: egyes műveletek hardverben (förmver-ben pl. a láthatóság • NéhaaGM rendszerekbe is beépítve.
Az elemző-építő program – „néha” rajzol · APRO - alkalmazási program, GM - geometriai modell GRASZ - grafikus alapszoftver: - feladata: rajzolás („bármit”) - működése: műveletek sorozata: a „szerelőszalag” 7
Grafikus szerelőszalag: a kép előállításánakműveletei; műveletek sorozata „grafikus szerelőszalag” (viewing pipeline, „csővezeték”)
A 2D szerelőszalag műveletei • Geometriai modell – építés, elemzés, módosítás • 0. Képelemek kiválogatása (amit APRO rajzolni akar)1. Képelemek előkészítése:helyettesítés és elhelyezés 2. Leképezés: VKR KKR (3D 2D)3. Képkivágás: a kereten kívüliek elhagyása4. 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 = ( Utó · Raszko · Láthat · Vág · Lekép · Előkész ) ·P
procedure GdrawLine( P,Q : Gpoint );{ Egyenes szakasz kirajzolása }begin map_To_WCS(P,P1); // előkészítés map_To_WCS(Q,Q1); map_To_SCS(P1,U); // Leképezés map_To_SCS(Q1,V); c_Flag := clip_Line( U,V ); // Vágásif ( clipFlag ) then G_draw_Line(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
A képelemek előkészítése • Rajzoláskor: APRO bejárja a geometriai modellt, kiválogatja 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 ( i. és ii.)
Előkészítés: (1) helyettesítés, . . . A modell geometriai elemeithelyettesí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 16
Előkészítés: (2) elhelyezés: SKR VKR P’ = M · P; M = T S R
A nagy fal • Nagyfal =nagypanel +M00 · ablak + M01 · ablak + M02 · ablak Moi = T·R·S
Egy ház • Ház = M05· Nagyfal +M06· kisfal +M07· Nagyfal +M08· kisfal
… • Ház = M05· Nagyfal +M06· kisfal +M07· Nagyfal +M08· kisfal =M05· ( nagypanel +M00 · ablak + M01 · ablak + M02 · ablak ) +M06· ( kispanel +M03 · ablak + M04 · ablak) +. . .
Elhelyező transzformáció: hasonlóságSKR VKR; M = T S R
A modell-fa bejárása Lakótelep = házsor + házsor + házsor == ( ház + ház + ház ) + ( ház + ház + ház ) + ( ház + ház + ház ) = ( (nagyfal + kisfal + nagyfal + kisfal + tető) + (nagyfal + kisfal + nagyfal + kisfal + tető) + (nagyfal + kisfal + nagyfal + kisfal + tető) ) + . . .= ( ( ( nagypanel + ablak + ablak + ablak ) + … illetve:M12·M09·M05·( nagypanel + M00· ablak + M01· ablak + M02· ablak )amikor sorra kerül:M12·M09·M05·M02· ablak
Egy (másik) Elhelyező transzformáció H: Saját KR-jébenK: az ő Saját KR-jében K’ = K + Si (Ni٠H) // lukas kereszt S = V + Sj [ Mj٠ K’ ] = // a sáv = V + Sj [ Mj٠ ( K + Si Ni٠H ) ] Mj , Ni: elhelyező transzformációk 26 26
Egy dőlt kereszt rajzolása T := Mj; drawT K; pushT;for i:= 1 to 4 doT := stacktop; T := T Ni; drawT H;end // for i;popT; 27 27
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
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) • alakzatok pontjainak transzformációja • a pontok helyvektorának szorzása a leképezés mátrixával:P’ = M · P= ( m11 m12 m13 m14 ) · ( x ) | m21 m22 m23 m24 | | y | | m31 m32 m33 m34 | | z | ( m41 m42 m43 m44 ) ( h )
2D Leképezés: VKR KKR Nézetmező (keret), tárgytér: { Kba, Kjf } Képmező, képtér: { Mba, Mjf } Leképezés: u = a ·x + b, v = c ·y + d
2D Leképezés: minden új leképezésnél beállítás :GsetWorldFrame ( Kba, Kjf : Gpoint2 );GsetScreenViewPort( Mba, Mjf : Gpixel ); minden képelemnél a leképezés :GmapWorldToScreen(Pv:Gpoint2; Pk:Gpixel); 32
2D Leképezés: VKR KKR Matematikai modell: u = a ·x + b, v = c ·y + d; a = du / dx; c = dv / dy; ( < 0 ) dx = kj- kb, dy = kf - kl, du = mj- mb, dv = mf- ml; b és d: Kba Mba –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 33
3D Leképezés: Párhuzamos, vagykö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)
3D Leképezések • Párhuzamos vetítés koordináta-síkra merőlegesen • Párhuzamos vetítés koordináta-síkra ferde irányban • Párhuzamos vetítés általános helyzetben • Középpontos vetítés az XY síkra • Középpontos vetítés általános helyzetben
3D Leképezések -1 Párhuzamos vetítés koordináta-síkra merőlegesen • Párhuzamos és merőleges vetítésM = E • A tárgy az XY síkon áll, erre merőlegesen vetítünk: a z -t elhagyjuk • Más helyzetű tárgy esetén: eltolás-forgatással . . .
3D Leképezések -2 Ferde vetítés koordinátasíkra párhuzamoan • A vetítés iránya: v= (vx, vy, vz); vz 0 • A vetítő egyenesek egyenlete:X (x, y, z) = P + t ·v x = px + t · vx y = py + t · vy z = pz + t · vz( = 0 ) • Döféspont a vetületi síkon z’ = 0 : t = -pz/ vz(vz 0) x’ = px+ t · vx= px- pz· (vx / vz)y’ = py+ t · vy = py - pz · (vy / vz)
Ferde vetítés mátrixal: • Nyírással merőleges vetítéssé:P’ = N xy·P ; (3D3D)= ( 1 0 -vx/vz 0)·(px)| 0 1 –vy/vz0| |py|| 0 0 1 0| |pz|( 0 00 1|(1)= [ px - (pz / vz) · vx , py - ( pz / vz) · vy , pz , 1] ( px - (pz / vz) · vx, py - ( pz / vz) · vy); vz :=0 • Nyírás: a 3D alak torzul, de ettől jó a 2D vetület
3D Leképezések – 3általános helyzetben:transzformációk a vetítés előtt • „elhelyező transzformáció • forgatás, elhelyezés;hasonlósági transzformációk • Feladat: a VKR-ben adott testvetítése egyik fő sikjára • A tárgy jellemző KR-e: TKR; • megadása VKR-ben: R, u, v, w • VKRTKR : P’ = ( T · B) ·P; ezután:
3D-3D leképezések Számítási módszerek: P’ = M P ; 3D 3D láthatóság-takarás z’ szerint 3D 2D: az XY síkra (z elhagyása) M : olyan 3D 3D leképezés, hogy a végén az XY síkra merőleges vetület a kívánt sík-vetület legyen 40
Középpontos vetítés Számítási módszerek: P’ = M P ; 3D 3D láthatóság-takarás z’ szerint 3D 2D: az XY síkra (z elhagyása) M : projektív transzformáció M : a határozatlan együtthatók módszerével : meghatározza 5-5 „független” pont 41
3D Leképezések - 4 Középpontos vetítés az XY síkra(A kamera koordináta-rendszerében)
Például: egy sínpár perspektívája X = [ 1, 0, 0, 0 ]; X’ = XY = [ 0, 1, 0, 0 ]; Y’ = YC = [ 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] 43
Az előírásoknak megfelelő mátrix: M = ( s/k* 0 0 0 ); s = -1/k+t* | 0 s/k* 0 0 |; k* = k·tg a | 0 0 -1/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) ) 44
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ő 45
3D Leképezések – 5általános helyzetben:transzformációk a vetítés előtt • „elhelyező transzformáció • forgatás, elhelyezés;hasonlósági transzformációk • Feladat: a VKR-ben adott testvetítése a „Z tengely irányában • A tárgy jellemző KR-e: TKR; • megadása VKR-ben: R, u, v, w • VKRTKR : P’ = ( T · B) ·P; ezután:
Vetítés az OpenGL-ben Modell-transzformációk és PKR (SzKR)-re Vetítés (projektív vagy affin) transzformáció Vágás (a projektív transzformált szűrése) A keret leképezése a képmezőre
4.3. Vágás A képkereten kívüli részek elhagyása (vagy csak megjelölése) 49