Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaNikolett Bognárné Megváltozta több, mint 10 éve
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 { appearanceNULL#exposedField SFnode geometryNULL#exposedFieldSFnode } 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 BoxBox { size 2.0 2.0 2.0 #field SFVec3f } #VRML V2.0 utf8 Shape { appearance Appearance { material Material { } } geometry Box {Box size 1.0 3.0 5.0 }
12
A CONE CSOMÓPONT SZINTAXISA ConeCone { bottomRadius1.0#fieldSFFloat height2.0 #field SFFloat side TRUE#fieldSFBool bottom TRUE#fieldSFBool } #VRML V2.0 utf8 Shape { appearance Appearance { material Material { } } geometry Cone {Cone bottomRadius 3.5 height 1.5 }
13
A CYLINDER CSOMÓPONT SZINTAXISA CylinderCylinder { 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 {Cylinder radius 4.0 height 1.0 }
14
A SPHERE CSOMÓPONT SZINTAXISA SphereSphere { radius1.0#fieldSFFloat } 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 GroupGroup { 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” #fieldSFString 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 translation0.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ányForgástengely értékei Jobbra az X tengely mentén1.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 FokRadián 0.00.000 1.00.017 2.00.035 5.00.087 10.00.175 20.00.349 30.00.524 45.00.785 90.01.571 180.03.141 270.04.712 360.06.282 Fok x 180.0 / = radián 30.0 x 180 / = 0.524 Radián x = fok 0.785 x = 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 translation0.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 scaleOrientation mező é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 { enabledTRUE#exposedFieldSFBool startTime 0.0 #exposedField SFTime stopTime 0.0 #exposedField SFTime cycleInterval 1.0 #exposedField SFTime loop FALSE #exposedField SFBool isActive #eventOutSFTime 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[ ]#exposedFieldMFFloat 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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.