2010. június 7., hétfő

DirectX-ről érthetően 1-2.

Képzeld azt, hogy a számítógéped egy szendvics! A hardver az egyik szelet kenyér, a szoftver a másik. Ami a két szelet közé megy „tölteléknek”, azok a driverek és a programozási felületek (API). Ez a töltelék végzi a fordítást a hardver és a szoftver között. Így a programozónak nem kell a programját mindegyik hardverre külön-külön megírnia, ehelyett írhatja az operációs rendszer számára, amiben a driverek majd lefordítják azt a hardvernek. A programot írhatja egy programozási felületre (API) is, aminek ugyanez a szerepe. Ennek az az előnye, hogy a programozónak nem kell az összes eszközt ismernie, ami a piacon kapható; a driverei mindent lefordítanak, hogy a hardverek „megértsék”.
A DirectX és az OpenGL jelenleg a legtöbbet használt API a 3D-s programoknál. A játékot nem egyetlen videokártyára írják, hanem a DirectX, vagy az OpenGL parancsait használva, ami majd átkonvertálja a videokártyának a parancsokat.
A DirectX-nek már sok változata van. Ha azt mondjuk, hogy egy játék DX9-es, akkor ez azt jelenti, hogy a játék a DirectX 9 utasításait használja. Ahhoz, hogy játszani tudj ezzel a játékkal, szükséged van a DirectX 9-re és egy azt támogató videokártyára. Amennyiben neked csak DirectX 8-as utasításokat ismerő videokártyád van és a játék olyan utasítást akar végrehajtatni, amit a videokártyád nem ért, akkor megpróbálja azt emulálni. Ez természetesen nem tökéletes, így a látványvilág nem lesz olyan szép, mintha egy DirectX 9-es videokártyával játszanád.
Ajánlott, hogy mindig a legfrissebb DirectX legyen a gépeden. Ezt letöltheted a Microsoft oldaláról. Figyelj azonban, mert amit elsőként felkínál letöltésre, azt azonnal telepíteni is akarja! Ha más számítógépre akarod telepíteni a DirectX-et, akkor a lap alján található redistributable változatot kell letöltened. Ha szeretnéd megtudni, hogy milyen DirectX verzió van a gépeden a következőket kell tenned: Start menü : Futtatás : DxDiag Ha felugrik egy kérdés, válaszolj nemet! Majd a főablakban a System Info rész legalján lesz kiírva a DirectX Version.
Az előzőekben leírtuk, hogy mi az a DirectX és milyen verziói vannak, azonban azt nem, hogy ezek között mik a különbségek. Tehát mi teszi jobbá a DirectX 7-et a DirectX 6-nál?
Általában azért adnak ki új változatot, hogy a rendszer felismerje az új grafikus kártyák erőforrásait, tehát képes legyen ezeket kihasználni, ezzel növelve a 3D-s teljesítményt és javítva a képi világot. A DirectX 6 fő innovációja a bump mapping bevezetése volt. Ezzel a technológiával lehetséges egyenetlen felületeket létrehozni a tárgyakon, így növelve a valósághűséget. A GeForce 256 óta a grafikus chipek azzal is könnyítik a CPU munkáját, hogy a különböző tárgyak generálásához szükséges számítások egy részét a GPU végzi a processzor helyett. Ez a transformation and lighting technológia, melyet T&L-ként rövidítünk. A DirectX 7 azért lett kiadva, hogy ezeket funkciókat kiaknázza. A DirectX 7-es kártyák: GeForce 256, GeForce 2, GeForce 4 MX, GeForce PCX 4300, Radeon 7000, Radeon 7200 és Radeon 7500.



A DirectX 8-al érkeztek a ma jól ismert Pixel és Vertex Shader effektek, még valósághűbbé téve a 3D-s képeket: a 3D-s objektumok sok száz, vagy ezer poligonból (háromszög, vagy négyszög) épülnek fel. Ezekre „húzzák” rá a textúrákat, megalkotva így a 3D-s elemeket. A Vertex Shaderrel a program képes megváltoztatni minden egyes poligon minden egyes vertexét (vertex: a poligonok csúcspontja). A Pixel Shader programmal lehetséges minden poligon minden pixelét (azaz képpontját) megváltoztatni. Amíg ezek a programok meg nem jelentek ez nem volt lehetséges, tehát csak úgy lehetett a vertexeken és a pixeleken változtatni, hogy az az egész poligonra kihatott.
A DirectX 8.0-val a Pixel Shaderbe egyszerre 12 utasítást lehetett programozni, ám ez a limit nagyon alacsony volt, így hamarosan megjelent a DX 8.1, ami a határt 22 utasításra emelte. Az ezt támogató kártyák: GeForce 3, GeForce 4 Ti, Radeon 8500, Radeon 9000, Radeon 9100, Radeon 9200, és Radeon 9250.
A képi világ további javításának érdekében jelent meg a DirectX 9.0, amivel már 92 utasítást lehetett programozni a Pixel Shaderbe. Minden GeForce FX kártya és a Radeon 9500-as szériától egészen az X850XT-ig DirectX 9.0-s. A DirectX 9.0c pedig 65535-re növelte a Pixel Shaderbe programozható utasítások számát. Ezt a GeForce 6, GeForce 7 és Radeon X1*** sorozatú kártyák használják ki (valamint ennél újabb társaik).

Kolombusz | 2006-11-22

2010. június 2., szerda

Pozíció és irány megadása virtuális világban

Pozicionálni valamit egy abszolút koordináta-rendszerben könnyű. Minden objektumnak három koordinátája van. Ezek gyakran a vektornak nevezett adattípusban tárolódnak, ez fogalom egymáshoz tartozó számokat takar. Általában a világ minden objektumát ennek középpontja definiálja, és felszínének minden koordinátája saját (0,0,0)-s pontjához viszonyul. Ez rettentő nagy segítség az objektum forgatásánál, úgyhogy erősen ajánlom használatát. Aztán az objektumnak magának is van egy pozíciója a térben. Az objektum megrajzolásánál pontjainak koordinátái hozzáadódnak a pozíciójához. Egy relatív koordináta-rendszerben a pozíció tehát nagyjából egyenletes. A nézőpont pozíciója mindig a (0,0,0) vektor. A többi objektum ugyanolyan típusú rendszert követ, abszolút koordináta-rendszer.

Irány megadása a virtuális világban

Az irány definiálása elég trükkös lehet. Az elkövetkezőkben gyakran cserélgetek majd pár fogalmat. A háromdimenziós térben az irányt két és fél szög definiálja. "Kettő és fél?" - kérdezheted. Nos, majdnem mindenki hármat használ, mert kettő mégsem elég, de ha nagyon műszakiak akarunk lenni, az egyik szög csak nullától száznyolcvan fokig terjed (nullától pi/2-ig radiánban). De feltételezve ezt, venni kell egy irányt a nézetnek. Én részemről előnyben részesítem, ha az x tengely a képernyő közepén balról jobbra halad. Szintén szeretem, ha az y tengely a képernyő aljáról felfelé, illetve ha a z tengely tőlem a képernyő belseje felé tart. A plusz-, mínuszjelek és az utánrendelés bitjének trükkös kezelésével elérhető, hogy az összes itteni matematikai művelet módosítható a koordináta-rendszer néhány irányának tükrözésére. Néhányan szeretik, ha az y tengely a képernyő belseje felé, a z tengely pedig függőlegesen nő. Ez csupán attól függ, hogyan akarod definiálni a dolgot.
Feltételezve, hogy beleegyeztél, hogy a z a képernyő belseje felé tart, milyen három szögre is van szükséged? (Itt a legnagyobb a fogalmak keverésének veszélye.) Szükséged van a roll, pitch és yaw mozgásokra. Figyeld a monitort, miközben ezt olvasod. Most döntsd jobbra a fejed, hogy a jobb füled a jobb válladra kerüljön. Ez a változás roll irányban történt (én legalábbis így hívom). Most ülj ismét egyenesen. Döntsd előre a fejed, hogy az állad elérje a mellkasod. Ez a mozgás a pitch volt. Most pedig a fejedet egyenesen tartva, nézz hátra a jobb vállad felett, hogy megnézd, ki van mögötted. Ez volt a yaw. Ezek az alapok, de mihez kezdjek velük? Nos, elértünk oda, ahol egy remek kis mátrixalgebra könyv jól jöhet. Az előbbi három szöget fogjuk majd használni egy transzformációs mátrix létrehozásához.

