1 / 32

VRML Virtual Reality Markup Language (virtuális valóságot jelölő nyelv), később

VRML Virtual Reality Markup Language (virtuális valóságot jelölő nyelv), később Virtuál Reality Modelling Language (virtuális valóságot modellező nyelv). A VRML fájlok az alábbi négy fő összetevőből állnak: A VRML fejléc Prototípusok Alakzatok, interpolátorok, szenzorok és scriptek

Download Presentation

VRML Virtual Reality Markup Language (virtuális valóságot jelölő nyelv), később

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VRML Virtual Reality Markup Language (virtuális valóságot jelölő nyelv), később Virtuál Reality Modelling Language (virtuális valóságot modellező nyelv)

  2. A VRML fájlok az alábbi négy fő összetevőből állnak: • A VRML fejléc • Prototípusok • Alakzatok, interpolátorok, szenzorok és scriptek • Útvonalak • A VRML fájl az előbbieken kívül még az alábbi elemeket is tartalmazhatja: • Megjegyzések • Csomópontok • Mezők és mezőértékek • Definiált mezőnevek • Használt mezőnevek

  3. A VRML FEJLÉC SZINTAXISA • #VRML V2.0 utf8 • A böngészők különbséget tesznek a kis- és a nagybetűk között. A fejléc arról tájékoztatja a böngészőt, hogy az utána következő fájl • VRML fájl, • megfelel a VRML 2.0 specifikációnak és • az UTF-8 nemzetközi karakterkészletet használja. • Megjegyzések: #-el kezdődnek

  4. CSOMÓPONTOK • Leírják a világban lévő alakzatokat és azok tulajdonságait • A csomópontok általánosságban az alábbi elemekből állnak: • a csomópont típusa (kötelező) • kapcsos zárójelpár (kötelező) • néhány mező (nem kötelező) és mezőérték, amelyek a kapcsos zárójelpár között meghatározzák a csomópont tulajdonságait • Cylinder { • height 2.0 • radius 2.0 • }

  5. MEZŐK ÉS MEZŐÉRTÉKEK A mezők (fields) egy csomópont tulajdonságait határozzák meg. pl:height 2.0 radius 2.0 CSOMÓPONTOK ELNEVEZÉSE DEF SZINTAXISA DEF csomópont_neve csomópont_típusa (…) USE SZINTAXISA USE csomópontnév

  6. AZ ALAKZATOK LEÍRÁSA • Egy VRML alakzatot az alábbi elemek írnak le: • az alakzat geometriája, ami a háromdimenziós felépítését határozza meg, • az alakzatnak az a színes (piros, kék stb.) anyaga (material), amiből az alakzat készül, és ami az alakzat megjelenését (appearance) határozza meg, valamint • a mintázat (texture) – például fa vagy tégla -, ami az alakzat felületét határozza meg. • A VRML fájlban egy alakzat geometria és a megjelenés tulajdonságait a Shape (alakzat) csomóponton belüli mezőértékek határozzák meg.

  7. ALAKZATOK CSOPORTOSÍTÁSA Az alakzatok csoportokba foghatók össze a Group csomóponttal. A csoport alakzatait csoportba foglaló csomópontnak szülő (parent) a neve. A csoportot alkotó alakzatokat a csoport gyermekeinek (children) nevezik. Ha egy csoportot egy nagyobb csoport tartalmaz, akkor azt mondjuk, hogy az előző csoport be van ágyazva (nested) a nagyobb csoportba

  8. ESEMÉNYEK ÉS ÚTVONALAK • Ahhoz, hogy a világban meglévő építményeket dinamikussá lehessen tenni, az utasítások közé „behuzalozott” utasításokat is fel lehet venni. • A VRML-ben a huzalozás két elemből tevődik össze: • egymással összehuzalozott csomópont-párból és • két csomópontot összekapcsoló huzalozási útvonalból (route). • Pl: • ROUTE Clock.fraction_changed TO CubePath.set_fraction • ROUTE CubePath.value_changed TO Cube.set_translation

  9. BEÉPÍTETT ALAKZATOK • A Shape csomópontot használva primitív alakzatokat készíthetünk. • Ilyen előre definiált vagy más néven primitív alakzat • a Box (hasáb), • a Cone (kúp), • a Cylinder (henger) • és a Sphere (gömb) csomópont.

  10. A SHAPE CSOMÓPONT SZINTAXISA Shape { appearance NULL #exposedField SFnode geometry NULL #exposedField SFnode } Az apearance mező olyan csomópontot specifikál, ami leírja az alakzat megjelenését, beleértve a színét és a felületének mintázatát. A geometry mező értéke olyan csomópontot specifikál, ami leírja az alakzat 3-D formáját, vagyis a geometriáját.

  11. A BOX CSOMÓPONT SZINTAXISA Box { size 2.0 2.0 2.0 #field SFVec3f } #VRML V2.0 utf8 Shape { appearance Appearance { material Material { } } geometry Box { size 1.0 3.0 5.0 } }

  12. A CONE CSOMÓPONT SZINTAXISA Cone { bottomRadius 1.0 #field SFFloat height 2.0 #field SFFloat side TRUE #field SFBool bottom TRUE #field SFBool } #VRML V2.0 utf8 Shape { appearance Appearance { material Material { } } geometry Cone { bottomRadius 3.5 height 1.5 } }

  13. A CYLINDER CSOMÓPONT SZINTAXISA Cylinder { Radius 1.0 #field SFFloat height 2.0 #field SFFloat side TRUE #field SFBool top TRUE #field SFBool bottom TRUE #field SFBool } #VRML V2.0 utf8 Shape { appearance Appearance { material Material { } } geometry Cylinder { radius 4.0 height 1.0 } }

  14. A SPHERE CSOMÓPONT SZINTAXISA Sphere { radius 1.0 #field SFFloat } A GROUP CSOMÓPONT SZINTAXISA Group { children [ ]#exposedField MFNode bboxCenter 0.0 0.0 0.0 #field SFVec3f bboxSize -1.0 -1.0 -1.0 #field SFVec3f addChildren #eventIn MFNode removeChildren #eventIn MFNode }

  15. GROUP CSOMÓPONT PÉLDA #VRML V2.0 utf8 Group {children [ Shape { appearance DEF White Appearance { material Material { } } geometry Box { size 25.0 2.0 2.0 }}, Shape { appearance USE White geometry Box { size 2.0 25.0 2.0 } }, Shape { appearance USE White geometry Box { size 2.0 2.0 25.0 }}]}

  16. A TEXT CSOMÓPONT SZINTAXISA Text { string [ ] #exposedField MFString length [ ] #exposedField MFString maxExtent 0.0 #exposedField SFFloat fontStyle NULL #exposedField SFNode } A FONTSTYLE CSOMÓPONT SZINTAXISA FontStyle { family ”SERIF” #field SFString style ”PLAIN” #field SFString size 1.0 #field SFFloat spacing 1.0 #field SFFloat justify ”BEGIN” #field SFString horizontal TRUE #field SFBool leftToright TRUE #field SFBool topTobottom TRUE #field SFBool language ” ” #field SFString } Példák

  17. A TRANSFORM CSOMÓPONT SZINTAXISA Transform { children [ ] #exposedField MFNode translation 0.0 0.0 0.0 #exposedField SFVec3f rotation 0.0 0.0 1.0 0.0 #exposedField SFRotation scale 1.0 1.0 1.0 #exposedField SFVec3f scaleOrientation 0.0 0.0 0.0 #field SFVec3f bboxSize -1.0 -1.0 -1.0 #field SFVec3f center 0.0 0.0 0.0 #exposedField SFVec3f addChildren #eventIn MFNode removeChildren #eventIn MFNode }

  18. FELADATOK 1. FELADAT: Készítsünk egy hengert, azon álljon egy kocka és a kocka tetején egy henger. (Minden primitív geometriának a méretei lehetnek alapértelmezésbeliek.) 2. FELADAT: Írjunk egy tetszés szerinti szöveget tetszés szerinti betűtípussal és formázással. 3. FELADAT: Az előző feladatbeli alkotásainkat toljuk el a világban tetszés szerinti pozícióba.

  19. ALAKZATOK ELFORGATÁSA A Transform csoportosító csomópont és ennek rotation és center mezői segítségével alakzatokat és alakzatok csoportjait forgathatunk el egy koordinátarendszer kezdőpontja vagy egy általunk megadott középpont körül. Szokásos forgástengelyek értékei: Irány Forgástengely értékei Jobbra az X tengely mentén 1.0 0.0 0.0 Felfelé az Y tengely mentén 0.0 1.0 0.0 Előrefelé a Z tengely mentén 0.0 0.0 1.0

  20. AZ ELFORGATÁSI SZÖGEK MEGADÁSA Fok x 180.0 / p = radián 30.0 x 180 / p = 0.524 Radián x p = fok 0.785 x p = 45.0 fok

  21. AZ ELFORGATÁS JOBBKÉZ-SZABÁLYA Jobb kezünkkel megragadjuk a forgástengelyt, az ujjainkat behajlítjuk a tengely mentén, és a hüvelykujjunkat kinyújtjuk a tengely pozitív irányába. Egy pozitív elforgatási szög ugyanabba az irányba forgatja el a koordinátarendszert a forgástengely körül, mint amilyen irányba a többi ujjunk be van hajlítva.

  22. A TRANSFORM CSOMÓPONT SZINTAXISA Transform { children [ ] #exposedField MFNode translation 0.0 0.0 0.0 #exposedField SFVec3f rotation 0.0 0.0 1.0 0.0 #exposedField SFRotation scale 1.0 1.0 1.0 #exposedField SFVec3f scaleOrientation 0.0 0.0 0.0 #field SFVec3f bboxSize -1.0 -1.0 -1.0 #field SFVec3f center 0.0 0.0 0.0 #exposedField SFVec3f addChildren #eventIn MFNode removeChildren #eventIn MFNode }

  23. A ROTATION NYITOTT MEZŐ • A rotation mező első három értéke egy 3-D koordinátapont X, Y, Z tengelyű összetevőit adja meg, az új eltolt koordinátarendszerben. Az ezt a koordinátapontot az eltolt kezdőponttal összekötő képzeletbeli egyenes adja meg az elforgatás tengelyét. A rotation mező negyedik értéke írja elő a radiánokban mért pozitív vagy negatív elforgatási szöget. • A center nyitott mező értékei azt a 3-D koordinátapontot határozzák meg az új, eltolt koordinátarendszerben, ami körül az elforgatás történik. • A translation, a center és a rotation mezők értékeit egymással kombinálva használjuk, akkor a böngésző bizonyos sorrend szerint jár el. • A böngésző az új koordinátarendszert • elforgatja a forrásközpont körül, majd • a szülő koordinátarendszerhez képest eltolja. • Példák

  24. ALAKZATOK ÁTMÉRETEZÉSE A Transform csoportosító csomópont és ennek scale és scaleOrientation mezőjének segítségével tetszés szerint méretezhetjük át az alakzatokat vagy az alakzatok csoportját. A scale nyitott mező értékei az X, Y és Z irányú méretarányt határozzák meg az új koordinátarendszer számára. Az alapértelmezés szerinti 1.0 érték azt jelenti, hogy egyik tengely irányában sincs átméretezés. Méretarányokként csak pozitív értékeket szabad megadni. A scaleOrientationmező értékei azt a forgástengelyt és elforgatási szöget adják meg, ami körül, illetve amilyen mértékben az új koordinátarendszert az átméretezése előtt el kell forgatni, majd az átméretezést követően vissza kell forgatni. A center nyitott mező értékei azt a 3-D koordinátapontot határozzák meg az új, eltolt koordinátarendszerben, ami körül az elforgatás és az átméretezés történik. Az alapértelmezés szerinti elforgatási és átméretezési középpont a koordinátarendszer kezdőpontja.

  25. ALAKZATOK ÁTMÉRETEZÉSE • A translation, a center, a rotation, a scale és a scaleOrientation mezők értékeit egymással kombinálva használjuk, akkor a böngésző bizonyos sorrend szerint jár el. • A böngésző az új koordinátarendszert • átméretezi a középpont körül, először az átméretezéshez használandó elforgatás szerint • elforgatja a forgásközpont körül, majd • a szülő koordinátarendszerhez képest eltolja. • A translation, a center, a rotation, a scale és a scaleOrientation mezők tetszőleges sorrendben adhatók meg a Transform csomóponton belül, ettől függetlenül azonban ezeket a böngésző mindig ebben a sorrendben alkalmazza. • Példák

  26. A HELY, AZ IRÁNY ÉS A MÉRETVÁLTOZÁS ANIMÁLÁSA Egy alakzatcsoport koordinátarendszerének animálásával elérhetjük, hogy ezek az alakzatok a kívánságunk szerint repüljenek, más helyre kerüljenek, elforduljanak vagy más méretet vegyenek fel a világunkban. Az animálás indításában, leállításában a TimeSensor csomópont az óra szerepét tölti be. Ahogy múlik az idő, ez az érzékelő eseményeket generál, melyekkel jelzi az időben bekövetkező változásokat. A koordinátarendszerek eltolásának, elforgatásának és átméretezésének kiváltásához a TimeSensor csomópont eseményeit PositionInterpolator és OrientationInterpolator csomópontokra küldhetjük. E csomópontok mindegyike új eltolási és elforgatási értékeket küld ki az eseményküldőjükön keresztül. Ha most ezeket az eseményeket egy Transform csomópontra irányítjuk, akkor a csomópont koordinátarendszere az animáció előrehaladásának megfelelően eltolódik, elfordul vagy megváltoztatja a méretét.

  27. A HELY, AZ IRÁNY ÉS A MÉRETVÁLTOZÁS ANIMÁLÁSA A VRML ROUTE szintaxisa segítségével a TimeSensor csomópont egyik kimenetét összekötjük a PositionIterpolator vagy az OrientationInterpolator csomópont bemenetével. Ezután egy másik útvonalat használva az egyik interpolator csomópont kimenetét összekötjük egy Transform csomópont bemenetével. Egy korábbi példa: ROUTE Clock.fraction_changed TO CubePath.set_fraction ROUTE CubePath.value_changed TO Cube.set_translation

  28. A „MOZGÁSIDŐ” - FRACTIONAL TIME Az ilyen animációt tipikusan mozgásidők segítségével írják le. Mozgásidőt (fractional time) használva úgy kell elképzelni egy animációt, hogy az a 0.0 mozgásidőben indul és az 1.0 mozgásidőben fejeződik be. A 0.0. és az 1.0. mozgásidő közötti időtartam független az abszolút időtől. (lehet 5 másodperc vagy 30 perc is) A 0.0.és az 1.0 mozgásidő közötti időtartam neve ciklusintervallum, és a TimeSensor csomópont cycleInterval mezőjének értékével adható meg. Egy korábbi példa: ROUTE Clock.fraction_changed TO CubePath.set_fraction ROUTE CubePath.value_changed TO Cube.set_translation

  29. A TIMESENSOR CSOMÓPONT SZINTAXISA TimeSensor { enabled TRUE #exposedField SFBool startTime 0.0 #exposedField SFTime stopTime 0.0 #exposedField SFTime cycleInterval 1.0 #exposedField SFTime loop FALSE #exposedField SFBool isActive #eventOut SFTime time #eventOut SFTime cycleTime #eventOut SFTime fraction_changed #eventOut SFFloat } Egy korábbi példa: ROUTE Clock.fraction_changed TO CubePath.set_fraction ROUTE CubePath.value_changed TO Cube.set_translation

  30. A POSITIONINTERPOLATOR CSOMÓPONT SZINTAXISA A PositionInterpolator csomópont kulcspozíciók sorozatát írja le, amelyek alkalmasak arra, hogy animációban használjuk őket. PositionIterpolator { key [ ] #exposedField MFFloat keyValue [ ] #exposedField MFVec3f set_fraction #eventIn SFFloat value_changed #eventOut SFVec3f } Egy korábbi példa: ROUTE Clock.fraction_changed TO CubePath.set_fraction ROUTE CubePath.value_changed TO Cube.set_translation

  31. AZ ORIENTATIONINTERPOLATOR CSOMÓPONT SZINTAXISA Az OrientationInterpolator csomópont olyan kulcsforgatások sorozatát írja le, amelyek alkalmasak arra, hogy animációban használjuk őket. OrientatioIterpolator { key [ ] #exposedField MFFloat keyValue [ ] #exposedField MFRotatin set_fraction #eventIn SFFloat value_changed #eventOut SFRotation } Egy korábbi példa: ROUTE Clock.fraction_changed TO CubePath.set_fraction ROUTE CubePath.value_changed TO Cube.set_translation Példák

  32. VÉGE Példák

More Related