Aszódi Barnabás, Czuczor Szabolcs, Lazányi István Zsolt, Seregi László
VIRTUÁLIS VALÓSÁG OKTATÓRENDSZER ATOMERŐMŰVI KÖRNYEZETBEN
SZINOPSZIS Cikkünkben egy olyan interaktív oktatóprogramról írunk, mely képes megjeleníteni egy háromdimenziós objektumvilágot, és lehetővé teszi, hogy felhasználóként szabadon barangolhassunk benne. A VRML formátumban tárolt környezettel — mely esetünkben egy atomerőmű épületkomplexumának szerkezete — a legapróbb részletekig meg lehet ismerkedni. A veszélyes környezetben dolgozó emberek számára alapvető fontosságú, hogy jól ismerjék a munkafeladatukat, a munkavégzés helyszínét, valamint az ehhez szükséges időt. Például egy reaktor környezetében számolni kell a radioaktív sugárzással is, aminek következtében a dolgozó nem mindig gyakorolhatja feladatát tetszőleges helyszínen, illetve tetszőleges időtartamig. Az alkalmazás használatával a terület mindenféle veszély nélkül bejárható, megismerhető, és a felvázolt sugárzási térkép ismeretében a munkafázisok is megtervezhetőek. A munka valós életben történő végrehajtásakor a dolgozó így már rutinosan, a környezetet jól ismerve mozoghat az atomerőműben. A virtuális világ objektumterének létrehozására egy szerkesztő áll rendelkezésre, amely segítségével egy objektumkönyvtár elemeiből berendezhetünk egy adott helyiséget. A szerkesztő egy egységet képez a megjelenítő eszközökkel, ezzel biztosítva, hogy csak szabványos VRML formátum kerülhessen a megjelenítő bemenetére. A cikkben bemutatjuk az alkalmazás működését, a benne rejlő érdekességeket, majd mindazt a technikai hátteret, amivel ezt létrehoztuk. Végül cikkünket az alkalmazás továbbfejlesztési lehetőségeinek összefoglalásával zárjuk.
1. BEVEZETÉS A történelem hajnala óta jellemző az emberiségre, hogy törekedett a munkájának mind könnyebbé és egyszerűbbé tételére. Az egyszerű gépek és
szerszámok feltalálása után a múlt század közepén végül eljutottunk addig a pontig, amikor már számítógépekkel is képesek vagyunk segíteni munkálkodásainkat. Azonban annak idején a számítógépeket még meglehetősen nehézkesen tudtuk csak kezelni. Felhasználói kezelőfelülettel még szinte egyáltalán nem rendelkeztek, így programjainkat illetve parancsainkat kizárólag a számítógéptermekben dolgozó operátorok közreműködésével tudtuk lyukkártyán és lyukszalagon megértetni a géppel. Később — a személyi számítógépek megjelenésekor — adatainkat már egyszerű utasítások formájában is be tudtuk billentyűzni a parancssorba, amit folyamatosan ellenőrizhettünk a monitoron. Manapság azonban a felhasználó kényelme érdekében már minden valamirevaló személyi számítógép tartalmaz egeret és grafikus felhasználói felületet. A fejlődés persze ezután sem állt meg. Egyre nagyobb lett az igény a harmadik dimenzióba történő kilépésre, a virtuális valóság (virtual reality, VR) rendszerek alkalmazására. Az otthoni felhasználás területén ez leginkább a háromdimenziós (FPS – first person shooter) játékok körében jelenik meg, amik nem adnak túl nagy mozgásszabadságot a felhasználónak. Néhány ipari alkalmazás azonban már teljes mozgásteret biztosít, így azok kezdik kinőni az egyszerű számítógépasztal méreteit. A VR rendszer megalkotásakor alapvető feladatunk, hogy a felhasználó érzékeit megcsalva a térbeliség érzetét keltsük. Ezt megtehetjük megfelelő látványvilág létrehozásával (VR-sisakkal, 3D-s vagy polárszűrős szemüveggel stb.), valamint térbeli hanghatásokkal (többcsatornás hangrendszerrel). Mindemellett nagy figyelmet kell szentelnünk a megfelelő adatbevitel biztosítására (szövegbevitel mikrofonnal, irányítás botkormánnyal vagy 6 szabadságfokú, háromdimenziós egérrel).
2. A PROGRAM CÉLJA A program alapvető feladata, hogy lehetőséget biztosítson egy megadott háromdimenziós környezet bejárására. A virtuális környezetet leíró adatbázis bármilyen helyszínt definiálhat, esetünkben ez egy atomerőmű vezérlőtermeiből és munkaterületeiből álló épületkomplexum. Ennek okán a programnak van egy speciális feladata is: a korábban betáplált adatok alapján egy sugárzási térképet is megjelenít a felhasználó előtt (lásd 1. ábrát). Ezáltal a felhasználó úgy tudja virtuálisan bejárni a helyszínt, hogy közben látja az adott helyre jellemző radioaktív sugárzás mértékét. Ezt megismerve törekedhet a sugárzási dózis minimumon tartására, így kialakíthat egy optimális útvonalat, valamint munkamenetrendet. Ezen kívül megismerkedhet a környezettel, és begyakorolhatja az optimális útvonalat anélkül, hogy akár egyetlen lépést is
kellene tennie a valóságos atomerőművi környezetben. Így sugárterhelés nélkül ismerheti, illetve tanulhatja meg a majdan elvégzendő feladatát.
1. ábra: A program főmoduljának képernyője a sugárzási térképpel
A program rendelkezik egy tervező és egy ellenőrző modullal. A tervező modullal a felhasználó képes egy termet különböző bútorokkal illetve műszerpanelekkel berendezni. Az ehhez szükséges építőelemeket egy előre megadott, de bővíthető listából válogathatja ki. Ez azért fontos, mert a vezérlőtermek funkcionalitása mellett figyelembe kell venni a szabványok által előírt bútorok és műszerek elhelyezésére vonatkozó követelményeket (láthatóság, méret, típus, elérhetőség stb.), valamint az ergonómiai szempontokat. Az ellenőrző modul valójában nem sokban tér el magától a főmodultól. Mindössze annyi kiegészítéssel rendelkezik, hogy itt a felhasználó képes megmérni az egyes térbeli objektumok méreteit, azok nézőponttól, illetve egymás között mért távolságát. Ezen kívül a nézőpont mozgatásával ellenőrizheti a műszerek láthatósági előírásainak betartását. Ezzel megtudhatja, hogy a tervező modulban berendezett helyiség a szabványok előírásainak megfelelően lett-e kialakítva.
3. A PROGRAM FELÉPÍTÉSE A program moduláris szerkezetű. A főmodulban kaptak helyet azok a szolgáltatások, amelyekre minden modulban szükség van. A főmodul feladata például a VRML színterek beolvasása, megjelenítése, és a színterekben való
navigáció lehetővé tétele. A főmodul mellett több kiegészítő modul kapott helyet. Az ezek közötti kommunikáció csak a főmodulon keresztül engedélyezett. A főmodulon belüli függvények más modulból csak a két modul közötti interfészen keresztül érhetők el.
3.1. Főmodul A program főmodulja voltaképpen egy VRML böngésző. Ezzel lehet bejárni azt az épületkomplexumot, aminek felépítése egy VRML formátumú háromdimenziós jelenetleíró adatbázisban van tárolva. A VRML formátum nemcsak könnyen szerkeszthető, bővíthető és módosítható, de világszabvány lévén rengeteg egyéb alkalmazás által ismert. Így komplexebb objektumteret — ami nyilván csak egy nagyobb méretű adathalmazban tárolható — akár más szoftverrendszerekkel is feldolgozhatunk. Az adatbázis VRML formátuma azt is lehetővé teszi, hogy a világunkban olyan, speciális komponenseket (például érzékelőket vagy eseményeket) definiáljunk, amelyek kimondottan a virtuális világban való barangoláskor használatosak.
2. ábra: A böngésző ablakában az atomerőmű épületkomplexumának két nézete
Az alkalmazás grafikus kezelői felülete sokban hasonlít egy szokványos VRML-böngésző felületére, de számos speciális kezelőszerv is található itt. Például az egyes almodulok egyetlen gombnyomással aktivizálhatók, így egy pillanat alatt újra be tudjuk rendezni az adott helyiséget, vagy ellenőrizni tudjuk, hogy a megtervezett szoba megfelel-e a biztonságtechnikai és ergonómiai előírásoknak. Azonban ha nem kívánunk számok alapján dönteni, akkor a szoba használhatóságát, illetve dekoratív voltát annak bejárásával is ellenőrizhetjük.
3.2. Ellenőrző modul Az alkalmazás ezen része annyiban több a „hagyományos böngésző" modulnál, hogy az adott környezet adott objektumainak egyes méreteit, illetve az objektumok között mért távolságot pontosan, dokumentálható módon mérni tudjuk. Továbbfejlesztési lehetőségként felmerülhet e művelet részleges vagy teljes automatizálása.
3. ábra: Egy vezérlőterem nézete
3.3. Tervező modul A tervező modulban a telepítendő objektumokat egy kész listából lehet kiválogatni, majd a háromdimenziós térben elhelyezni Az elhelyezés során a három alapvető térbeli transzformáció (eltolás, elforgatás, skálázás) beállítására van lehetőségünk. Ha új, korábban még nem létező objektumot szeretnénk elhelyezni, akkor azt előtte egy külső modellszerkesztő alkalmazással létre kell hoznunk. Ezt azután el kell helyeznünk a már meglévők listájába. Ennek a listának a tartalma a szerkesztő modul elinduláskor töltődik fel, vagyis mindig dinamikusan frissül.
4. ábra: A tervező modul kezelőfelülete
Az objektumok egymáshoz való viszonyát egy hierarchikus fa struktúra reprezentálja. A felhasználó az objektumokat egy olyan listából jelölheti ki, ami követi a hierarchia szerkezetét. A kijelölt objektumokra adott transzformációs műveleteket hajthatunk végre (eltolás, forgatás, skálázás), amik módosítják azok eredeti transzformációs mátrixát. Az objektumlista fa struktúrája alapján az objektumok kapcsolódási hierarchiája és a transzformációk öröklődési lánca (vagyis egy adott transzformáció mely objektumokra van hatással) is egyértelműen azonosítható, nyomon követhető (lásd 5. ábrát). Az iménti parancsokat kiadhatjuk a főmenüből, bizonyos gombok megnyomásával, illetve a program parancssorába történő speciális utasítások begépelésével. A program rugalmasságát az is növeli, hogy a kiadott parancsokat egy parancslistába folyamatosan elmentjük, ami lehetővé teszi a többszintű visszalépést (undo) is. Miután a felhasználó kedve szerint kialakította a virtuális teret, elmentheti azt egy szintén VRML formátumú adatbázisba.
5. ábra: Objektum kijelölése az objektumlistából
Fentebb már említettük, hogy az objektumkészlet elemeit egy külső objektumszerkesztővel tudjuk manipulálni. E külső modellezővel az objektumokat (illetve azok mesh szerkezetét) olyan részletességgel kell létrehozni (valamint felületeik textúráját illeszteni), hogy azok a későbbi felhasználás során további módosítás nélkül felhasználhatóak legyenek. Némely esetben már az itt elkészített objektum is több kisebb objektum egyesítésével illetve kombinációjával jön létre. Ennek ellenére a szerkesztés későbbi, a tervező modullal végzett szakaszaiban az itt előre elkészített objektumokat egy egységként kezeljük, ezért rajtuk később semmilyen módosítás nem végezhető el.
4. MEGJELENÍTÉS Alkalmazásunkban ötvöztük a valósidejű és nem valósidejű képszintézis algoritmusok előnyeit. Valósidejű algoritmus az, ami egy háromdimenziós jelenetleíró adatbázisból futási időben állítja elő az éppen aktuális nézőpontnak, fényviszonyoknak stb. megfelelő nézeti képet. Mindezt olyan sebességgel, hogy a szemlélő folyamatos — minimum 25...30 FPS (egy másodperc alatt levetített képkockák száma) képváltási frekvenciájú — animációt lásson. A nem valósidejű algoritmusok azonban egy-egy kép előállításakor néha több percig vagy akár több óráig is futhatnak.
4.1. Valósidejű eszközök Ahhoz, hogy minél gyorsabb (folyamatosabb) legyen a mozgás a barangolás folyamán, a grafikai megjelenítést a lehető legoptimálisabb és
legegyszerűbb módszerekkel kellett megvalósítanunk. Az általunk alkalmazott Java3D grafikai könyvtár használatával ugyan megfelelő sebességet voltunk képesek elérni, azonban — mivel ez lokális illuminációs elvvel működik — a megjelenített kép minőségi szempontból kifogásolható volt. A valóságban egy-egy objektum megvilágítási szintjének kialakításában nemcsak a fényforrások, hanem az összes többi objektumról visszatükröződő fény is részt vesz. A lokális illumináció ezzel nem foglalkozik. Ahhoz, hogy ezt a csatolást valamilyen szinten mégis figyelembe vegyük, egy a számítógépes grafikára jellemző csalással éltünk: ha a környezeti objektumokra olyan speciális textúrákat feszítünk, amik az objektumok felületiés anyagtulajdonságain kívül tartalmazza a zárt objektumtérre amúgy is jellemző közel állandó fényviszonyok hatását, akkor a kapott látvány kellően élethű lesz.
4.2. Nem valósidejű eszközök Az off-line módon (a bejárást megelőzően) végzett fényviszonyszámítás velejárója, hogy ekkor nincs lehetőségünk a néző pozíciójának figyelembevételére. Ezért csak a matt, ún. diffúz megvilágítás valószerű modellezésére van lehetőség. Ennek kiszámítását a globális illuminációt megvalósító RenderX programmal végezzük. A globális illuminációs algoritmusok, már figyelembe veszik a többi objektumról teljesen vagy részlegesen visszavert fényt is [Szirm95, Szirm99].
6. ábra: Baloldalt egy jelenet böngészőbeli képe, jobboldalt speciálisan megvilágított, globális illuminációval renderelt mása látható
A kapott eredményt a gyors megjelenítés érdekében textúraként tároljuk, amelyeket az objektumokra feszítve gyorsan, a bejárás során minimális számításigénnyel érhetünk el a valóshoz hasonló fényhatásokat. A globális illuminációval készített képek egyébként rendkívül élethűek, ezen kívül olyan
problémák is kezelhetőek ezen algoritmusokkal, amik egyszerűbbekkel már nem: például a caustics jelenség (prizma, lencse, foncsor fénygyűjtő hatása).
5. A PROGRAM TOVÁBBI LEHETŐSÉGEI Mint említettük, a jelenlegi felhasználásban, az atomerőművi környezetben fontos szerepet kap a sugárzási térkép. Ennek a felhasználóval való érzékeltetésére több lehetőség merült fel. A legegyszerűbb, ha a padlózat színezetével jelöljük a sugárzási értékeket. Másik lehetőség, ha köd formájában kerülne megjelenítésre, de ez igen erőforrás-igényesnek tűnik. A hangforrások általi megjelenítés még életszerűbbnek tűnik, hiszen a sugárzás a valóságban sem látható, és így a padlózat színe és mintázata is megmaradhat eredeti formájában.
5.1. Egyéb alkalmazási területek Maga a program teljesen független a szerkesztendő objektumtértől. Az atomerőművi környezet csak egy a lehetséges felhasználások közül. Ugyanígy lehetne az eszközzel éttermet, kórházat, mozi-, vagy színházi nézőteret tervezni. Más környezetbe való átültetéskor módosítanunk kell a tervező modul objektumkészletét, valamint az ellenőrző modul felülvizsgálati szabályait. Ezek után az alkalmazást teljesen hasonlóan lehetne használni tetszőleges környezetben.
5.2. Implementálás Az alkalmazásunkkal szemben támasztott egyik legfontosabb követelmény a platformfüggetlenség volt. Ezért esett a választás a Java fejlesztési környezetre, bár ennek sajnos a futásteljesítmény és a gépigény látta kárát. Ha a teljesítményre kellett volna optimalizálni, akkor C programozási nyelvben implementáltuk volna a programot. A Java nagy előnye továbbá, hogy esetleges későbbi eszközfejlesztés esetén — például ha a monitor alapú megjelenítés helyett virtuális sisakra kellene áttérni — a programkódnak csak egy igen szűk, jól behatárolható részét érintené a szükséges változás. Így csupán a megjelenítésért felelős részt kellene átírni az új alkatrészeknek megfelelően. Ezen eszközökhöz a gyártók külön könyvtári támogatást mellékelnek, ezzel is csökkentve a módosításra fordítandó energiát.
KÖSZÖNETNYILVÁNÍTÁS Ez a munka az Országos Tudományos és Kutatási Alap támogatásával készült (OTKA ref. No.: T029135).
IRODALOM- ÉS WEBJEGYZÉK [Aurum97] AURUM-BOCA: 3D Studio MAX, Aurum DTP Stúdió Kiadó, Kereskedelmi és Szolgáltató Kft, 1997 [Board98] Ted BOARDMAN, Jeremy HUBBELL: Inside 3D Studio MAX volume II: Modeling and Materials, New Riders, 1998 [Fuzi95] 1995.
FÜZI János: 3D grafika és animáció IBM PC-n, ComputerBooks,
[Maest98] George MAESTRI, et al: Inside 3D Studio MAX - volume III: Animation, New Riders, 1998 [Sowizral2000] Henry SOWIZRAL, Kevin RISFFOTH, Michael DEERING: The Java 3D API Specification, Second Edition, Addison-Wesley, 2000. [Szirm95] DR. SZIRMAY-KALOS László (szerkesztő): Theory of threedimensional computer graphics, Akadémia Kiadó, 1995. [Szirm99] DR. SZIRMAY-KALOS László: Számítógépes grafika, ComputerBooks, 1999. [www3DS]
http://www.the3dstudio.com
[wwwOGL]
http://www.opengl.org (OPENGL honlapja)
[wwwSGI] http://www.sgi.com/Technology/OpenGL (SILICON GRAPHICS, INC. honlapja) [wwwVRML] http://www.vrml.org/Specifications/VRML97/index.html (THE VRML CONSORTIUM, INC. honlapja)