Képszintézis

A képszintézis (rendering vagy image synthesis) célja a virtuális világunk lefényképezése. A fényképezés során többféle látásmódot alkalmazhatunk. A két legkézenfekvőbb módszer a rajzolás és a természet folyamatainak a szimulálása. Az első esetben a keletkezet képek műszaki rajzszerűek lesznek, a második esetben pedig a keletkező képek annyira fognak hasonlítani a valódi képre, mint amennyire követtük a szimuláció során a fizika törvényeit. A legnagyobb különbség az így előállított képekben az egyes képkockák kiszámítására fordítható idő. Egy interaktív alkalmazásban ennek a másodperc törtrésze alatt végbe kell, hogy menjen, míg más esetekbe határt maximum a megrendelő pénze és türelme szabhat. Ebből következően a felhasználható matematikai módszerek is jóval összetettebbek lehetnek, sokkal több kiinduló adattal dolgozhatnak, még pontosabban szimulálva a valós viszonyokat. Ezért az igazán valósághű képek elállítását fotorealisztikus képszintézisnek nevezzük. Valósághűen azt értjük, hogy a számítógép monitorán megjelent kép, nagymértékben hasonlítani a valóságos képhez. Képszintézises rendszerek létrehozásához tehát ismernünk kell a fény-anyag kölcsönhatását, alapvető fizikai törvényeit, modelljét, a megjelenti rendszerek képességeit és az emberi szem korlátait.
Ahhoz, hogy a képszintézist maximálisan ki tudjuk használni (vagy, hogy egyáltalán használni tudjuk) meg kell ismerkednünk az emberi szem felépítésével és a látással. A természetben a fény valamilyen forrásból szabadul fel, energia felhasználásával, majd igen nagy sebességgel haladni kezd a tér minden irányába. Útja során rengeteg tárgyba ütközhet, onnan visszaverődhet, elnyelődhet, de végül egyes sugarak a szemünkbe jutnak. A szem a szerkezet és a funkció csodája, amelyből a látóideg ered, ez biztosítja a szem és az agy között az összeköttetést. A beérkező sugarak a retinán lévő érzékelősejtekbe (csapok, pálcikák) csapódnak, ahol aztán a fény jellemzőitől függő ingerület keletkezik. Amelyet majd az agyunk fog értelmezni, és állítja elő belőle a képet. Ebből arra következtethetünk, hogy csak akkor látunk egy tárgyat, ha arról a szemünkbe visszavert fénysugarak jutnak, különben nem érzékelünk semmit. A fény természetesen a felültre való visszaverődése közben megváltozik, hiszen egyes komponensei elnyelődnek tehát a fény színe is megváltozik. Ezek szerint viszont a tárgy színe is függ a megvilágított fény színétől. Csak a fehérben, azaz a minden szint tartalmazó fényben látszik egy tárgy valódi színe. Például egy zöld tárgy kék fényben kéknek látunk, mivel a fényből hiányzik a sárga komponens, piros fényben pedig feketének. Az emberekre a fény nem csak fizikailag, hanem érzelmileg is hatással van. Szeretünk mindenféle színhez különböző érzelmeket társítani, ezért ma már szinte az összes 3D játék engine képes a színes fények kezelésére. Hiszen a fények manipulálásával megfelelő hangulatot tudnak teremteni, a játékos számára. Természetesen az emberi szem tulajdonságait, sok esetben a hasznunkra tudjuk majd váltani, hiszen a bonyolult fizikai modellek megoldásához roppant kevés idő áll rendelkezésre. Gondoljunk csak egy adott valós idejű képsorozatra, amit a napsugár megvilágít. Ahhoz, hogy a mozgás folyamatosnak tűnjön másodpercenként legalább 15 képkockát, kell majd előállítanunk. Mivel egy közepesnél nagyobb képernyő képe viszont több mint egymillió képpontból áll, egyetlen képpont színének meghatározásához legalább 1 sec/15/10^6 = 40 nsec áll rendelkezésre. Ami az operatív tár egyetlen memória ciklusánál is kisebb!!! Ezt a tényt a képszintézis során nem szabad figyelmen kívül hagynunk.

