PEX je orodje za vizualizacijo modelov. Model je karkoli kar si lahko zamislimo - mesto polno zgradb, molekule, scena itd. Za vizualizacijo modela s PEX kreiramo opis le-tega in poljemo ta opis v PEXlib. Model je opisan z uporabo primitivov in njihovih lastnosti. Primitivi so baziène oblike kot sta npr. èrta in poligon. Lastnosti primitivov kontrolirajo zunanjost primitivov kot sta npr. barva in stil èrte. Primitive in lastnosti skupaj imenujemo izhodni ukazi.
Slika 3 prikazuje visoko - nivojski pogled na pravilo PEX-a. PEX vzame izhodne ukaze iz aplikacije, izvri s temi ukazi tevilne operacije in na koncu izraèuna katere toèke na zaslonu (pixli) in v kateri barvi, naj se prikaejo na zaslonu. Primitivi in njihove lastnosti potujejo k PEX-u v zaporedju. Lastnosti se pripiejo primitivom, ki sledijo.
Primer:
Line Color = RED (lastnost)
Line Width = 2.0 (lastnost)
Polyline = (x, y, z), (x, y, z) (primitiv)
PEX si zapomni zadnje nastavitve lastnosti in jih priredi sledeèim primitivom, dokler se lastnost ponovno ne nastavi.
Primitivi so osnovni gredniki za sestavljanje slike PEX. PEX ima 15 primitivov. Primitivi so razdeljeni in so npr.: èrta, polje, tekst in drugi.
Sledi kratek opis vseh primitivov PEX-a.
Polyline: je niz povezav med segmenti z ravnimi èrtami. To je najosnovneji primitiv PEX-a in je uporabljen kot enkratna ravna èrta ali kot niz ravnih èrt.
Polyline Set With Data: je skupina primitivov Polyline, vsak loèen od drugega s svojo barvo ali drugimi lastnostmi.
B-spline Curve: je pogosto uporabljen tip krivulje. Te se navadno imenujejo krivulje NURB (Non-Uniform-Rational B-spline).
Fill Area: je ploski (raven) mnogokotnik (poligon).
Fill Area Set: je skupina loèenih ali obkroenih poligonov, ki so vsi v eni ravnini. Obkroeni poligoni loèujejo luknje in izseke.
Fill Area Set With Data: je primitiv z enakimi karakteristikami kot Fill Area Set, vsebuje pa dodatne doloèitve za barvo, orientacijo in normalni vektor.
Set of Fill Area Sets With Data: je najbolj sploen èlan druine primitivov polj. Sestavljen je iz skupine primitivov polj s podatki, ki leijo vsak na svoji ravnini. Uporaben je za predstavitev povrin ali polnih objektov.
Triangle Strip With Data: je niz povezanih trikotnih poligonov (povrin).
Quadrilateral Mesh With Data: je niz povezanih tirikotnih poligonov.
B-spline Surface: je uporaben tip ukrivljenih povrin. Ponavadi se imenujejo povrine NURBS (Non-Uniform-Rational B-spline Surface).
Text: je niz znakov. Niz je prikazan na 3D povrini doloèenega primitiva.
Annotation Text: je niz znakov, ki so vedno prikazani v ravnini zaslona. To pomeni, da jih je mono brati, èeprav gledamo model iz razliènih kotov. Annotation text (tekst kot opomba) je lahko s èrto povezan z doloèeno toèko v modelu. Ta primitiv je uporaben za opombe k slikam.
Marker: je skupina simbolov, narisanih na doloèenem mestu. Ta primitiv ponavadi ponazarja zbirko toèk, kot podatek o toèkah na grafu.
Cell Array in Extended Cell Array: je mrea kvadratov ali paralelogramov za prikaz rasteriziranih podob kot so bitmape.
Generalized Drawing Primitive (GDP): ni posebno doloèen primitiv, ampak mehanizem, s katerim lahko PEX izvedbo razirimo z novimi osnovnimi primitivi. To je lahko krogla, krog, kvader itd., ali katerikoli drug primitiv, ki ga PEX e ne doloèa.
Ko delamo primitiv, podamo informacijo, ki opisuje primer primitiva. Ta informacija je pogosto le geometrija primitiva, veèina primitivov pa potrebuje dodatne podatke ali pa tudi neobvezne podatke, kot je naprimer barva povrine.
Obstajajo dvo in trodimenzionalne oblike veèine primitivov PEX. Imena funkcij PEX za 2D in 3D grafiko se loèijo samo po konènici 2D za dvodimenzionalne primitive. Primer je funkcija za kreacijo polyline 3D, ki je PEXPolyline, funkcija za polyline 2D pa je PEXPolyline2D.
Vsi primitivi PEX in tudi 2D oblike se za PEX smatrajo kot trodimenzionalne, èeprav leijo v 2D ravnini. Oblike 2D so le skrajane verzije primitivov 3D, s koordinato z naravnano na niè.
Lastnosti kontrolirajo zunanjost primitivov. Vsaka kategorija primitivov ima svoje lastnosti. Omenili smo e dve lastnosti, ki se nanaata na èrte: barva in debelina èrte. Ti dve lastnosti doloèata tudi druge èrtne primitive. Primitivi polj imajo lastnosti: barvo, notranji stil, lastnosti odboja svetlobe in druge. Nekateri primitivi polj imajo lahko razliène vrednosti za sprednjo in zadnjo stran.
Obstajajo tudi lastnosti, ki se nanaajo na vse primitive.
Spustimo se v notranjost katle imenovane "PEX" na sliki 3. Tu najdemo "renderer" (prikazovalnik) in "structure store" (baza podatkov za strukture). Z imenom prikazovalnik (renderer) je oznaèen del, ki izvaja delo okrog prenosa podatkov o primitivih in njihovih lastnostih na zaslon. Baza podatkov za strukture (structure store) pa je grafièna baza podatkov, kjer so lahko shranjeni primitivi in njihove lastnosti za kasneji prikaz. Oba prikazovalnik (renderer) in baza podatkov (structure store) sta del strenika X.
Vsi primitivi in lastnosti gredo obvezno skozi renderer. Ko poljemo izhodni ukaz (primitiv ali lastnost primitiva) PEX-u, ga lahko posredujemo direktno prikazovalniku ali pa ga shranimo v bazo podatkov. V drugem primeru lahko vedno ukaemo prikazovalniku naj prebere izhodni ukaz iz baze podatkov in ga prikae na zaslon.
Slika 4 prikazuje notranjost prikazovalnika. V njem je veè delov: vod seznama stanja (pipeline state list), vod skladnosti (pipeline context), grafièni vod (graphics pipeline), tabele stanja (lookup tables) in modul, ki bere izhodne ukaze iz baze podatkov o strukturah in jih prenaa v prikazovalnik.
Vod skladnosti (pipeline context) hrani zaèetne vrednosti za vse lastnosti. Ko se priène prikazovanje, se te lastnosti prekopirajo v vod seznama stanja (pipeline state list), ki obdri tekoèe veljavne vrednosti lastnosti. Vod seznama stanja (pipeline state list) se spremeni vedno, ko prikazovalnik sprejme zunanji ukaz za doloèeno lastnost. Vrednost za lastnost, ki je podana v ukazu nadomesti tekoèo vrednost v vodu seznama stanja (pipeline state list). Vsi primitivi, ki so naknadno poslani prikazovalniku in uporablajo prej doloèene lastnosti vsebujejo nove vrednosti za te lastnosti.
Grafièni vod (graphics pipeline) preoblikuje primitive na osnovi podane geometrije v koordinate pikslov in doloèi barvo posameznega piksla. Preraèuna se uèinek osvetlitve in senèeja ter ostale barvne in geometriène transformacije, ki so mone v PEX-u.
tabele stanja (lookup tables) ohranjajo parametre uporabljene v grafiènem vodu (graphics pipeline), kot so smer pogleda in viri svetlobe. Predvidene so tudi druge monosti za veè drugih lastnosti.
Ko poljemo primitive prikazovalniku, pravimo da ga prikazujemo (rendering). Dejansko prikazovalnik izvruje prikazovanje, mi le povemo kaj naj prikae. V tem èasu se narie sestav slike. Sestav (frame) je izraz za zaporedje izhodnih ukazov. Sestav lahko opisuje statièno podobo, posamezen izsek filma ali pa je lahko nekaken interaktiven sestav, kjer lahko uporabnik ukae, da se sliki doda delèek za delèkom.
Na zaèetku sestava povemo prikazovalniku, da nameravamo zaèeti prikazovati (begin rendering) in doloèimo okno v katero naj prikazuje sliko. Sledi poiljanje primitiva in njegovih lastnosti prikazovalniku, ki le-te prikae v doloèenem oknu na zaslonu. Ko je sestav konèan povemo prikazovalniku, da je prikazovanje konèano (end rendering) in prikazovalnik se preprièa, èe slika prikazuje vse primitive, ki smo jih poslali.
Kasneji sestavi se kreirajo z novim zaèetkom prikazovanja. Èe je grafièna strojna oprema dovolj hitra, deluje zaporedje sestavov kot film in tako lahko vkljuèimo prikazovanje gibajoèih se podob.
Ko se prikazovanje zaène so vse lastnosti v vodu seznama stanja naravnane na vrednosti v vodu skladnosti. Glavni namen voda skladnosti je, da obdri zaèetne vrednosti prikazovalnika. Pred zaèetkom prikazovanja lahko naravnamo zaèetne vrednosti lastnosti v vodu skladnosti s tem, da doloèimo zaèetne vrednosti prikazovalnika.
Ko lastnosti vstopijo v prikazovalnik, povzroèijo da ta spremeni ustrezne vrednosti v vodu seznama stanja (pipeline state list). To zadosti njihovemu namenu.
Ko primitiv vstopi v grafièni vod (graphics pipeline) se vse veljavne vrednosti, vseh lastnosti, ki se nanaajo na ta primitiv, z njimi poveejo. Primitivi vstopijo v povezan prostor (binding stage) brez doloèenih vrednosti za lastnosti, zapustijo pa ga z doloèenimi vrednostmi za uporabljene lastnosti. Doloèene vrednosti so tiste, ki so veljavne na vodu seznama stanja (pipeline state list). Primitivi se potem predajo grafiènemu vodu (graphics pipeline), kjer PEX uporabi lastnosti in narie sliko.
Grafièni vod (graphics pipeline) je del, kjer se odvija glavno delo. Tukaj so zbrani skupaj vsi primitivi, ki sestavjajo sliko ali sceno. Uporabijo se svetlobni viri in izraèuna se njihov vpliv na sliko. Primitivi se transformirajajo, tako da jih vidimo pod izbranim kotom. Izraèuna se vpliv globine (depth cueing), ki pomeni spremembo barve primitiva glede na oddaljenost od opazovalca. Izvri se senèenje in na koncu so doloèene toèke na zaslonu (pixli) in njihove barve.
Grafièni vod (graphics pipeline) je sestavljen iz dveh vzporednih vodov: transformacijski vod (transformation pipeline) in prikazovalni vod (rendering pipeline). Glej sliko 5. Transformacijski vod se ukvarja z geometrijo primitivov, prikazovalni pa z njihovimi barvami.
Preden se primitiv prikae, gre skozi veè geometrijskih transformacij. Te doloèajo konèni poloaj in orientacijo primitiva kot ga elimo videti. Serija teh transformacij se imenuje transformacijski vod (transformation pipeline). Glej sliko 6. Vsak del voda izvri doloèeno nalogo.
Stopnja modeliranja (modeling stage): transformira vse primitive v sploni koordinatni sistem.
Stopnja pogleda (viewing stage): orientira model glede na opazovalca in izbere dele modela, ki se vidijo.
Stopnja naèrta (device stage): pretvori primitive v okenske koordinate in pozicionira podobo v okno X.
Veèina modelov je sestavljena iz veèih delov. Navadno je laje kreirati vsak del v svojem koordinatnem sistemu. PEX to omogoèa. Deli so lahko definirani v svojem lokalnem koordinatnem sistemu in so potem postavljeni v skupni koordinatni sistem. Ta transformacija je naloga stopnje modeliranja.
Skupni koordinatni sistem imenujemo sploni koordinatni sistem (world coordinates WC). Koordinatni sistemi posameznih delov modela se imenujejo koordinatni sistem modela (modeling coordinate MC). Geometrijo posameznih delov modela doloèimo v koordinatnem sistemu modela (MC). PEX pa jih s transformacijami prevede v sploni koordinatni sistem (WC). Vsak del je definiran v svojem koordinatnem sistemu modela (MC). Transformacije modela premaknejo vsako komponento na svoje mesto v celotnem modelu in jo skalirajo do primerne velikosti.
Transformacije modela so poslane prikazovalniku prav tako kot lastnosti primitivov. V bistvu so to posebne lastnosti, ki se nanaajo na vse primitive neglede na vrsto. Za kreiranje transformacij modela, PEXlib predvideva tevilne uporabne funkcije. Te funkcije gradijo transformacije iz znanih parametrov, kot so koti rotacije, faktor skaliranja in premiki.
Koordinatni sistem modela (MC) in sploni koordinatni sistem (WC) sta lahko skladna. Toèka (x, y, z) ima v tem primeru enake vrednosti v obeh koordinatnih sistemih. Transformacije modela sedaj ne uporabimo. Primitive kreiramo kar v splonem koordinatnem sistemu (WC).
V stopnji pogleda se model projecira tako, da se pokae v doloèenem pogledu, kot ga vidimo iz doloèenega poloaja. Glej sliko 7. Stopnja pogleda tudi doloèa dele modela, ki bodo prikazani na zaslonu. Model lahko npr. zelo poveèamo, kot da bi ga gledali od blizu ali pa pomanjamo, kot bi ga videli od daleè. Pogled kontroliramo tako, da doloèimo transformacije pogleda (viewing transforms) in prisekane povrine (cliping planes). Transformacije pogleda kaejo kaken je na relativen poloaj glede na model in kdaj naj se model prikae v perspektivi in kdaj ne. Prisekane ravnine doloèajo kateri del modela hoèemo videti in kateri del naj bo "odrezan".
Transformacije pogleda kreiramo s funkcijami PEXlib. Parametri, ki jih doloèimo, opisujejo, kako smo postavljeni ob gledanju modela, smer pogleda, kateri del je spredaj, kako daleè smo in druge informacije.
Definicija pogleda kontrolira tabela pogleda (view table) skupaj z renderer-jem. Taka tabela lahko vsebuje veliko predstavljenih pogledov (view representations), ki so doloèeni v aplikaciji. Izbrani pogled za doloèen primitiv je indeks pogleda (view index), lastnost, ki se nanaa na vse primitive.
Model lahko hkrati prikaemo z veè pogledi. PEX omogoèa, da razdelimo izhodno okno na dele, ki prikazujejo posamezne poglede. Tako lahko hkrati vidimo prednji, zadnji in stranski pogled na model, model v celoti in e poveèan posamezni detajl.
Deli zaslona, kjer so prikazani posamezni pogledi, so doloèeni z normaliziranim projekcijskim koordinatnim sistemom (normalized projection coordinates NPC). NPC koordinatni sisiem ima enotske mere, vsi trije robovi imajo dolino 1, s tem, da je ravnina x-y ravnina zaslona. To je prikladen koordinaten sistem za ureditev pogledov.
Stopnja naèrta doloèa poloaj slike v oknu X. Posamezni del NPC-ja, ki ga izberemo za prikaz se imenuje podprostor (subvolume). Pravokoten prostor v oknu X, kjer bo prikazan doloèen pogled pa se imenuje prikazni prostor (viewport). Ta lahko zavzame celotno okno ali samo del njega. Podprostor (subvolume) v koordinatah NPC se transformira v prikazni prostor (viewport) s transformacijo imenovano subvolume - to - viewport transformacija.
Prikazni prostor (viewport) ni podan v koordinatah okna, ampak v koordinatnem sistemu naèrta (device coordinates DC). Enote koordinatnega sistema naèrta so enake kot enote okna X. To so ponavadi toèke na zaslonu (pixli). Razlika pa je v izhodièu, ki je pri koordinatnem sistemu naèrta spodaj levo (izhodièe za koordinatni sistem okna je zgoraj levo). Koordinata x v koordinatnem sistemu naèrta gre v desno, koordinata y pa navzgor. Koordinatni sistem naèrta ima izhodièe (0, 0) v spodnjem levem kotu okna in ne v spodnji levi toèki na zaslonu (pixlu).
Dejansko je koordinatni sistem naèrta 3D, toda tretja dimenzija pride v veljavo samo pri operacijah odstranitve nevidnih robov in ploskev.
Slika 8 prikazuje potek transformacij skozi vse tri stopnje transformacijskega voda in konèen rezultat - konèna slika v oknu X.
V drugem delu grafiènega voda je prikazovalni vod, ki doloèa barve, ki bodo uporabljene za prikaz primitiva. Barvo primitiva doloèa veè faktorjev. Tako kot v realnosti so to: izvor svetlobe, lega objekta, odboj svetlobe, sence in globina v prostoru. Vse te dejavnike PEX upoteva v prikazovalnem vodu, kjer se barva, ki jo doloèimo primitivu preobrazi v barvo primitiva, ki bo prikazana na zaslonu.
Slika 9 prikazuje potek dela v prikazovalnem vodu. Primitivi v prikazovalni vod vstopajo z barvo, ki smo jim jo dodelili in se imenuje dejanska barva (intrinsic color). Preobrazba barv v prikazovalnem vodu poteka preko tirih stopenj: osvetlevanje (lighting), senèenje (shading), globina v prostoru (depth cueing) in usklajevanje barv (color approximation). Vsaka stopnja se izvaja in kontrolira loèeno.
Osvetlevanje preraèunava vpliv sija izvora svetlobe na objekt. Doloèeno je lahko veè izvorov svetlobe (light surces), ki osvetljujejo model iz razliènih pozicij in z razlièno jakostjo. PEX doloèi zdruen vpliv vseh.
Definicije izvorov svetlobe so shranjene v tabeli svetlobe (light table) prikazovalnika. Izvori svetlobe se lahko tekom prikazovanja vkljuèijo ali ugasnejo z nastavitvijo lastnosti stanje osvetlitve (light surce state).
Osvetlevanje upoteva razliène lastnosti predmetov glede odboja svetlobe (jabolko npr. drugaèe odbija svetlobo kot npr. tenika ogica). Sij, motnost in jasnost predmeta so doloèene kot odbojne lastnosti (reflection attributes). To so monosti, ki jih lahko nastavimo in s tem doloèimo kako in pod kaknim kotom primitiv odbija svetlobo.
Med osvetlevanjem se za preraèunavanje odbite barve (reflected color) toèk na primitivu upotevajo: geometrija primitiva, barva, odbojne lastnosti in aktivni izvori svetlobe. Odbita barva je posredovana naslednji stopnji v prikazovalnem vodu.
Preuèevanje uèinkov osvetljevanja je zahtevno delo. Redko se izraèuna v vsaki toèki primitiva, kar bi bilo idealno. Ponavadi se izraèuna le za diskretne toèke, ki so veèinoma robne (na meji) toèke primitiva. Odbojne barve za notranje toèke se kombinirajo na osnovi robnih toèk. Barva v toèki, ki lei v notranjosti npr. trikotnika je pretehtana srednja vrednost barv v robnih toèkah. Barvna interpolacija (color intrpolation) se izvaja v stopnji senèenja (shading stage) prikazovalnega voda. Senèenje in interpolacija imata v PEX-u enak pomen.
Pogosto osvetljevanje sploh ni izvedeno. Toèke primitiva imajo kljub temu podane razliène barve. Senèenje kljub odsotnosti osvetljevanja zgladi te razlike v barvah po celem primitivu.
Uèinek atmosfere in oddaljenost od primitiva upoteva stopnja globine v prostoru (depth cueing stage). Svetloba na poti od objekta do naih oèi izgubi na jakosti, kar je posledica prahu, dima in megle. Nekateri od the faktorjev resnièno spremenijo odtenek barve ali senco odbite svetlobe. Globina v prostoru (depth cueing) simulira te uèinke in prilagodi barvo primitiva glede na globino - relativno oddaljenost od gledalca.
Barve primitivov doloèamo s kombinacijami barv RGB (Red, Green, Blue) in jih je lahko neskonèno mnogo. Zaslon vseh teh barv ne more prikazati, zato je potrebno te barve uskladiti z monostimi zaslona. To je naloga stopnje usklajevanja barv.
Povedati moramo kako se medsebojno prepletata transformacijski in prikazovalni vod prikazovalnika. Doloèiti je potrebno koordinatni sistem, ki se uporablja na doloèeni stopnji prikazovalnega voda. Osvetljevanje vpliva na celoten model, zato je najbolj primerno, da se osvetljevanje izvaja v splonem koordinatnem sistemu WC, kjer so vse komponente modela zbrane v konèni sceni. Tako so izvori svetlobe podani v splonem koordinatnem sistemu WC in njihov vpliv je upotevan po stopnji modeliranja transformacijskega voda. Globina prostora se izvaja v normaliziranem projekcijskem koordinatnem sistemu NPC, kjer je model orientiran na smer pogleda. V NPC koordinatnem sistemu je os z pravokotna na zaslon in tako se globina lahko meri direktno kot razlika na osi z.
Slika 10 prikazuje vpliv prikazovalnega voda na transformacijski vod. Osvetlevanje in senèenje je izvreno po stopnji modeliranja, globina prostora se upoteva po stopnji pogleda, ko so primitivi v koordinatnem sistemu NPC. Usklajevanje barv ni odvisno od nobene grafiène znaèilnosti primitiva, ampak le od barv. Izvaja se po stopnji naèrta.
Kadar oblikovalski programi prikazujejo eno in isto geometrijo predmeta, ki jo gledamo iz razliènih smeri ali ji spreminjamo le nekatere lastnosti, je bolje shraniti geometrijo predmeta v sam strenik. S tem se izognemo potratnemu kontinuiranemu poiljanju geometrije iz programa v strenik. Zato obstajajo PEX strukture.
Slika 11 prikazuje PEX strukturo shranjeno ob prikazovalniku. Shranjena struktura v grafièni bazi podatkov lahko hrani podatke o primitivih in njihovih lastnostih za kasneje prikazovanje na zaslon. To nam omogoèa doloèiti opis predmeta in ga prikazovati vedno znova brez ponovnega doloèanja opisa. Ko doloèimo primitiv in ga shranimo v strukturo, ga lahko z enim samim ukazom, ki ga poljemo prikazovalniku, ponovno prikaemo.
Strukture se kreirajo s funkcijo PEXCreateStructure. Ta funkcija vrne pokazatelj strukture (structure identifier), ki ga kasneje uporabimo za naslavljanje strukture.
Grafièna baza podatkov struktur je sestavljena iz enot imenovanih strukture. Struktura je preprosta baza podatkov za zbirke primitivov in njihovih lastnosti. Strukture se uporabljajo za zdruevanje sorodnih primitivov in njihovih lastnosti. Struktura navadno vsebuje vse, kar je potrebno za opis enega dela modela (npr. avtomobilskega kolesa).
Kreiramo lahko veè struktur in vsaka lahko vsebuje veèje tevilo primitivov in njihovih lastnosti.
Ko je struktura doloèena lahko ukaemo prikazovalniku, da jo prikae. Posredovanje struktur prikazovalniku je lahko posamièno, poljemo pa lahko tudi vse naenkrat in so vse naenkrat tudi prikazane.
Vsak posamezni primitiv ali lastnost v strukturi imenujemo element strukture (structure element) ali skrajano element. Element je najmanji del strukture. Strukturo najprej kreiramo, potem ji lahko dodajamo elemente. Primer je struktura s tremi elementi. Prva dva nastavita debelino in tip èrte, tretji doloèi èrto (polyline).
Ko strukturo poljemo prikazovalniku, jo ta obdela element za elementom. Primitive in njihove lastnosti obravnava, kot da bi bili poslani direktno. Èe je element lastnost, prikazovalnik nastavi vrednost te lastnosti v vodu seznama stanja (pipeline state list) in èe je element primitiv, ga prikazovalnik narie. Ta proces postopnega izvajanja navodil imenujemo obdelava (traversal).
Opazimo lahko, da je struktura majhen program, ki je, ko je struktura prikazana, preveden s PEX-om. Kot primer prikazovalnik najprej nastavi vrednost ustrezno debelini èrte, ki je podana v prvem elementu, nato nastavi tip èrte na DASHED (prekinjeno) in potem prikae èrto, ki je shranjena v tretjem elementu.
Podobno kot v vsakem programu je pomembna ureditev (zaporedje) elementov, ker se le-ti izvrujejo zaporedoma. Razlièna ureditev lahko da razlièen rezultat.
Strukturo, ki je kreirana in doloèena, lahko pozneje ponovno preuredimo. Elemente v strukturi lahko nadomestimo, jih izbriemo ali dodajamo nove. Tako lahko zelo enostavno spreminjamo lastnosti primitiva kot so npr. barva, itd. ali nadomestimo celoten primitiv z novim.
Za urejanje strukture moramo najprej nastaviti kazalec elementa (element pointer), ki deluje podobno kot kurzor v urejevalniku besedila. Ko je le-ta nastavljen, povemo PEX-u, kaj naj na tem mestu naredi (doda nov element za kazalcem, zamenja element ali ga izbrie).
Strukture imajo e druge prednosti. Klièejo lahko druge strukture, kot lahko funkcije v programu klièejo druge funkcije. PEX strukture lahko izvajajo druge strukture. V kombinaciji s transformacijami modela, izvajanje struktur omogoèa prikaz grafiènega modela. Oblikujemo lahko npr. avto s kreiranjem strukture "telo" in klicanjem posamezne strukture "kolo" tirikrat, vsakiè z drugim poloajem.
Izvajanje struktur nam omogoèa modeliranje predmetov s hierarhièno odvisnostjo (oèe - otrok - vnuk itd.). Primer je telo - roka - zapestje - prst hierarhija, kjer je poloaj posameznega dela odvisen od poloaja starevskega predmeta. V PEX-u se tako grafièno modeliranje imenuje mreenje strukture (structure networks).
Mreenje strukture se oblikuje z izvajanjem elementov strukture (execute structure elements). Izvajanje elementa strukture ukae: "Obdelaj drugo strukturo na tem mestu!" in to izvri. Ko naleti potek programa na tak element, se obdelava tekoèe strukture odloi in se zaène obdelava strukture, ki je prila vmes. Po konèani obdelavi nove strukture PEX nadaljuje z obdelavo prvotne strukture na mestu kjer jo je prekinil.
Tako program prehaja z izvajanjem z ene strukture na drugo. Oblikuje se mrea struktur, pri èemer ni nikakrnih omejitev glede globine strukture, razen omejitve spomina.
Slika 12 prikazuje predpostavljeno mreo strukture in pot obdelave. Mrea vsebuje pet struktur. Najvija struktura se imenuje izvorna (root) struktura. Vse ostale strukture imajo svojega prednika (ancestor) - strukturo, ki je v hierarhiji nad njo in vse razen zadnje v mrei imajo potomca (descendants).
Strukturam ni dovoljeno izvajati same sebe ali njihovih prednikov. To bi pomenilo, da je mrea povratna. Veèinoma to pomeni zaplet v neskonèno zanko.
Za prikazovanje mree strukture poklièemo funkcijo PEXRenderNetwork. Ta funkcija izvri funkcijo PEXBeginRendering, obdela strukturo in izvri funkcijo PEXEndRendering. Prikazovalnik torej prebere obdelavo strukture in prikae mreo strukture.
Izvajane strukture od svojih prednikov podedujejo veljavne vrednosti lastnosti iz voda seznama stanja (pipeline state list). Element strukture v izvajani strukturi lahko spremeni vrednost za katerokoli lastnost. Ko je izvajanje konèano, struktura vrne vrednost lastnosti na prvotno stanje. Spremembe lastnosti, ki so se vzpostavile med izvajanjem strukture "potomca", se tako ne prenaajo na "prednika".
Kot smo videli v opisu stanja pogleda in prikazovalnem vodu, PEX uporablja veè tabel. Vse tabele v PEX-u so kreirane in nastavljene podobno ter so v bistvu primeri za objekte imenovane tabele stanja (lookup table).
Tabele stanja hranijo bistvene lastnosti z nekaterimi izjemami, kot so npr. lastnosti, ki ne morejo biti poslane prikazovalniku kot zunanji ukazi. Doloèene lastnosti so shranjene v tabelah stanja in niso poslane direktno prikazovalniku. Do teh informacij pride renderer preko poslanega izhodnega ukaza, ki se imenuje indeks tabele stanja (lookup table index). Ta indeks pove s katerega mesta v tabeli stanja naj se vzame doloèena informacija npr. vrednost za doloèeno lastnost.
Nekatere PEX tabele stanja smo e spoznali. PEX omogoèa nastavljanje vseh vrednosti v teh tabelah, predvidene pa so tudi splone zaèetne vrednosti.
Tabele pogleda so povezane s prikazovalnikom. Posameznemu prikazovalniku lahko doloèimo lasten niz tabel, lahko pa si tudi veè prikazovalnikov na istem streniku deli med seboj iste tabele stanja.
Sveenj tabel se uporablja za doloèanje svenjev lastnosti (attribute bundles). To so lastnosti, ki so kakorkoli povezane. Doloèimo lahko, da prikazovalnik uporabi lastnosti iz doloèenega svenja in ne iz voda seznama stanja. Posamezni sveenj je lahko sestavljen iz veè svenjev (podsvenjev). Vsak sveenj doloèa doloèeno kombinacijo lastnosti (npr. iroka rdeèa èrta), ki ima v programu poseben pomen.
Med prikazovanjem se izbere sveenj na osnovi enega samega indeksa. Indeks doloèa kateri sveenj naj se uporabi za primitive, ki sledijo. Lastnosti teh primitivov bodo izbrane iz doloèenega svenja in ne iz voda seznama stanja. Tako lahko izberemo cel sveenj lastnosti z enim samim indeksom.