190 likes | 305 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
Tárgytér-módszerek: • Tárgytér: valódi távolságok és szögek (normál-vektor!) • SzKR: szem-(kamera-)KR • Nézetmező: csonkagúla • Közelsík (és távolsík) • Mélységvágás • Oldalvágás (2D)
Képtér-módszerek: • Projektív transzformáció után • Nézetmező: téglatest • A vetítősugarak párhuzamosak • Távolságok és szögek torzulása • A Z-vel ||-ak összetartása • De: • A függőlegesség marad • A Z sorrend változatlan (a nézetmezőben) • A „hátranézők” képe hátranéző
6.5. Láthatóság, takarás • A vetítés irányából nézve látható/takart elemek • Drótváz: takart vonalak, vonal darabok eltávolítása • Árnyalt kép: egy képpontban látható felület-elem • A tárgytér csonkagúlájában, vagy • Az NPKR téglában • Időben, és/vagy tárolóban drága: minden lap takarhat minden (más) lapot
Helyzetelemzés • Több darabra széteshet, akár többször is • Három sokszög kölcsönösen takarhatja egymást • Két konkáv sokszög kölcsönösen takarhatja egymást
1. A hátsó lapok ritkítása (egyelés) • A nézőponttól elforduló lapok kiszűrése, a tárgytérbenkb. 50%-ot elhagy • Egy laphoz vezető vetítősugár és a külső normális szöge • n = PiPi-1Pi+1Pi,(ha azórajárás szerint) • v = CPi • nv>0: a lap hátra néznv<0: a lap előre néz • (! A PT lap hátra!)
A hátsó lapok ritkítása (egyelés) • A projektív transzformáció elrontja a szögeket • De a takart lapok az NPKR téglában valóban hátrafelé néznek • Az újra számolt normálvektor hátrafelé néz;z összetevője nz pozitív!
2. Festés a távolság szerinti sorrendben • A képelemeket legkisebb z értékük szerintcsökkenő sorrendbe rendezzük. • A legtávolabbi képelemet festjük először, • Majd előre haladva sorban • A mélységben átfedő elemeket előbb föl kell darabolni
3. A Z-puffer eljárás • Gyakran használják, hardverben is • Az NPKR téglában a vetületi kép: az XY vetület, a vetítősugarak képe párhuzamos, távolság: növekvő Z • Az XY keretben kijelöljük a képpontokat • Keressük mindegyikben az ott látható felület-elemet és annak színét • Az eredmény egy KPP-ben keletkezik
A Z-puffer eljárás (f) • Paramétere: lapok listája az NPKR-ben, vágás után • Adatszerkezet: ZP[0..xmax,0..ymax]; z értékek FP[0..xmax,0..ymax]; lapokra mutatók • Kezdő értékek: ZP[i,j] = zmax, FP[i,j] = a háttér (függöny) –re mutató
A Z-puffer eljárás (f) • foreach S in sokszögLista doforeach pixel [y,x] in S dobegin{1}z := az S sokszög z értéke (y,x)-ben {2}if z < ZP[y,x] thenbegin FP[y,x] := az S-re mutató;{az itt látható}ZP[y,x] := z;{ilyen messze van}end {if};end {foreach pixel}; • {1} az S lap XY dobozában lévő képpontok, amelyek S-ben tényleg benne vannak • {2} z interpolációja az élek mentén y-ban adott y mellett állandó lépésközzel x-ben
A Z-puffer eljárás (f) - gyorsítások • A lapok befoglaló XY-dobozán belüli képpontok • A lapok rendezése min z szerint növekvően ha a következő lap min z-je > ZP[y,x] akkor nem kell folytatni !!! • Mozgó testek, vagy mozgó kamera: újra rendezni • De statikus háttérnek lehet külön ZP-je. • Térfelosztás; BSP • Hardverben is. (>= 4 MB tárolóval)
A Z-puffer eljárás (f) – „kifordítva” • foreach pixel [y,x] doforeach S in sokszögLista dobegin{if min S(x,y) > ZP[x,y]then BREAK; }if pixel in S dobeginz := az S sokszög z értéke (y,x)-ben {2}if z < ZP[y,x] thenbeginFP[y,x] := az S-re mutató;ZP[y,x] := z;end {if z};end; {if pixel}end; {foreach S}{end foreach pixel}
4. Drótvázas kép, takart élek • Paraméter: lapok listája, élek listája • Adatszerkezet: szakaszok listája az élek több darabra eshetnek szét • Eredmény: látható szakaszok listája (kezd: NIL)
Drótvázas kép, takart élek (f) • foreach él EinélekdobeginE -> szakaszok; {az E látható szakaszai maradnak itt}foreach lap Linlapokdobeginforeach szakasz SinszakaszokdoifS nem éle az L –nek thenifL és S dobozában átfedés thenbegin{1}S metszéspontjaiL határaival XY-ban {2}if metszés van thenbegin{3} mélység (z) ellenőrzése;S földarabolásaés helyettesítése a szakaszok-ban;end; {metszés van}end; {L takarhatja S-et}end; {foreach lapok}láthatók := láthatók + szakaszok; {lista beolvasztása}end; {foreach élek}
Drótvázas kép, takart élek (f) • Az E él rákerül a szakaszok listára és itt darabolják a többi lapok • {1} A takarást XY vetületben. S és L doboza átfedi-e egymást • {2} Két szakasz metszéspontja:X=A+t*(B-A) és X=C+s*(D-C); 0<=s,t<=1 ? • {3} z dönti el, hogy melyik van előbbre • konvex lap egy szakaszból 0,1,2 látható darabot hagy • S-et helyettesítjük a látható darabjaival • És nézzük, hogy a többi lap mit csinál a szakaszokkal
5. Kétváltozós függvények képének láthatósága • Párhuzamos vetítés • „Kartonok” • Festés hátulról előre
Kétváltozós függvények képének láthatósága (f) • Torz négyszögháló • Átlókkal háromszögek • Két karton között: háromszög-sáv • Festés sávonként; hátulról előre • (Folytonos árnyalás; később.)
6. BSP • Folyt.köv.