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
09-06-03 2
A szerelőszalag műveletei 0. Geometriai modell 1. „Előkészítés” 2. Leképezés: 3. Képkivágás: 4. Láthatóság-takarás 5. Raszter-konverzió 6. Utókezelés
2D: a kép rétegei Képelemek elrendezése rétegekben a rétegek sorrendje – mélység, prioritás Fedés vagy átlátszóság Térképek: hegyek és alföldek, folyók, városok, stb Animációs filmek: változatlan háttér előtt változó alakok
Láthatóság – takarás (3D) Mi van takarásban, mi látszik?
3D: Láthatóság-takarás HLHSR: Hidden Line – Hidden Surface Árnyalt képek: minden képpontban a látható felületelem kiválasztása Vonalas (drótváz-) ábrák: takart vonalrészek eltávolítása Időben, és tárolóban drága: kölcsönös takarások
Tárgytér-módszerek: Tárgytér: valódi távolságok és szögek ( normál-vektor! ) SzKR (kamera) Nézetmező: csonkagúla Közel-sík – távol-sík: mélységvágás Oldalvágás (2D)
Képtér-módszerek: A projektív transzformáció után: a nézetmező: téglatest a vetítő sugarak párhuzamosak távolságok és szögek torzulása de marad: a függőleges síkok állása a Z szerinti sorrend (a közel-sík előtt) a „hátranézők” képe hátranéző
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 csonka-gú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
Módszerek: . . . 09-06-03
1. A hátsó lapok eldobása (egyelés) A nézőtől elforduló lapok kiszűrése; kb. 50% v = CQ vetítősugár és az nQ külső normális szöge: v nQ < 0 : a PQ lap előre néz u = CS vetítősugár és az nS külső normális szöge: u nS > 0: az SR lap hátra néz ! Figyelem: a PT lap hátranéz ! Pi -1 Pi Pi+1 külső normálisa: n = Pi-1Pi Pi+1Pi (CCLW)
A hátsó lapok eltávolítása (egyelés) A projektív transzformáció elrontja a szögeket; de SZKR NPKR a függőleges síkokat így hagyja ! Az előre-, hátranéző lapok az NPKR téglában is ilyenek! Egy normálvektor hátranéz, ha nz pozitív!
2. A „festő algoritmusa” A képelemeket z szerint csökkenő sorrendbe rendezzük. Először a legtávolabbi képelemet festjük Majd előre haladva sorban A mélységben átfedő elemeket előbb föl kell darabolni (Részletek az irodalomban.)
3. A Z-puffer eljárás Gyakran használják, hardverben is Az NPKR téglában a vetületi kép: 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 az XY sík minden P = (x, y) képpontjában az ott látható felület-elemet (és annak színét). Az eredmény egy pufferban keletkezik 09-06-03 15 15
A Z-puffer eljárás Paramétere: LL, a lapok listája az NPKR-ben, vágás után Minden képpontra: p = { x, y }, 0 ≤ x ≤ xmax, 0 ≤ y ≤ ymax Adatszerkezet: FP[ p ]: a p-ben látható sokszög (ptr) ZP[ p ]: ennek távolsága Kezdeti értékek: ZP[ p ] = zmax (a tégla hátlapja) FP[ p ] = a háttér (függöny) 09-06-03 17 17
A Z-puffer eljárás (f) foreach lap in LapLista do foreach p in lap-vetülete do begin // 1 z := lap-síkja (p-ben) // 2 if z < ZP[ p ] then begin // ez közelebb van! FP[ p ] := a lap-ra mutató; // az itt látható ZP[ p ] := z; // ilyen messze end {if}; end {foreach p és foreach lap}; {1}: a lap XY vetületében ? Előbb: az XY-dobozában? és ha igen: a lap-ban (a sokszögben) ? {2} z interpolációja az élek mentén y szerint adott y mellett x szerint (x = c) 18 18
A Z-puffer eljárás (f) - gyorsítások Soká tart! – gyorsítások kellenek A lapok befoglaló XY-dobozán belüli képpontok A lapok rendezése zmin szerint növekvően ha a következő lap zmin -je > ZP[ p ] 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; Nyolcas-fa, kd-fa, BSP-fa Hardverben is. ( ≥ 4 MB tárolóval )
A Z-puffer eljárás (f) – „kifordítva?”-olv minden p do // minden képpontra begin minden lap a Lapok Listáján do begin ZP[p] := a legközelebbi lap z-je end; // minden lap end // minden képpontra
4. Drótvázas kép, takart élek Paraméter: lapok listája, élek listája Adatszerkezet: „szakaszok” listája: az élek több szakaszra eshetnek szét Eredmény: látható szakaszok listája (kezd: NIL) 09-06-03 21 21
Drótvázas kép, takart élek (olv) foreach él E do begin // az élek-listáján E látható-szakaszok; // az E látható szakaszai foreach lap L do begin // a lapok-listáján foreach szakasz S in látható-szakaszok do ----------------------------------------------- az S szakaszt az L lap eltakarhatja, földarabolhatja s ha igen: S helyettesítése látható-szakasz-okra -------------------------------------------------- end // foreach szakaszok end; // foreach L lap láthatók := láthatók + látható-szakaszok; // lista beolvasztása end; // foreach E él
Drótvázas kép, takart élek (olv) Az E él rákerül a szakaszok listára és itt darabolhatja a többi lap A takarás: XY vetületben. S és L doboza átfedi-e egymást Két szakasz metszéspontja: X = A + t · (B - A) 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 nézzük, hogy a többi lap mit csinál a szakaszokkal
5. Kétváltozós függvény képének láthatósága Párhuzamos vetítés „Kartonok” Festés hátulról előre; (a festők algoritmusa)
Kétváltozós függvény képének láthatósága Torz négyszögháló Átlókkal háromszögekre 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.)
09-06-03
Lapok elrendezése mélységben A lapok rendezése zmin szerint Ha ZP[p] < zmin akkor a többi lap már nem kell átlag 10 –szeres gyorsítás Előtér-háttér; ha csak az előtér változik
Térfelosztási módszerek A lapok rendezése (zmin szerint) átlagosan 10 –szeres gyorsítás De a színtér változása elrontja a rendezést! (színtér: lapok és a kamera helyzete, állása) A lapok elrendezése adatszerkezetbe amely a színtér változásakor megmarad és bejárása a láthatóságot (vagy mást) gyorsítja Előtér-háttér, nyolcasfa, kd-fa, BSP-fa „Átjárók”
Nyolcas-fa (oct-tree) A színtér egyenletes felosztása Felező síkok: x-y-z – x-y-z - . . . Minden „tégla” 8 ágra Az ágvégekben: csak egy lap (része) Az egyértelműt nem kell tovább felezni Vagy csak véges számú felosztás Bejárás egyeneseken: rendezett bejárás, szomszédos cellákon át
Kd-fa k-dimenziós felosztás (k-1 dim hiper)-síkokkal A színtér elemeihez igazodva „Kiegyensúlyozottság” egyenletes eloszlás a bejárás érdekében
BSP-fa Binary sub-partition A felület-halmazhoz igazítva Az osztósíkok: felületi síkok Nagy adatszerkezet; a fölépítés ideje ! Gyors bejárás: Láthatósági sorrend minden nézetirányban
09-06-03 35