740 likes | 897 Views
Tehnike pospeševanja upodabljanja v realnem času. Aparaturna grafična oprema je vsakih 6 mesecev 2 x hitrejša ! No, potem bo kmalu dovolj hitra ! N e ! Nikdar ne bomo zadovoljni Ločljivost zaslona : 2000x1000 Reali zem : globalno osvetljevanje
E N D
Tehnike pospeševanja upodabljanja v realnem času
Aparaturna grafična oprema je vsakih 6 mesecev 2 x hitrejša! No, potem bo kmalu dovolj hitra! Ne! Nikdar ne bomo zadovoljni Ločljivost zaslona: 2000x1000 Realizem: globalno osvetljevanje Geometrijska kompleksnost: ni zgornje meje! Motivacija
Veliki modeli:Simulacija rastlinskega ekosistema • 16.7 milionov poligonov (na primer) Deussen et al: Realistic Modeling of Plant Ecosystems
Pregled • Graf scene • Metode izločanja (culling techniques) • Nivoji podrobnosti (LODs) • Plakati (billboards) • Kombiniranje metod • Odkrivanje trkov
notranji vozel= Graf scene • DAG – directed acyclic graph • Simply an n-ary tree without loops • Uporaba: detekcija trkov, hitrejše upodabljanje
Vsebina grafa scene • Listi vsebujejo geometrijo • Vsak vozel vsebuje • Bounding Volume (BV) • kazalce na otroke • možnost transformacije • Primeri BV: krogle, kvadri • BV v vozlu vsebuje vso geometrijo svojega poddrevesa
Primer grafa scene graf scene krogi=BV koren
Move right, Rotate 45° Move up Transformi v grafu scene • V vsak notranji vozel damo transform • Daje možnost instanc in hierarhične animacije
Knee Foot Xform Xform Xform Xform Hip Leg Primer: noga tekača Brez hierahije: ena transformacija C A B Hierarhija:3 transformacije 1 2 3
Tehnike izločanja • “Izločenje" (culling)pomeni "izbiro iz skupine" • V grafičnem okolju: ne obdelujmo podatkov, ki ne prispevajo h končni sliki • "Skupina" (group)je celotna scena, izbira je podmnožica scene, ki je ne bomo upoštevali
Izločanje: pregled • Izločanje zadnjih strani (Backface culling) • Hierarhično izločanje vidnega stožca (Hierarchical view-frustum culling) • Izločanje portalov (Portal culling) • Izločanje podrobnosti (Detail culling) • Izločanje zakritih teles (Occlusion culling)
podrobnosti zakrita telesa Primeri izločanja Vidni stožec zadnje strani portal
Izločanje zadnjih strani • Preprosta tehnika izločanja poligonov, ki si obrnjeni stran • Uporabljamo pri: • zaprtih ploskvah(na primer: krogla) • vedno, ko nočemo videti zadnjih strani (na primer stene v prostoru) • Dve metodi (screen space, eye space) • Kje se to splača? Rasterizer, pa tudi geometrija (kjer opravljamo teste)
Izločanje zadnjih strani • Pogosto implementirano na nivoju API • OpenGL: glCullFace(GL_BACK); • In kako ugotovimo, katere strani so obrnjene nazaj? • Konsistentno moramo številčiti poligone 2 2 0 1 0 obrnjen naprej obrnjen nazaj 1
Kako izločamo zadnje strani 1 2 back 2 eye 1 front 0 0 front back screen space eye space
Izločanje zadnjih strani • Korak1: • Odstranimo vse poligone izven vidnega stožca • Korak 2: • Če je skalarni produkt vektorja gledanja in normale na ploskev > 0, je ploskev obrnjena h gledalcu. • Vse poligone, obrnjene stran, izločimo. • Korak 3: • Vidne strani narišemo v zaporedju, ki daje pravi izgled objektov. • Opomba: • Normala na ploskev = vektorski produkt dveh ko-planarnih robov. • Vektor gledanja poteka od točke normale do gledišča
View-Frustum Culling • Vsako "naravno" skupino primitivov povežemo s preprostim volumnom (na primer: krogla, kvader) • Če je obsegajoči volumen (bounding volume, BV) izven vidnega stožca, je izven tega stožca tudi vsa njegova vsebina (je nevidna) • Za take BV in njihovo vsebino ne izvajamo nadaljne obdelave
Hierarhično izločanje z vidnim stožcen koren Gledišče
Test obsegajoče krogle –1 • Uporabimo gapredodstranjevanjem zadnjih ploskev in s tem izločimo objekte v celoti. • Ta test deluje le, če je predmet razdeljen v konveksna področja. V igrah, kjer imamo enotno (eno samo) mrežo, ne deluje. • Ideja je v tem, da tvorimo obsegajočo kroglo okrog posameznih objektov in transformiramo Twcsredišče vsake krogle ter pogledamo, ali je krogla v celoti izven vidnega stožca
Test obsegajoče krogle – 2 • Če ni nobena od točk p1-p5 v vidnem stožcu, objekt ne more biti viden.Test za točko p(x,y,z) pravi, da je zunaj if ((z > far_z) || (z < near_z) || // z-os (fabs(x) < z)|| //x-z ravnina (fabs(y) < z)) //y-z ravnina { // tocka ni v vidnem polju }
Test obsegajoče krogle – 3 • Opomba: če je le del obsegajoče krogle znotraj vidnega stožca, še ni zanesljivo, da je kakšen del objekta viden (razen, če je objekt krogla, ki povsem zapolni obsegajočo kroglo) • Glede na obliko objekta bi bilo morda bolje uporabiti obsegajoči kvader oziroma paralelopiped.
Celice in portali • Cilj: sprehod skozi arhitektonske modele (stavbe, mesta, katakombe,..) • Pri teh modelih imamo naravno delitev na celice • Sobe, hodniki,alcoves, vdolbine v stenah • Transparentniportalipovezujejo celice • Vrata, vhodi, okna… • Opomba: celice vidijo druge celice le skozi portale
Izločanje portalov Images courtesy of David P. Luebke and Chris Georges • Povprečno: izločenih 20-50% poligonov v pogledu • Pospešitev: lahko tudi 10 kratna
Primer izločanja portalov • Pogled od zgoraj na poslopje • krogi so objekti, ki naj bi bili upodobljeni
Algoritem izločanja portalov • Sceno razdelimo v celice s portali (tvorimo graf) • Za vsak okvir: • Lociramo celico gledalca in vzpostavimo 2D AABB za cel zaslon • * Upodobimo tekočo celico z “VF cull w.r.t. AABB” • Prečkamo (skozi portale) v najbližje celice • Presek AABB in AABB prečkanih portalov • Goto * Pomen AABB
Tipi geometrije • Točke • Črte, žarki in daljice • Krogle, cilindri in stožci • Kvadri, - osno poravnani ali poljubno usmerjeni • AABB: Axis aligned bounding box • OBB: Oriented bounding box • k-dops – oblike, omejene z ravninami fiksnih usmeritev • konveksne, mnogolične mreže – vsako mrežo lahko trianguliramo Konkavne mreže lahko razdelimo v konveksne dele • Množica trikotnikov • Bolj splošne ukrivljene ploskve, ki pa niso pogosto uporabljane v igrah AABB OBB 8-dop
Precenitev portalov • Za poenostavitev: dejanski portal Precenjen portal
Celice in portali • Idea: • Cells form the basic unit of PVS • Create an adjacency graphof cells • Starting with cell containing eyepoint, traverse graph, rendering visible cells • A cell is only visible if it can be seen through a sequence of portals • So cell visibility reduces to testing portal sequences for a line of sight…
Celice in portali A D E F B C G H A E B C D F G H
Celice in portali A D E F B C G H A E B C D F G H
Celice in portali A D E F B C G H A E B C D F G H
Celice in portali A D E F B C G H A E B C D F G H
Celice in portali A D E F B C G H A E B C D F G H
Celice in portali A D E ? F B C G H A E B C D F G ? H
Celice in portali A D E X F B C G H A E B C D F G X H
A D E F B C G H Celice in portali • View-independentsolution: find all cells a particular cell could possibly see: C can only see A, D, E, and H A D E H
A D E F B C G H Celice in portali • View-independentsolution: find all cells a particular cell could possiblysee: H will never see F A D E B C G
Celice in portali • Questions: • How can we detect whether a given cell is visible from a given viewpoint? • How can we detect view-independent visibility between cells? • The key insight: • These problems reduce to eye-portal and portal-portal visibility
Algoritem izločanja portalov • When to exit: • When the current AABB is empty • When we do not have enough time to render a cell (“far away” from the viewer) • Also: mark rendered objects • Which stages benefits? • Geometry, Rasterizer, and Bus • Source (for Performer): http://www.cs.virginia.edu/~luebke/
Izločanje podrobnosti • Idea: objects whose projected BV occupy less than N pixels are culled • This is an approximative algorithm as the things you cull away may actually contribute to the final image • Advantage: trade-off quality/speed • Which stages benefits? • Geometry, Rasterizer, and Bus
Primer izločanja podrobnosti • Ni veliko razlike, vendar 80-400% hitrejše • Uporabno pri premikanju Images courtesy of ABB Robotics Products, created by Ulf Assarsson Izločanje podrobnosti OFF Izločanje podrobnosti ON
Projekcija • Projekcija se razpolovi, če je razdalja podvojena oko
Projekcija • dot(d, (c-v)) is distance along d • p=nr/dot(d, (c-v)) is estimation of projected radius • pp2 is the area d (normalized view direction) (eye) v r c (near plane) n
Izločanje zakritih predmetov • Main idea: Objects that lies completely “behind” another set of objects can be culled • Hard problem to solve efficiently
Primer • Opomba: “Portal Culling” je algoritem za izločanje zakritih predmetov Končna slika
Algoritem izločanja zakritih predmetov Use some kind of occlusion representation OR for each object g do: if( not Occluded(OR ,g)) render(g); update(OR ,g); end; end;
Primer z algoritmom izločanja zakritih predmetov • Obdelujemo od spredaj proti ozadju • Vzdržujemo “horizont zakritosti” (zelen)