300 likes | 516 Views
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 összeállítása, leképezés és vágás (6.1-6.4 jórészt a 3. fejezet megfelelő részeit idézik föl.) 6.5. Láthatóság, takarás
E N D
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 összeállítása, leképezés és vágás (6.1-6.4 jórészt a 3. fejezet megfelelő részeit idézik föl.) 6.5. Láthatóság, takarás 6.6. A fénysugár-követési módszer 6.7. Árnyalás, a képpontok színe 6.8. Irodalom 6.9. Egyebek
6.1.Bevezetés: a 3D grafikus szerelőszalag fölépítése • AP, GM, GRASZ (pl. OpenGL) • Szerelőszalag: alapműveletek sorozata- Képelemek összeállítása:- Leképezés a VKR-ből a KKR-be,.- Vágás: a kívül eső képrészek elhagyása.- Láthatóság-takarás. - Árnyalás és textúra.- Utókezelés: különböző módszerek az elkészült kép minőségének javítására. • KR: VKR, SKR, TKR, SZKR, NPKR, KKR • Gyorsítás: dobozolás, térfelosztás, rendezés, koherencia
6.2. Térbeli alakzatok képe • Térbeli látás: tanult, két szemmel • Fénykép, TV: „egy szemmel” – ezt is megtanultuk • A térbeliség mozzanatai (depth-cues)- testek takarása- megvilágítás- árnyékok, a fény visszaverődése- a méretek látszólagos távolsági csökkenése- párhuzamosok látszólagos távolsági összetartása- levegő perspektíva: színeltolódás, kontúrok elmosódása- megszokott jelek (féknyomok az úton)- kinetikus mélységhatás: a távolabbi lassabban mozog • Ezeket utánozzuk; mennél jobban, annál drágábban
Emberi látás és a képernyő • Látómezőnk: 120x100 fok, ovális • Képernyőnk (50 cm-re): 40x30 fok tájkép: egy szűk ablakon át nézünk a világra • A szem fölbontása: 1 szögperc • A képernyő raszter-távolsága: 0,25 mm, 2 szögperc
6.3. Színterek geometrikus kódolása • Leírónyelv (eseti teszt-leírás, vagy pl. VRML) teszt-adatok, archiválás, adatcsere • Adatszerkezet (eseti, vagy GMR) dinamikus építés dinamikus elhalás Poligon: különböző méretű cellák poligon: n, Pi, n, ni, doboz, P,Q,R, … • GRASZ-hívások sorozata (pl. OpenGL)
A képet meghatározó adatok • A testek geometriájaés a felületek anyaga (színe) • Nézet (kamera) • Megvilágítás (fényforrások) • Időbeli változások
Térbeli „képelemek” • 2 helyett 3 koordináta • háromszög-sáv • négyszögháló
A szerelőszalag fölépítése és műveletei ·Alkalmazási Program, Geometriai Model GRAfikus alapSZoftver: rajzolás alapműveletek sorozata: szerelőszalag képelemek előkészítése a VKR-ben ·leképezés a tárgytérből a képtérbe, ·képkivágás;a képkereten kívüli képrészek elhagyása ·láthatóság-takarás:takart elemek elhagyása (3D) ·raszter-konverzió: a képpontok színe (képpont-puffer)
A szerelőszalag műveletei 1. Képelemek előkészítése geometriai elemből képelem(ek), elhelyezés a VKR-ben2. Leképezés a VKR-ből a KKR-be 3. Képkivágás a kereten kívüli részek elhagyása4. Láthatóság-takarás a takart elemek elhagyása (főleg 3D-ben)5. Raszter-konverzió az elemet szemléltető képpontok előállítása, a képpontok színe, a képpont a KPP-be
6.4. Szesza 1: Képelemek összeállítása • SKR -> VKR - hasonlósági transzformáció: TSR - összetett tárgyak hierarchiája • Geometriai elemekből képelemek
A képelemek előkészítése • Rajzoláskor: az APbejárja a geometriai modellt, kiválasztja az elemeket, és átadja a GRASZ-nak. • A GRASZ egyenként átveszi az elemeket és ráteszi a szerelőszalagra • A sze.-sza. első művelete: a képelemek előkészítésegeometriai elem helyett képelem(ek) és a képelemek elhelyezése: SKR -> VKR (eltolás, forgatás, léptékezés)
H: háromszög alakú luk, saját SKR-jében K: kereszt alak, saját SKR-jében K’: lukas kereszt SKR-jében: K’=K+SiNiH S: sáv széleivel (V) és lukas keresztekkel:S = V + Sj MjK’ = V + Sj Mj( K + Si NiH ) Mj és Ni: transzformációk.
A szerelőszalag műveletei 1. Képelemek előkészítése2. Leképezés3. Képkivágás4. Láthatóság-takarás5. Raszter-konverzió
6.4. Szesza 2: Leképezés • Középpontos- vagy párhuzamos vetítés • Elvileg: VKR -> KKR • Gyakran: VKR -> NPKR NPKR-ben láthatóság-takarás • A fénysugár-követésnél: a képernyő rasztert vetítjük a SZKR-be és ott számolunk.
Leképezés a tárgytérből a képtérbe A tárgyak leképezése a tárgytérből a képtérbe Koordináta-transzformáció A pontok helyvektorának szorzása a leképezés mátrixával: P’ = M·P
2D Leképezés: • Nézetmező (keret), tárgytér:GsetWCSFrame(Kba,Kjf:Gpoint2); • Képmező, képtérGsetSCSViewPort(Mba,Mjf:Gpixel); • Leképezés:GmapWCStoSCS(P:Gpoint2; P1:Gpixel);
3D Leképezés: • Párhuzamos, vagyközéppontos vetítés • VKR->KKR3 • Nézetmező: csonkagúla 3D képmező: téglatest • Kép: síkvetület a téglatest alapjára • Előtte: takarások (láthatóság) a téglatestben • (5-6. Fejezet)
A szerelőszalag műveletei 1. Képelemek előkészítése2. Leképezés3. Képkivágás4. Láthatóság-takarás5. Raszter-konverzió
6.4. Szesza 3: Vágás • Nézetmező: csonkagúla: Cyrus-Beck-3D • NPKR téglatest: Cohen-Sutherland-3D • Mélységvágás: Közelsík és távolsík • Oldalvágás: x-y-ban; síkbeli feladat
Képkivágás A kép keretén kívül eső képrészek elhagyása. Vágó-tartomány (mire, mivel vágunk?): téglalap (téglatest), vagy félsík (féltér) A vágott elemek (mit vágunk?): minden képelem típusra más-más vágó eljárás! Legtöbbször a képtérben, de lehet a tárgytérben is.
Normálvektoros szakasz vágás a síkban(a Cyrus-Beck eljárás) • Adott: a PQ szakasz és • egy félsík h határegyenese;R pontjával és n normálisával. • Keressük a PQ szakasznak afélsíkba eső részét (PM)
sg(P) = n(P-R) (előjel!) • Észrevétel:sg(P) > 0, ha P a félsíkban = 0, ha P a határon< 0, ha P 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 = a h és PQ metszéspontja
Az M pont kiszámítása: • Az M pont rajta van a határon:(M-R)n = 0, azaz:(mx - rx)nx + (my - ry)ny = 0 • Az M rajta van a PQ szakaszon:M = P + t (Q - P), valamilyen t paraméterrel, azaz:mx = px + t (qx – px) ésmy = py + t (qy – py);. • Három egyenlet, három ismeretlen: t, mx, my;megoldás mindig van (ha nem „triviális” a helyzet)
Megjegyzések: • Tetszőleges konvex n-szögre:mindegyik határra, egymásután. • Tengelyállású téglalapra: 4xa P és Q sarok kétszer-kétszer,az n vektor: (0,1), illetve (1,0) • A térben: szakasz vágása féltérre;(M-R)n = 0 skalár-egyenlet ésM = P + t (P – Q) három skalár-egyenletet ad. • A térben is: téglatestre és tetszőleges konvex sokszöglapra (poliéderre) alkalmazható.
Cohen-Sutherland szakasz-vágás a síkban • Adott: a PQ szakasz és • Egy téglalap b, a, j, f (bal-alul-jobb-felül) határaival • Keressük a PQ szakasz téglalapba eső részét.
A végpontok BAJF-kódja: • BAJF(P)=1000, ha balra kívül, van 0110, ha alul és jobbra kinn 0000, ha belül van. • Belül BAJF(P)=0a sarkokban 2 bit 1-es, másutt 1 bit 1-es. • BAJF(P) : négy összehasonlítás • „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
Térbeli elemek vágása • Normálvektoros vágás: féltér, téglatest, konvex soklap (poliéder)például: a nézetmező csonkagúlája (6. Fejezet) • 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: XY irányban; síkbeli vetületben
6.5.- … a Szesza folytatása • Láthatóság-takarás; a képpontokban látható felület-elemek • Árnyalás és textúra; a képpontok színe. • Utókezelés: az elkészült kép minőségének javítására.