A szemünk az egyik legfontosabb érzékszervünk. Hétköznapi tevékenységeink során túlnyomórészt a szemünkkel követjük környezetünk változásait, és ennek megfelelõen döntünk saját cselekedeteinkrõl. A képek, a film és a televízió ezt a folyamatot kiterjesztették mind térben, mind pedig idõben, hiszen segítségükkel olyan dolgokat is érzékelhetünk, amelyek tõlünk távol, vagy a valóságban sokkal korábban zajlottak le. A számítógépes grafika még tovább megy ezen az úton, és olyan világokba enged bepillantani, amelyek a valóságban sohasem léteztek. A nem létezõ, virtuális világokat a matematika nyelvén, számokkal adhatjuk meg. Számítógépünk a számokkal leírt virtuális világmodellt fényképezi le, azaz kiszámítja az ugyancsak számokat tartalmazó képet. A modellben szereplõ számokat a kép számaira nagyon sokféleképpen alakíthatjuk át, amely végtelen sokféle lehetõséget ad grafikus rendszerek kialakítására. Ezek közül azokban mozgunk otthonosan, amelyek a mindennapjaink megszokott képeihez hasonlatosokkal kápráztatnak el bennünket, ezért célszerû a grafikus rendszert a természettõl ellesett elvek szerint, azok analógiájára megalkotni. Amennyiben modellünk háromdimenziós térben elhelyezkedõ tárgyakat tartalmaz, a fényképezés pedig a fénytan (optika) alapján mûködik, akkor háromdimenziós grafikáról beszélünk. Az optikai analógia nem feltétlenül jelenti azt, hogy az optika törvényszerûségeit pontosan be is akarjuk tartani, csupán a számunkra legfontosabbakat tartjuk tiszteletben, a többit pedig szükség szerint egyszerûsítjük. A kiszámított kép leggyakrabban a számítógép monitoráról jut a felhasználó szemébe. Különleges alkalmazásokban azonban a képet a felhasználót körülvevõ szoba falára, vagy akár a szemüvegének a felületére vetíthetjük úgy, hogy a felhasználó mozgásának megfelelõen a képet mindig az új virtuális nézõpontnak megfelelõen frissítjük. A szemüveges megoldásban a felhasználó a két szemével kissé eltérõ képeket érzékelhet, így tényleges háromdimenziós élményhez juthat. A valós életben már megszoktuk, hogy a környezetünk nem állandó, hanem szereplõi mozognak, tulajdonságaik idõben változnak. A virtuális világunk mozgatását animációnak nevezzük. A felhasználó a virtuális világ passzív szemlélõjébõl annak részesévé válhat, ha megengedjük, hogy a térben mozogjon, és a tér objektumait átrendezze (interakció). Az ilyen virtuális valóság rendszerek megpróbálják a felhasználóval minél jobban elhitetni, hogy valós környezet veszi körül. Innen már csak egyetlen lépésre vagyunk a számítógépes játékoktól, amelyekben a virtuális világ objektumai is figyelemmel kísérik a felhasználó mozgását, és ennek megfelelõen alakítják saját viselkedésüket, azaz túlélési stratégiájukat. Ez a könyv a háromdimenziós számítógépes grafikával, animációval, virtuális valósággal és a számítógépes játékokkal foglalkozik, ismerteti azokat az elméleti alapokat és algoritmusokat, amelyekkel magunk is grafikus, illetve animációs rendszereket hozhatunk létre.
Kinek készült ez a könyv?
Szándékaink szerint minden informatikusnak és leendõ informatikusnak, aki maga is szeretne grafikus rendszereket fejleszteni, illetve grafikusoknak és animátoroknak, akik eszközeik lelkébe kívánnak látni. A számítógépes grafika egyszerre tudomány, mérnöki-informatikai szakma és mûvészet. Nem vettük a bátorságot ahhoz, hogy a grafika mûvészeti oldalához hozzászóljunk, így a könyv csak a tudományos és technikai elemeket tekinti át. Igyekeztük az elméleti alapokat úgy összefoglalni, hogy a témakörök nagy részének megértéséhez a középiskolai matematika és fizika is elegendõ legyen. Kivételek persze vannak, ilyen például a globális illuminációról szóló fejezet, illetve az animáció egyes részei, de reméljük, hogy ezek a részek sem veszik el az Olvasó kedvét a könyvtõl. Azt ajánljuk, hogy ha a kedves Olvasónak egy-egy rész elsõ olvasásra nehéznek tûnik, akkor nyugodtan ugorja át, és inkább a példaprogramokat próbálja megérteni. Az elmélethez ráér késõbb is visszatérni. A könyv szinte minden fontosabb témakörét programokkal demonstráljuk, amelyeket az Olvasó a saját programjaiba is átvehet. A könyvben részleteiben, a CD-n pedig teljességükben megjelenõ programok bemutatják az algoritmusok implementálási fortélyait. Másrészt, talán azt is sikerül velük megmutatni, hogy a számítógépes grafika egyáltalán nem olyan nehéz, mint amilyennek talán elsõ pillantásra látszik, hiszen rövidke programokkal valóban csodálatos eredményeket érhetünk el. A programok készítése során az áttekinthetõségre és az egyszerûségre törekedtünk, nem bonyolítottuk a kódot optimalizálással, hibakezeléssel, sõt helyenként még a memória felszabadításával sem. Így a megoldások biztosan nem optimálisak, és nem is robusztusak, de hitünk szerint könnyen követhetõek. A programokat C++ nyelven adjuk közre, és általában az OpenGL, a GLU és a GLUT könyvtárakat használjuk fel. Röviden kitérünk még a Windows eseményvezérelt programozási felületének, és a DirectX könyvtárnak az ismertetésére is. Ezek közül csak a C++ nyelv és az alapvetõ objektum-orientált programozási elvek ismeretét tételezzük fel, a többi könyvtár használatába lépésrõl-lépésre vezetjük be az Olvasót.
Miért érdemes elolvasni ezt a könyvet?
Szándékaink szerint az Olvasó, miután végigrágta magát ezen a könyvön, érteni fogja, hogy hogyan készülnek a háromdimenziós grafikák, az animációk és a játékok, ismerni fogja azokat az elveket és szoftver eszközöket, amelyeket ilyen rendszerek készítéséhez felhasználhat. A témakör fontosságát talán csak néhány közismert ténnyel támasztanánk alá. A mai harminc alatti korosztály elsõdleges szórakozási formája a számítógépes játék. Az emberek nem azért vesznek két-három évenként új számítógépeket, hogy még gyorsabban tudjanak levelezni, szöveget szerkeszteni, interneten böngészni stb., hanem azért, hogy a legújabb, egyre valószerûbb grafikus játékok is élvezhetõek legyenek. Alig készül olyan mozifilm, amelyben legalább egyes jeleneteket nem számítógépes grafikával hoztak volna létre. Mindamellett a gyártók az új processzorok architektúrájának kialakításánál alapvetõ szempontnak tartják, hogy a grafikus algoritmusok nagyon gyorsan fussanak rajtuk, és ezért ezeket a mûveleteket külön utasításkészlettel valósítják meg (Intel/SSE2, AMD/3Dnow!+). Ráadásul ezek a tények elhanyagolhatók ahhoz képest, hogy ha az Olvasónak gusztusa támad rá, maga is készíthet grafikus, illetve animációs programokat, amelyek a semmibõl új világot teremtenek, sõt akár háromdimenziós játékokat is, amelyekben fantasztikus világokban legyõzhetetlennek tûnõ ellenfelek ellen küzdhet, és következmények nélkül veszíthet vagy gyõzhet. Közülünk valószínûleg kevesen fogják megízlelni az ûrutazás élményét, kevesen fognak vadászrepülõt vezetni, és a köztünk megbújó leendõ kommandósok, páncélos lovagok és dzsungelharcosok száma is csekély. A számítógépes játékok segítségével azonban egy kis idõre bárkibõl bármi lehet. Talán még nagyobb bizonyossággal mondhatjuk, hogy senki sem fog a fénysebesség közelében repülni. A számítógépes grafika számára ez sem lehetetlen, csupán a programunkba a relativitáselmélet néhány alapképletét kell beépíteni. Foglaljuk el a helyünket a számítógépünk elõtt! Dõljünk kényelmesen hátra és engedjük el a fantáziánkat, a többi már jön magától. Kellemes olvasást, programozást, izgalmas játékot és virtuális öldöklést mindenkinek!
Figyelem! A tartalom legalább 2 éve nem frissült! Előfordulhat, hogy a képek nem megfelelően jelennek meg.