A SZÁMÍTÓGÉPES GRAFIKA ALAPJAI
2.7. A fraktálok világa
2.8.8. Animációs szoftverek
A felhasználói szoftverekhez hasonlóan a grakus, animációra is képes szoftverek is igen szép számban jelentek meg a piacon az id®k során. A teljesség igénye nélkül kiragadunk egy pár kiemelked®bb megoldást.
1985-t®l kezd®d®en fejlesztette ki a Pixar a saját számítógépes 3D graka és animációs szoftverét, a RenderMant. A szoftver nemcsak rajzlmek gyártását teszi lehet®vé, hanem bármilyen vizuális effektus elkészítését lmekben is. Az utóbbi 15 évben a vizuális effektusokért járó Oscar-díjra benevezett 50 lm közül 47-et készítettek RenderMannel.
Otthoni számítógépekre az akkori DOS-os rendszerekre készült el 1988-ban a Cartooners, 1989-ben pedig az Autodesk Animator. Mindkett®ben jeleneteket, háttereket, karaktereket lehetett deniálni és mozgásokat rendelni a gurákhoz.
Az Autodesk fejlesztette ki a 3D Studio Maxot is. A 3D Studio Max (melyet néha 3DS Maxnek hívnak) egy 3 dimenziós modellez® és animációs program, talán a legelterjedtebbek egyike.
Jól használható szoftver a 3D Animation Lab is.
Kétségtelen viszont, hogy az egyik legjobb a Maya. A Maya egy fels®kate-góriás 3D-s grakai szoftvercsomag az Aliastól (jelenleg az Autodesk Media &
Entertainment tulajdonában van), amelyet f®ként a lmes és televíziós iparban használnak, valamint számítógépes és videojátékok készítésénél. Az Autodesk 2005 októberében tett szert az Alias PowerAnimatorból kifejl®dött programra, megvásárolva az Alias Systems Corporationt. Két f® változatban kapható, az
2.57. ábra. Animációs sablonok A dzsungel könyve (1967) és a Micimackó (1977) rajzlmekben
egyik a Maya Complete (amely a kisebb csomag), a másik pedig a Maya Unli-mited. A Maya Personal Learning Edition (PLE) egy otthoni használatra szánt tanulóverzió, amely ingyenesen elérhet® (cserében a Maya PLE-vel renderelt képekben egy vízjel van).
A Maya elérhet® Windows, Linux, IRIX és Mac OS X operációs rendszerek alá.
2.8.9. Állományformátumok
Az animációkat többféleképpen rögzíthetjük. Leggyakoribb állományfor-mátumok a FLI, FLC, MPEG, WMV, MOV és AVI.
A legegyszer¶bb állományformátum az animált GIF. Az állóképek (GIF87) tárolása mellett a GIF alkalmas képek animálására (GIF89a) is. Weblapokon sokszor találkozhatunk ilyennel. Lényege, hogy megadott id®pontokban válta-koznak a különböz® képek, így egy animációt hozva létre. Hátránya, hogy nincs hangja.
Általában mindegyik formátum valamilyen módon tömörített, hiszen hosszabb lmek tárolása ily módon a leggazdaságosabb.
2.58. ábra. Animációs sablonok a Sword in the stone (1963) és A dzsungel könyve (1967) rajzlmekben
A FLI és FLC oly módon tömörít, hogy csak azokat a képrészeket tárol-ja, amelyek különböznek az ®ket megel®z® képkocka ugyanazon helyén lév®
adattól.
Az MPEG mágikusan úgy hangzik, mint a JPEG. Nem is csalódhatunk, mert hasonló, némi min®ségvesztéssel járó tömörítést valósítanak meg. A min®ség-romlás mértéke szabályozható a végtermék fájlhosszának a rovására. A gyorsan változó képkockákból álló animáción viszont fel sem t¶nik a min®ségveszt®
tömörít® algoritmus keze nyoma.
A MOV állományformátumot az Apple alkalmazza.
Az AVI (Audio Video Interleave audio-video-összefésülés) egy olyan állományformátum, amelyet mind a hang-, mind pedig a videoadatok egy meg-határozott csomagban való tárolására és ezen adatok lejátszására hoztak létre. A Microsoft 1992 novemberében mutatta be ezt a formátumot a Windows techno-lógia videó részeként.
GRAFIKA DOS ALATT
A DOS operációs rendszer a személyi számítógépek szöveges üzemmódú parancssoros operációs rendszere.
Grakus alkalmazásokat is lehetett DOS alatt készíteni, ha a számítógépben videokártya ezt megengedte. Az 1980-as évek végén, az 1990-es évek elején, kö-zepén a grakus üzemmódot egyértelm¶en meghatározta a videokártya memó-riájának a nagysága, a videokártyák nem rendelkeztek külön GPU-val, minden m¶veletet a CPU végzett el.
A számítógépünkhöz többféle grakus kártyát csatolhatunk. Ennek megfe-lel®en a grakus üzemmódban a felbontás és színeinek száma (ezek a grakus kártya legjellemz®bb adatai) eltér®ek voltak.
A legismertebb grakus kártyák:
CGA (Color Graphics Adapter) 320×200 képpont, 16 szín; 640×200 képpont, 2 szín (monochrome);
MCGA (Multi Color Graphics Adapter) 320×200 képpont, 256 szín;
TANDY 320×200 képpont, 16 szín;
HERCULES (vagy röviden HERC) 720×348 képpont, monochrome (2 szín);
EGA (Enached Graphics Adapter) 640×350 képpont, 16/64 szín;
VGA (Video Graphics Array) 640×480 képpont, 16/64/256 szín;
800×600 képpont, 256 szín (SVGA 512 KB memória); 1024×768 kép-pont, 256 szín (SVGA 1 MB memória);
XGA (eXtended Graphics Array) felbontása és színek száma azonos a VGA-val, de sebessége DOS-ban 90%-kal, Windows-ban 50%-kal na-gyobb.
A számítógépek h®skorában csak szöveges üzemmód létezett, a progra-mok az eredményeket a szöveges képerny®n vagy a nyomtatón jelenítették meg, a felhasználók vizuális igényeinek megfelel®en azonban a programozók itt is megtalálták a módját annak, hogy grakus ábrákat állítsanak el®. A legegysze-r¶bb grakák (de felépítés, generálás szempontjából talán a legbonyolultabbak) a szöveges karakterekb®l kirakott képek voltak. Ekkor egy egyszer¶ soronkén-ti kiírással szöveges üzemmódban karaktereket jelenítettünk meg a képerny®n (vagy a nyomtatón), amelyek távolról gyelve képpé álltak össze.
Manapság ez m¶vészeti irányzattá fejl®dött, speciális generáló szoftvereket is írtak, vagy gy¶jteményes kiállításokat is szerveznek (pl. http://www.ascii-art.de/, http://chris.com/ascii/).
3.1. ábra. Virág karakterekb®l (készítette Susie Oviatt), valamint 3D hatású karakterekb®l kirakott kép
Fejlettebb technika volt a számítógép memóriájában lév® karaktertábla át-deniálása, számos DOS alatti számítógépes játék készült így. A karakterek is pontokból vannak deniálva, minden karaktert egy pontmátrix ír le, a mátrix sorait byte típusú számokká konvertálva. Nem kellett mást tenni, mint átrajzolni a karaktereket, például az 'A' karakter képe helyett egy olyan számsorozatot be-írni, amely egy téglafal pontmátrix-képének felel meg, így valahányszor kiírtuk az 'A' bet¶t a képerny®re, nem az 'A' karakter képe (glyph) jelent meg, hanem a téglafal.
3.2. ábra. Glyph-ek átdeniálása DOS alatt
Egy másik közkedvelt DOS-os grakus megoldás a BOB-ok programozása volt. A BOB-ok (Blitter OBject) olyan 256 szín¶, téglalap alakú grakai objek-tumok, melyek tetsz®legesen mozgathatóak, eltüntethet®k és megjeleníthet®ek.
Az elnevezés az Amiga gépekr®l származik. BOB-nak tekinthet® például az egér ikonja grakus képerny®n, ami általában nyíl formájú. Vagy például BOB egy játékban egy futó ember. Egy BOB bizonyos részein áttetsz® (transzparens) lehet, vagyis ott az látszik, ami mögötte van. A BOB memóriában lév® grakus ada-tait shape-nek nevezzük. EgyW szélesség¶,H magasságú shape helyfoglalása W ×Hbyte.
A BOB-okat általában objektumorientáltan szokás programozni magas szin-t¶ nyelvekben, de a gyorsaság miatt igen elterjedt az assemblyben való progra-mozás is.
Assemblyben a grakus üzemmódot a 10h megszakításon (video and scree services) keresztül lehet elérni.
A videomód beállítása a 00h funkcióval történik.
Például az MCGA (320×200, 256 szín¶) üzemmódot, amely az egyetlen hagyományos 256 szín¶ üzemmód, így kell bekapcsolni:
1 mov ax, 0013h {00h funkció, 13h üzemmód}
2 int 10h {meghívjuk a megszakítást}
Visszatérni szöveges üzemmódba:
1 mov ax, 0003h {00h funkció, 03h szöveges üzemmód}
2 int 10h {meghívjuk a megszakítást}
A képerny® memóriabeli kezd®címe az A000:0000, egy byte egy pixelnek felel meg, a pixelek sorfolytonosan vannak tárolva, balról jobbra, fentr®l lefele.
Az Ox koordinátatengely tehát balról jobbra n®, az Oy koordinátatengely pedig fentr®l lefele. A képerny® helyigénye 320×200, azaz 64000 byte.
Az MCGA képszerkezetének megfelel®en, egy (x,y)koordinátájú pixel of-szettcímét a videomemóriában a CÍM = 320*y+xképlettel határozhatjuk meg.
EgyCszín¶, (x,y)koordinátájú pixelt tehát így rajzolhatunk ki:
1 mov es, A000h 2 mov ax, 320
3 mul y {A pixel sorának kezd˝ocíme 320*y}
4 add ax, x {A pixel címe: 320*y+x}
5 mov di, ax {ES:[DI] a felgyújtandó pixel címe}
6 mov al, c {a pixel színe}
7 mov es:[di], al {a pixel kigyújtása}
Egy (x,y)koordinátájú pixel színének a lekérdezése:
1 mov es, A000h
2 mov ax, 320 {A kép szélessége 320 pixel}
3 mul y {A pixel sorának kezd˝ocíme: 320*y}
4 add ax, x {A pixel címe: 320*y+x}
5 mov di, ax {ES:[DI] a leolvasandó pixel címe}
6 mov al, es:[di] {a szín az AL-ben}
Közkedvelt, széles körben elterjedt, grakai megjelenítésre képes magas szint¶ programozási nyelv a LOGO.
A programozási nyelvet és a hozzá kapcsolódó pedagógiai elveket Seymour Papert amerikai matematikus dolgozta ki az 1960-as években. LOGO az interp-reter (értelmez®) nyelvek közé tartozik, azaz közvetlenül lehet utasítást adni és végrehajtatni. Grakai része alapján az automata elv¶ nyelvek közé, szövegke-zel® része alapján pedig a funkcionális nyelvek családjába sorolható.
LOGO-ban nincs hagyományos értelemben vett változó, mert a változók száma, típusa, elnevezése rögzített, illetve utasítások paraméterei lehetnek. A paraméterek érték szerinti paraméterek, híváskor kapnak értéket. Eljárások, cik-lusok paraméterfügg®ek lehetnek. A paraméterfügg® ciklus csak egy primitív, ciklusváltozó nélküli, adott lépésszámú lehet. Minden más feladatra rekurzív eljárást célszer¶ írni.
A LOGO grakus rendszere a tekn®c-graka. Eredeti állapotában a kép-erny® közepén lév® tekn®c jellemz®je a helye és iránya. Megtanítható tetszés szerint alakzatok rajzolására, mozgó ábrák készítésére, a toll és a rajzlap színé-nek változtatására, matematikai m¶veletekre, véletlen jelenségek bemutatására, szövegírásra, zenélésre, animációra. A tekn®c által a képerny®n megtett út a grakus ábra. A nyelv utasításai a tekn®c vezérlésére szolgálnak.
Példa: egy 100 egység oldalú négyzet kirajzolása:
1 forward 100 2 right 90 3 forward 100 4 right 90 5 forward 100 6 right 90 7 forward 100
A 3.3. ábrán látható spirál kirajzolása rekurzív módon:
1 to spiral :size
2 if :size > 30 [stop]
3 forward :size right 15 4 spiral :size *1.02 5 end
Meghívás például:
1 spiral 10
3.3. ábra. Spirál LOGO-ban
DOS alatt számos ma is használatos magas szint¶ programozási nyelv biztosított grakus lehet®ségeket.
A következ®kben a Turbo (Borland) Pascal grakus lehet®ségeit tekintjük át, ezek mivel a fordítóprogramot és a környezetet ugyanaz a cég írta (Bor-land) ugyanúgy m¶ködnek DOS alatti Borland C++-ban is természetesen az eljárásokat, utasításokat aC+ +szintaxisának megfelel®en kell írni.