350 likes | 453 Views
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. 2. A szerelőszalag műveletei. 0. Geometriai modell 1. „E lő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.
E N D
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
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ás5. 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églatesta vetítő sugarak párhuzamosaktá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
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 aznQkülső normális szöge: vnQ < 0 : a PQ lap előre néz • u = CS vetítősugár és az nSkülső normális szöge:unS > 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 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 ≤ymaxAdatszerkezet: FP[ p ]: a p-ben látható sokszög (ptr) ZP[ p ]: ennek távolsága Kezdeti értékek:ZP[ p ] = zmax (atégla hátlapja)FP[ p ] = a háttér (függöny) 17
A Z-puffer eljárás (f) foreach lap inLapListadoforeachpinlap-vetületedobegin// 1z :=lap-síkja (p-ben)// 2if z < ZP[ p ] thenbegin// ez közelebb van! FP[ p ] := a lap-ra mutató; // az itt láthatóZP[ p ] := z;// ilyen messzeend {if};end {foreach p és foreach lap}; {1}: a lap XYvetü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
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 zminszerint 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 • mindenp do // minden képpontrabeginminden lap a Lapok Listáján dobeginZP[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) 21
Drótvázas kép, takart élek (olv) • foreach él Edobegin// az élek-listájánE látható-szakaszok; // az E látható szakaszaiforeach lap Ldobegin // a lapok-listájánforeach szakasz Sin 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 szakaszokend; // foreach L lap láthatók := láthatók + látható-szakaszok; // lista beolvasztásaend; // 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.)
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 sorrendminden nézetirányban