Felhasznált és ajánlott irodalom

Foley, van Dam, Feiner, and Hughes: "Számítógépes grafika: Alapelvek és gyakorlat" c.
Dr. Szirmay-Kalos László: Számítógépes grafika, 2001

Füzi János: Interaktív grafika, 1997

2010. június 1., kedd

Az NVIDIA definiálta a 3D PC-t

Nagyon rákaptak a hardveres és konzolos cégek a 3D-re, sorra jönnek a hírek a különböző három dimenziós megjelenítést támogató eszközökről és szoftverekről. Ezúttal az NVIDIA tett újabb lépést, és Computexes sajtótájékoztatóján definiálta a 3D PC fogalmát. Ez lehet egy asztali vagy hordozható gép is, a lényeg, hogy megfeleljen az alábbi három elvárásnak: Legyen hozzá ún LCD-shutteres (azaz a két szemet gyors ütemben felváltva eltakaró) 3D szemüveg (mint például az NVIDIA 3D Vision készletében található szemüveg).
  • 120 Hz-es frissítést biztosító kijelző tartozzon hozzá - egy LCD monitor, egy 3D-s projektor vagy TV, vagy egy notebook 3D-s LCD kijelzője.
  • A kijelző számára nagyfelbontású képet biztosító videochip legyen benne (értelemszerűen az amerikai gyártó a saját GeForce GPU-ját hozta fel példának).
  • Bár még az elején vagyunk az otthoni "3D forradalomnak", nagyon úgy néz ki, hogy ez lesz a jövő. Aki tehát például épp gépcsere előtt áll, és jó pár évre előre szeretne gondolkodni, megfontolhatja, hogy a fenti szempontokat is figyelembe veszi (igaz, ehhez az átlagosnál jelenleg vastagabb pénztárca szükséges). Az NVIDIA javaslata, hogy a számítógépgyártók "3D PC" megjelöléssel lássák el azon gépeiket, amelyek megfelelnek a fenti követelményeknek. És hogy szerintük miért jó a 3D? Lássuk az érveiket!
Az NVIDIA 3D Vision technológia több mint 425 PC-s játékból varázsol igazi 3D-s képet monitorunkra. Egyes gyártók, mint a Sony és a Fujifilm olyan digitális fényképezőgépeket dobnak piacra, amelyek alkalmasak 3D-s fotók készítésére, amelyeket egy 3D PC-n nézhetünk meg. A weben is egyre több 3D tartalom várható, az NVIDIA az Adobe-val és Microsofttal együttműködve dolgozta ki a streamingelhető 3D videót, a YouTube-on például már 1000 felett jár ezek száma. Nem utolsósorban pedig 3D-s filmeket is nézhetünk, ahogy majd érkeznek a Bluray 3D lemezek. A témáról további információ az nvidia.com/3DPC oldalon olvasható.

Dino