A VRML (Virtual Reality Modeling Language) 1.0 - ás verziója 1995 februárjában jelent meg az interneten. Az e nyelven megírt *.wrl , azaz wrl kiterjesztésű programok (például) a Netscape 3.0 , a Netscape 3.0 Gold , vagy a Netscape Communicator browser -rel futtathatók.
Aki ilyen keresőprogrammal jutott erre a WWW oldalra, próbálja beolvasni ezt a legelső keze ügyébe eső fájlt.
Ha ezzel sikerült egy rajzot elővarázsolnia, itt folytassa az olvasást, ha nem akkor bizonyára a az ön által használt HTML megjelenítő (browser) telepítésekor nem csatolta a vrml fájlok megjelenítését biztosító programok egyikét sem, vagy ehhez a browserhez nincs is ilyen megjelenítő.
Mi ebben a leírásban főként a Live3D megjelenítőre fogunk hivatkozni, ezért kérjük töltse le az ön gépének megfelelő programot, amelyet elindítva fel tudja készíteni az ön által használt keresőprogramot a vrml fájlok megjelenítésére. A Live3D a Netscape Navigator Gold keresőprogram plug-in -je, ezért, ha ezt a szöveget más browserrel olvassa, térjen át erre a megjelenítőre, bizonyára le tudja tölteni a hálózatról, pl. innen.
Ha az ön a Netscape Navigatorral
olvassa ezeket a sorokat, és még nem fut a Live3D VRML
megjelenítő, akkor Win 95 , vagy
Win 98 aoperációs rendszert
használva a megfelelő plug-in: 3dns32g.exe
. (Létezik
ugyan a Live3D megjelenítőnek a későbbi (3dns32h.exe
) változata is de ezt nem ajánljuk, mert a sok lapból
álló alakzatokat nem heleníti meg.)
Ha Win 3.1
-es operációs rendszert használ, akkor ezzel egészítheti
ki HTML megjelenítőjét: 3dns16h.exe
Egy 2004-ben tett megjegyzés:
Ez a weboldal, valamint az egész VRML 1.0-ról irt anyag lényegében
1997-ben készült. Reméljük, nem túl sokat vesztett azóta sem az aktualitásából.
Az újabb verziójú NETSAPE browserek már nem feltétlenül kompatibilisek a fenti
Plug-in ekkel. Ezért javasoljuk a
NETSCAPE NAVIGATOR GOLD browser (béta verzió) teljes
letöltését és installálását, amely a PC WORD 1996-os októberi számában jelent
meg. Ez tartalmazza a LIVE3D plug-int is. Úgy véljük, most (2004-ben) sem
találhatók ennél lényegesen jobb VRML(1.0) megjelenítők. Ennek talán az az
oka, hogy 1996-ban még úgy tűnt, hogy a VRML a térgeometiai alakzatok
megjelenítésének a legjobb eszköze, később azonban más irányba (JAVA alapú
alkalmazások) irányába fordultak a fejlesztők, így a vrml megjelenítők
fejlesztése megrekedt.
Az új nem feltétlenül jobb.
Aki ismer a (Live3d -n kívül) a térgeometriai alakzatok interaktív mozgatására
olyan kényelmes
eszközt, amely a bal egér gombbal a kamerát, jobbal magát az alakzatot mozgatja
kérem jelezze.
Szilassi
Lajos
Ha a telepítés sikerült,
ismét kísérelje meg az előbbi VRML fájl
beolvasását.
Mi itt a
VRML
1.0 programmal fogunk kissé alaposabban megismerkedni.
Ezt ajánljuk a kezdő VRML felhasználóknak is.
Csak annak célszerű a jóval bonyolultabb VRML 2.0 -vel
foglalkoznia (akár aVRML jelenetek szemlélése, akár
ilyen fájlok készítése céljából),
aki már kellő jártasságra tett szert a VRML
1.0 világában.
Ezen belül főként a Live 3D megjelenítő kezelését, tulajdonságait elemezzük. Tapasztalataink szerint ugyanis ez a szóba jöhető megjelenítők között az egyik legegyszerűbb, leggyorsabb, legkisebb hardware kiépítettség mellett is jól használható. Hátránya, hogy nem alkalmas a VRML 2.0 -ban irt fájlok megjelenítésére.
Az előbb látott VRML jelenetben egy rajzot találunk, három, egymásra páronként merőleges un. arany-téglalap rajzát. Próbálkozzunk kicsit játszani az egérrel, lenyomott bal, ill. jobb billentyű mellett. Ezzel mozgathatóvá válik az ábrázolt alakzat. Mivel ez a rajz mozgatható, szokás inkább jelenetnek hívni a képernyőn látottakat. Nem fosztjuk meg az olvasót - pontosabban a megjelenítő használóját - az önálló felfedezés örömétől, kitalálható, hogy milyen egér, ill. billentyű hatásokra miként változik, mozog az ábrázolt tárgy képe, színe (világítása), azaz a jelenet.
Ez a nyelv lényegében (sokszögekből álló) térgeometriai alakzatok megjelenítést tűzi ki célul, ennek megfelelően az alakzatok megadásával, megjelenítésével kapcsolatos problémák megoldására specializálódik.
A VRML nyelvet legkönnyebben példákon keresztül ismerhetjük meg. Javasoljuk az olvasónak, hogy ezt a leírást, valamint az itt beolvasott *.wrl kiterjesztésű fájlokat töltse le a saját gépére, és az itt olvasottak jobb megértése céljából módosítsa, egészítse ki, bővítse saját készítésű, ill. a WWW -ről hozott újabb fájlokkal.
Egy új programnyelv megismerésekor mindig első kérdés, hogy milyen a nyelv szerkezete, jelen esetben pedig a legfontosabb kérdések: az ábrázolt geometriai alakzat leírására, az ábrázolt geometriai alakzat megjelenítése, tulajdonságai (színe, megvilágítása, a koordináta-rendszerben elfoglalt helye, stb.) és természetesen a keletkezett kép interaktív változtatása, amelynek azért mégis csak tudatosnak kell lennie. Mindezek a kérdések természetesen egyszerre vetődnek fel, ezért azt ajánljuk az olvasónak, hogy az érdeklődésének megfelelően maga válassza ki az ismeretek megszerzésének a sorrendjét, akár úgy, hogy először csak nagy vonalakban ismerkedjen meg egy-egy kérdéssel, későbbre halasztva a részletekben rejlő "finomságok" megismerését.
Bevezetésül hívjunk be egy igen rövid fájlt a kocka.wrl -t . Ennek a meglepően rövid fájlnak az ASCII kódja:
#VRML V1.0 ascii
Separator { # A főblokk
Cube { } # Előre definiált kocka
} # A főblokk << vége >>
Minden VRLM 1.0 nyelven megírt programnak ugyanezzel a #VRML V1.0 ascii sorral kell kezdődnie.
A nyelv szerkezete blokkokra - csomópontokra - (node) tagolható: ezek a tulajdonság-, az alakzat- , valamint a csoport- blokk. Minden blokk a neve után írt { jellel kezdődik, és a} jellel fejeződik be. A csoportblokk neve Separator , a tulajdonság blokk neveként szereplő szavakat a nyelv leírásából ismerhetjük meg. Az alakzatblokkban lehetnek a nyelv alapértelmezésében szereplő, vagy általunk definiált nevek. Az előbbi példánkban az iniciáló sort egyetlen főblokk (csoportblokk) követi, amely jelen esetben egyetlen alakzatblokkot ( Cube { } ), egy kocka megrajzolását tartalmazza. Érdemes kipróbálni, hogy itt még a csoport kezdő és záró sora is elhagyható, ezzel igazán rövid, de működő programhoz jutunk. Ezen a rövid példán keresztül megérthetjük a nyelv filozófiáját: minden olyan adatnak, amit mi nem adtuk meg a programban, de a rajz elkészítéséhez elengedhetetlenül szükséges (pl. az alakzat színe, világítás, a kamera - alakzathoz viszonyított - helyzete, a koordinátarendszer méretezése, stb.) van egy optimálisan beállított alapértéke, amely lehetővé teszi a rajz elkészítését. Természetesen, ha mi pl. egy piros kockát szeretnénk ábrázolni ortogonális axonometriában, úgy, hogy már a megjelenő rajzon lássuk három lapját, akkor ezeket a feltételeket a program fájlban meg kell adnunk, felülírva az eredetileg megadott értékeket.
A # jelet követően megjegyzést írhatunk a programba, amely azonban nem nyúlhat át a következő sorba. Ettől eltekintve nincs jelentősége annak, hogy mit írunk új sorba, itt (is) az áttekinthetőség szempontja dominál.
Most nézzünk egy bonyolultabb példát. Futtassuk a testek.wrl jelenetet! A programlista alapos elemzése a legtöbbször kellő információt nyújt egy nyelv szintaxisának a - kezdő szintű - megismeréséhez.
#VRML V1.0 ascii
Separator { # A főblokk
Separator { # egy kúp és téglatest csoport blokkja
Material { # A kúp színe
diffuseColor 0 1 0 # Zöld
}
Translation { # A kúp és téglatest eltolása
translation -3 0 0
}
Cone { # a kúp
parts ALL
bottomRadius 1 # alapkör sugara
height 1.72 # magassága
}
Separator{ # téglatest csoportblokk
Translation { # eltolás
translation 0 -2 0
} # eltolás << vege>>
Cube {
height 0.2
}
} # téglatest csoportblokk << vége>>
} # a kúp es téglatest csoportblokk << vége>>
Separator { # egy egyedüli téglatest
Material { # A téglatest színe (tulajdonság blokk)
diffuseColor 0.5 0 0.5 # Lila
}
Translation { # eltolás (tulajdonság blokk)
translation 0 -2 0
} # eltolás << vege>>
Cube { # a téglatest méretezése (alakzat blokk)
width 1
height 0.2
depth 2
} # a méretezés << vége>>
} # téglatest blokk << vége>>
Separator { # Egy gömb
Material {
diffuseColor 1 0 0 # Piros
}
Sphere {
radius 1.4142 # negyzetgyok(2)
}
} # a gömb blokk << vége>>
Separator { # Egy henger és egy téglatest blokkja
Material {
diffuseColor 0 0 1 # Kék
}
Translation { # eltolás az X tengely mentén
translation 3 0 0
}
Separator { # A henger blokk
Cylinder {
parts ALL
radius 1
height 2
}
}# henger blokk << vege>>
Separator { # téglatest
Translation { # eltolás a hengerhez képest
translation 0 -2 0
} # eltolás << vege>>
Cube { # téglatest méretezése
width 2
height 0.2
depth 1
} # a méretezés << vége>>
} # téglatest blokk << vége>>
} # a henger és téglatest blokk << vége>>
Separator{ # alapértelmezett kocka
Cube { }
} # kocka blokk << vége>>
Separator{ # szöveg
Translation { # eltolás Y mentén
translation 0 2 0
} # eltolás << vége>>
FontStyle {
size 1
family TYPEWRITER
style NONE
} #FontStyle << vége>>
AsciiText {
string "Geometriai alakzatok"
spacing 1
justification CENTER
width 0
} #AsciiText << vége>>
} # szoveg blokk << vége>>
} # a főblokk << vége>>
A fenti példában pl. a főblokk öt csoportblokkból (kúp és téglatest; egyedüli téglatest; gömb; henger és téglatest; szöveg) és egy alakzatblokkból (a kocka) áll. A főblokkhoz nem írtunk tulajdonságblokkot, így a kocka az alapértelmezett színt (szürke) kapta. Ugyancsak az alapértelmezés szerinti színt kapta a szöveg, mivel nem írtunk szín beállítást a csoportblokkjába. A "kúp és téglatest" blokk két tulajdonságblokkot (szín és eltolás), egy alakzat blokkot (a kúp) és egy csoportblokkot tartalmaz, amely maga is egy eltolást adó tulajdonságblokkból és egy téglatestet definiáló alakzat blokkból áll.
Egy csoportblokknak - amennyiben tartalmaz rajzolásra váró alakzatot - , vagy egy alakzatblokknak önállóan is futtathatónak kell lennie. Egy tulajdonságblokknak pedig nyilvánvalóan valamilyen alakzatra (vagy alakzatot is tartalmazó csoportra) kell vonatkoznia. Az ugyanolyan típusú blokkok sorrendje tetszőleges, de a tulajdonság- blokknak meg kell előznie azt az alakzat-, vagy csoportblokkot, amelyre vonatkozik. Egy blokkon belüli alakzat-, vagy csoportblokk -a leszármazott (gyermek) - örökli a tartalmazó - ős (szülő) - blokk tulajdonságait, hacsak nem vesz fel helyettük új (a leszármazott blokkon belül megadott) tulajdonságokat.
Ha valamely blokkban szintaktikai hibát vétünk, (pl. elhagyjuk a megjegyzésünk előtti # jelet), akkor a hibát tartalmazó blokk - de csak ez - nem kerül végrehajtásra. A nyelvben a kis- és nagybetű felcserélése nem megengedett. Íme két ilyen típusú hiba hatása.
Ez a megállapítás azonban nem A VRML nyelvnek, hanem a Live3D megjelenítőnek a tulajdonsága. Az előbbi fájlt -mivel tartalmaz hibát - pl. a COSMO PLAYER megjelenítő, amely a VRML 1.0 -ban írt fájlokat a megjelenítés előtt konvertálja 2.0 formátumra, egyáltalán nem tudja megjeleníteni.
A program fejlécét tartalmazó első sorba a #VRML karaktersorozat elé semmi nem kerülhet. PL ha a # jel helyett egy szóközzel kezdődik a fájl, nem fut az egész program.
Mivel a *. wrl fájlok ASCII kódban írt programok, minden olyan szövegszerkesztővel módosíthatók, amely csak ASCII kódokat tartalmaz. (Norton editor, Pascal szerkesztő, a WIN 95 jegyzettömbje,stb.)
A további példaprogramok elemzéséhez ajánljuk, hogy a Netscape 3.0 View /Document Source menüpontjával vizsgálja meg a kedves olvasó az éppen futtatott VRML fájl ASCII kódú forrásprogramját. Bár azt is megteheti, hogy valamely ASCII kódú szövegszerkesztővel folyamatosan végrehajtja az itt leírt , vagy önállóan kigondolt módosításokat, a használt browser reload menüpontjával (a Netscape esetében Ctrl - R) állandóan ellenőrzi a változtatás eredményét.
Geometriai alakzatok nyelvi leírása (alakzat-blokk)
Mint említettük, a VRML nyelv tulajdonképpen síklapok (síklapú testek) ábrázolására alkalmas. Tapasztalni fogjuk, hogy a görbe felületeket is síkidomokkal (háromszögekkel) közelítjük meg. Ha két, vagy több síkidom metszi egymást, akkor a program(nyelv) gondoskodik arról, hogy ezeket a helyes láthatóság szerint ábrázolja.
Kocka (téglatest)
Cube {
width 2 # méret az X tengely irányában
height 0.2 # méret az Y tengely irányában
depth 1 # méret a Z tengely irányában
}
alakzatblokk olyan téglatestet ad meg, melynek a középpontja az origóban van, méreteit mi magunk állíthatjuk be a fenti módon.
Kúp
Henger
Gömb
Szöveg
Ha az eddig bemutatott "előre gyártott" alakzatokat az interaktív lehetőségeinket kihasználva annyira megközelítjük, hogy a nézőpontunk a tárgyon belül legyen, akkor azt tapasztaljuk, hogy mindegyikük belülről nézve átlátszó. A jelenséggel majd itt ismerkedünk meg részletesebben.
Csúcsaikkal adott sokszöglapok
Geometriai alakzatok tulajdonságai (tulajdonság-blokk)
Bevezetésképpen itt említjük meg, hogy a leszármazott (belső, v. gyermek) csoportblokkban megadott tulajdonság blokkok egy része felülírja a ős (külső, v. szülő) csoportblokk tulajdonságait, - ilyen pl. az alakzat színét meghatározó tulajdonságblokk - más részük, - pl. az eltolásra vonatkozó - módosítja azt oly módon, hogy végrehajtódik a külső, majd a belső blokkban megadott transzformáció is.
Ha ugyanaz a csoportblokk több geometriai transzformációt, pl. egy forgatást és egy eltolást tartalmaz, akkor ezeket a program a felírt sorrendben hajtja végre, emiatt alaposan meg kell terveznünk a transzformációk sorrendjét.
A koordinátarendszer
Eltolás
Az ábrázolni kívánt alakzatot például a
Translation { # eltolás
translation 5 7 -3
} # eltolás << vege>>
tulajdonságblokk alkalmazásával az (5,7,-3) pontba toltuk el. Az eltolás vektorát meghatározó három számot szóközökkel választjuk el egymástól. Persze ezt az eltolást akkor érzékeljük, ha van mihez viszonyítani, azaz van olyan alakzat is, amelyre nem vonatkozik. Ugyanis - mint később látni fogjuk - ha nem adunk más utasítást, a kamera automatikusan "szembe" fordul a megkonstruált alakzattal, így pl. az itt látható két jelenet, a koordináta-2 és a koordináta-3 között első pillantásra nincs lényeges különbség, bár az utóbbit méreteihez képest messzire eltoltuk az origóból. Ha azonban megmozdítjuk a két alakzatot, (pl. forgatni kezdjük az egér jobb gombjával), akkor már érzékelhető az eltolás hatása.
Forgatás
Példaként vizsgáljuk meg a már ismert alakzatokon végrehajtott forgatásokat. Ha egy alakzat-blokkot (vagy csoport-blokkot) egy forgatásnak és egy eltolásnak vetünk alá, akkor fontos megterveznünk e transzformációk sorrendjét. Ugyanis ezeket a műveleteket a program a felírás sorrendjében hajtja végre.
A két transzformáció együttes alkalmazására nézzünk egy összetettebb példát. Az un. SOMA egy logikai játék, amelyben az itt látott alakzatokból egy kockát kell összeállítani. Maguk az alakzatok is kockákból tevődnek össze, így leírásuk a VRML nyelvvel igen röviden, könnyen megvalósítható. Akinek az itt látott összeállítás alapján nehezen menne egy 3*3-as kocka összerakása, segítségképpen iktassa ki a programból a (csoport-blokkokra vonatkozó) forgatásokat, ezzel segítséget kap az összeállításhoz. Ha ez sem elegendő, akkor - egyenként - iktassa ki az eltolásokat is. (E sorok írójának nem titkolt szándéka, hogy rávegye az olvasót a soma.wrl fájl szerkesztésére, ezért nem mutatja be ezeket a törlésekkel előálló rajzokat.)
Skála (affin transzformáció)
Amennyiben pontosan meghatározott cél érdekében alkalmazunk valamilyen egybevágósági, vagy affin transzformációt, akkor bizony alaposabb (matematikai) megfontolásokra van szükségünk.
A kamera
Perspektív ábrázolás
PerspectiveCamera{
position 8 4 6
orientation -1 2 0 1 # itt 1 radián a forgatás szöge
}
Axonometrikus ábrázolás
OrthographicCamera{
position 8 4 6
orientation -1 2 0 2.126 # itt ez a forgatás szöge (ívmértékben)
focalDistance 10
}
Scale{
scaleFactor 0.1 0.1 0.1
}
A kétféle ábrázolási módról, a kamera beállítási lehetőségeiről Itt találhatók további információk.
Színek megadása
Material {
diffuseColor 0.3 0 1 # Kékeslila
}
Pl. a fenti tulajdonságblokkal egy enyhén lilás kék színt állítottunk elő. A diffuseColor arra utal, hogy a lerajzolt felület matt, mintha szórt fényben néznénk. Példaként nézzük meg, hogy miként hat a világítás - interaktív - változtatása más-más "minőségű" felületre.
A különböző színárnyalatok készítéséhez szükséges 0 és 1 közötti paraméterek ezen a palettán 1/6 -odonként változnak.
Az egy - egy sokszöghöz rendelt színt egy tömbben is tárolhatjuk, így az ábrázolt alakzat minden lapja kaphat különböző színt. Erre két lehetőségünk van. Egyik esetben a tömbben pontosan ugyanannyi színt kell megadnunk - a lapok megadásának megfelelő sorrendben -, ahány lapot ábrázolni szeretnénk. Erre itt láttunk példát:
Material { diffuseColor [ 1 0 0 , 0 1 0 , 0 0 1 ] }
MaterialBinding {value PER_FACE}
Ha több lapot rajzolunk, mint amennyi színt megadtunk, akkor ciklikusan ismétlődnek a megadott színek. Ha több lapot szeretnénk ugyanolyanra festeni, akkor egy külön tömbben kell felsorolnunk, hogy melyik sorszámú laphoz milyen sorszámú színt rendeljünk:
Material { diffuseColor [ 1 0 1 , # lila
1 1 0 , # sárga
0 1 1 , # türkizkék
1 1 1 ] # szürke
}
MaterialBinding { value PER_FACE_INDEXED }
. . .
materialIndex [ 0, 2, 3, 1, 2, 1, 3, 0, 1, 3, 0, 2 ]
Erre példa ez a dodekaéder, melynek úgy színeztük a lapjait, hogy az azonos színek ne kerüljenek egymás mellé.
Ha két, azonos síkban fekvő, egymást (részben vagy egészben) fedő sokszög más - más színt kap, akkor a program "nem tudja", hogy milyenre rajzolja ezt a közös területet, ezért a kép vibrál, mint pl. itt.
Az alapértelmezés szerinti (szürke) szín-paraméterek:
Material {
ambientColor 0.2 0.2 0.2 # környező szín
diffuseColor 0.8 0.8 0.8 # szétterjedő szín
specularColor 0 0 0 # a világos részek
emissiveColor 0 0 0 # sugárzó szín
shininess 0.2 # fényesség
transparency 0 # áttetszőség
}
Javasoljuk az érdeklődőknek, hogy további kísérletekkel állítsanak elő az ízlésüknek (és türelmüknek) megfelelő színeket, állítsanak elő különböző minőségű felületeket. Példaként nézzük meg ezeket az áttetsző felületű, egymásba helyezett kockákat.
ShapeHints { vertexOrdering COUNTERCLOCKWISE
shapeType SOLID
faceType CONVEX }
tulajdonságblokkot, akkor ezzel szabályoztuk, hogy csak akkor látsszon egy lap, ha a képének a körüljárási iránya az óramutató irányával megegyezik, azaz CLOCKWISE. Íme itt az eredmény. Mint látni fogjuk ez a körüljárás függő láthatóság a Live3D megjelenítő alaptulajdonságaként is beállítható.
Háttér
Kapcsolók
AVRML nyelven megírt ASCII fájljainkat - amennyiben a Netsape 3.0 browserrel olvastuk be - a Live3D program jeleníti meg, így most ennek a megjelenítőnek a (koránt sem teljes) leírását kíséreljük meg. Előfordulhat, hogy más megjelenítő programmal más kezelési feltételekkel jutunk az itt leírtakhoz hasonló ábrákhoz.
Elöljáróban elgondolkodhatunk azon, hogy ha egy geometriai alakzatot mozogni látunk a képernyőn, akkor a legtöbbször ezt a mozgást felfoghatjuk úgy is, mint ha a tárgy rögzített helyen állna és mi körüljárjuk, megnézzük máshonnan, fölé, vagy alá tekintünk, stb. Ugyanezt a látványt úgy is felfoghatjuk, mint ha mi állnánk egy helyben és a tárgy mozogna körülöttünk. Még e két eset kombinációja is előfordulhat (akár ebben a leírásban is). Lényegét tekintve mindenképpen egy dolog történik (a mi elképzeléseinktől függetlenül): meghatározott módon változik a centrum, a képsík és az ábrázolt tárgy kölcsönös helyzete.
Vizsgálódásunk tárgyául válasszuk a már látott színpalettát.
Rendre próbáljuk ki a vrml kép (alsó) menüsorában lévó kapcsolók hatását. A walk, spín, look és a slide menüpontok közül mindig pontosan egy az aktív, amelyet a szokott módon, klikkentéssel választhatunk ki. A lamp egy kétállapotú kapcsoló, a wiew pedig egy nyomógomb, melyekre ráklikkenthetünk.
Jobbra mutató háromszög. A Live 3D megjelenítő alsó menüsorában a baloldali első jel egy kétállapotú kapcsoló, amely hasonlít a szokásos lejátszás - stop kapcsolóhoz. Ezzel külön-külön is megforgathatjuk egy - egy blokk objektumait az X, Y vagy a Z tengely körül, ha annak előzőleg nevet adtunk, és megadjuk a forgás tengelyét és sebességét. Pl. így:
Spin { objectname "henger"
yangle 0.052359878
axes GLOBAL
}
A sebességet
természetesen az egyszeri elmozdulás - ívmértékben
mért - szögével adjuk meg.
A jobboldali egérgombbal egyszer klikkentve kinyílik egy menü ablak. Az itt feltáruló lehetőségek közül csak a legfontosabbakat említjük.
Detail (részletek)
Solid (poliéder testlapok)
Wrieframe (drótkeret)
Point Cloud (pontfelhő)
Options
Koránt sem állíthatjuk, hogy ezzel teljes leírását adtuk a vrml nyelvnek. Reményeink szerint már az eddigiek alapján is kaphat az érdeklődő annyi eligazítást, amely elegendő néhány egyszerűbb önálló vrml fájl előállítására. Ugyanis úgy véljük, a saját (programírás közben szerzett) tapasztalat a legjobb tanítómester.
Bár az eddigiek alapján egy alkalmas szövegszerkesztővel igen igényes jelenetsort állíthat össze a kellő kreativitással , ambícióval megáldott olvasó, azonban ennek a munkának igen sok buktatója lehet. Talán legnagyobb az, hogy egy szintaktikai hibát esetenként igen nehéz felismerni, többnyire csak az eredményét látjuk, ti. azt, hogy nem látunk semmit. Ezért - mint magazinunk következő számaiban látni fogjuk - vannak egészen érdekes, jól használható programok, amelyek különböző VRML fájlokat állítanak elő, többnyire előre elkészített panelek felhasználásával.
Mi is bemutatunk egy magyar fejlesztésű VRML fájl szerkesztőt, amelyet az - eddigiek áttanulmányozása után - melegen ajánlunk az érdeklődők figyelmébe.
Ugyanitt talál az olvasó egy "képeskönyv"-et, amely amellett, hogy bemutat jó néhány VRML jelenetet, olyan csatolási pontokat is közöl, amelyeken keresztül alaposabban megismerkedhet az olvasó a virtuális valósággal, illetve az ezt leíró programnyelvvel.
Arra kérünk minden érdeklődőt, írja meg a nyelv megismerése során szerzett tapasztalatait, hívja fel figyelmünket a fenti leírásban talált esetleges hibákra, hiányosságokra. Nagy örömünkre szolgálna, ha az összegyűjtött tapasztalatok felhasználásával állandóan finomodhatna, bővülne ez a leírás.
Kérjük, írja meg észrevételeit: szilassi@jgytf.u-szeged.hu
Minden érdeklődőnek az önálló felfedezés örömét, jó munkát kíván: