850 likes | 1.05k Views
Multimédiá – VRML. Doc. Ing. Juraj Vaculík, PhD., Mail : juvac@fpedas.utc.sk. 84. VRML súbor.
E N D
Multimédiá – VRML Doc. Ing. Juraj Vaculík, PhD., Mail : juvac@fpedas.utc.sk 84
VRML súbor • VRML súbor je textový popis VRML sveta. VRML súbor opisuje ako budovať tvary, kde ich umiestniť, akej farby majú byť atď. Mená VRML súborov sú ukončené príponou *.wrl, ktorá indikuje, že súbor obsahuje VRML svet. VRML súbor môže obsahovať štyri základné typy komponentov : • VRML hlavičku • prototypy • tvary, interpolátory, senzory a skripty • odkazy MM I/2006
Vrml súbor ... Jediná požadovaná položka je VRML hlavička. Bez definície aspoň jedného tvaru však prehliadač nič nezobrazí. VRML súbor môže tiež obsahovať nasledujúce položky : • komentáre • uzly • polia a hodnotypolí • definované mená uzlov • použité mená uzlov MM I/2006
#VRML V2.0 utf8 Group { children [ Shape { appearance DEF Brown Appearance { material Material { diffuseColor 0.6 0.4 0.0 } } geometry Cylinder { height 2.0 radius 2.0 } }, Transform { translation 0.0 2.0 0.0 children Shape { appearance USE Brown geometry Cone { height 2.0 bottomRadius 2.5 } } } ] } Príklad MM I/2006
VRML hlavička • Musí byť na prvom riadku súboru a musí obsahovať presne text podľa syntaxe: #VRML V2.0 utf8 Hlavička objasňuje prehliadaču, že súbor je : • VRML súbor • zhodný s verziou 2.0 špecifikácie VRML • používa medzinárodnú znakovú sadu UTF-8 MM I/2006
Uzly • súbor obsahuje uzly, ktoré opisujú tvary a ich vlastnosti vo VRML svete. Tieto uzli sú stavebnými blokmi VRML. Opisujú tvary, farby, svetlá, pohľady, ako umiestnenie a orientáciu tvarov, časovače pre animácie, senzory, interpolátory atď. Uzly vo všeobecnosti obsahujú : • typ uzla ( požadované ) • pár zložených zátvoriek ( požadované ) • počet polí (voliteľné) a ich hodnoty, ktoré definujú atribúty uzla vo vnútri zložených zátvoriek MM I/2006
Polia a hodnoty polí • Napríklad uzol Cylinder v predchádzajúcom príklade obsahuje všetky tieto položkygeometry Cylinder { height 2.0 radius 2.0} • Polia definujú atribútyuzla. Poradie polí v uzle nie je dôležité. Polia nie sú v uzloch požadované pretože každé pole má štandardnú hodnotu, ktorá je použitá VRML prehliadačom. MM I/2006
Typy polí (Single/Multi) • S/MBool - logická hodnota – true alebo false • S/MFColor - Skupina troch hodnôt RGB v pohyblivej rádovej čiarke. • S/MFFloat - hodnota pohyblivej rádovej čiarky • SFImage - zoznam hodnôt obsahujúci farby obrázku • S/MFInt32 - integer hodnoty • S/MFNode - VRML uzol. • S/MFString – reťazec znakov uložených v úvodzovkách. MM I/2006
Typy polí ... • S/MFRotation - skupina štyroch hodnôt pohyblivej rádovej čiarky. Prvé tri hodnoty definujú osiotáčania. Posledná hodnota je uholotočenia v radiánoch. • SFTime - absolútny čas meraný v sekundách od 12:00 polnoci, GMT, 1.1. 1970 – reálne • S/MFVect2f 2-D vektor s hodnotami • S/MFVec3f 3-D vektor s hodnotami v pohyblivej rádovej čiarke. MM I/2006
Definícia mien uzlov • Mená môžu byť takmer ľubovoľné sekvencie znakov a čísel. Keď je priradené uzlu meno, potom je možné tento uzol použiť znova neskôr v tomto súbore. Def meno_uzla typ_uzla { .... } • Keď už je definované meno pre uzol, je možné používať tento uzol USE meno_uzla MM I/2006
Popis tvarov • atribútytvaru - geometrie a vzhľadu sú špecifikované hodnotami polí vo vnútri uzla Shape • podporuje viacero typov primitívnych tvarov, ktoré sú preddefinované, vrátane hranola, valca, ihlana a gule ako aj zopár pokročilých tvarov ako extrudované tvary a výškovej mriežky. • Použitím týchto tvarov je možné stavať väčšie a komplexnejšie tvary. Tieto zase môžu byť použité na stavbu ešte väčších tvarov MM I/2006
Zoskupovanie tvarov • Tvary môžu byť zoskupované za účelom budovania väčších, komplexnejších tvarov. • Valec a Ihlan v predchádzajúcom príklade sú zoskupené pomocou uzla Group za účelom vytvorenia tvaru búdy. • Uzol, ktorý zoskupuje skupiny tvarov sa nazýva rodič. Tvary, ktoré tento tvar vytvárajú sa nazývajú potomkovia uzla . • Skupina môže mať ľubovoľný počet potomkov, prípadne iné skupiny - vložená ( zahniezdená) do väčšej skupiny. MM I/2006
Prepojenie uzlov • Aby bol svet dynamický môžu tieto stavebné prvky obsahovať "prepojovacie" časti - popisujú ako prepojiť uzli navzájom tak, aby napríklad stlačením tlačidla myši na tvar bolo možné zapnúť, alebo vypnúť svetlo. VRML prepojovanie umožňuje : • prepojiť navzájom niekoľkouzlov • prepojiťsmer, alebo cestu medzi dvoma uzlami • Keď je vytvorené takéto prepojenie, tak jeden uzol môže posielať druhému uzlu správy. Takéto správy nazývame udalosti. Obsahujú hodnoty, podobné hodnotám polí vo vnútri uzlov. MM I/2006
Vstupy a výstupy uzla • Každý uzol má svoje vstupné a výstupné prvky. Vstup uzla sa nazýva eventIn - prijíma udalosti, keď je uzol pripojený do nejakého obvodu a keď je mu nejaká udalosť zaslaná. • výstup sa nazýva eventOut a posiela udalosti do obvodu ak je k nejakému uzol pripojená. • Podobne ako pri poliach uzlov, každá udalosť eventIn a eventOut má svoj typ. Keď sa špecifikuje prepojenie, typy vstupov a výstupov musiabyťrovnaké MM I/2006
ROUTE Sensor1.isActive TO Illuminator.turn_on ROUTE Sensor2.isActive TO Illuminator.turn_off ROUTE Illuminator.light_changed TO Light1.set_on ukážka Route - prepojenie MM I/2006
Jednoduché tvary • definujú základné grafické objekty a ich geometrické vlastnosti -základné tvary sú: Box,Cone, Cylinder a Sphere. • Každý z týchto uzlov obsahuje jedno, alebo viac polí, ktoré umožňujú špecifikovať atribúty ako rozmery hranolu, priemer gule, alebo výška valca, alebo ihlana. • Všetky tieto primitívne tvary sa pokladajú za pevné (solid). MM I/2006
Základné tvary a textúry MM I/2006
Pokročilétvary definujú grafickéobjekty na základe sady tvarov, bodov alebo čiar: • ElevationGrid, • Extrusion, • IndexedFaceSet, • IndexedLineSet a • PointSet MM I/2006
Uzol Shape • Všetky viditeľné objekty sú definované vo vnútri uzla Shape. Tento uzol má dve polia: appearancea geometry: • pole appearance špecifikuje uzol Appearance ktorý sa používa pre definíciu, farby, textúry, • pole geometry indikuje aký tvar bude nakreslený. Shape { geometry NULL appearance NULL } MM I/2006
Uzol Box • definuje pravouhlý kváder pre ktorý môžeme špecifikovať jeho šírku, výšku a hĺbku. Uzol obsahuje jednoduché voliteľné pole size Box { Size 2.0 2.0 2.0 # field SFVect3f } MM I/2006
Uzol Cone • kužeľ nedefinuje len výšku a polomer podstavy, ale aj ktorá jeho časť sa má zobraziť. Tento uzol obsahuje štyri polia: bottomRadius, height, side, a bottom Cone { bottomRadius 1.0 # field SFFloat height 2.0 # field SFFloat side TRUE # field SFBool bottom TRUE # field SFBool } MM I/2006
Uzol Cylinder • valec povoľuje okrem špecifikácie jeho výšky a polomeru, podobne ako kužeľ, ktorá jeho časť sa má zobraziť. Tento uzol obsahuje päť polí: radius, height, side, bottom a top Cylinder { Radius 1.0 # field SFFloat Height 2.0 # field SFFloat Side TRUE # field SFBool Top TRUE # field SFBool Bottom TRUE # field SFBool } MM I/2006
Uzol Sphere • vytvára guľu a môže byť použitý ako Pole geometry uzla Shape. Uzol má jednoduché pole, ktoré definuje jej polomer. Pole radius je voliteľné, ak nie je definované je použitá preddefinovaná hodnota 1.0. Sphere { Radius 1.0 # field SFFloat } MM I/2006
Uzol PointSet • špecifikuje množinu 3D bodov v lokálnom súradnicovom systéme a asociovaných farbách. Uzol obsahuje dve polia: color a coord. PointSet { coord NULL # exposedField SFNode color NULL # exposedField SFNode } MM I/2006
Uzol IndexedLineSet • špecifikuje množinu lomených čiar - polylines v lokálnom súradnicovom systéme a asociovaných farbách. Uzol obsahuje päť polí: coord, coordIndex, color, colorIndex a colorPerVertex. MM I/2006
Ukážka indexLineSet MM I/2006
Transform { translation . . . rotation . . . scale . . . children [ . . . ] } Transformácie MM I/2006
Transform { # X Y Z translation 2.0 0.0 0.0 children [ . . . ] } Posunutie - translation MM I/2006
Transform { # X Y Z Angle rotation 0.0 0.0 1.0 0.52 children [ . . . ] } Rotácia MM I/2006
Transform { # X Y Z scale 0.5 0.5 0.5 children [ . . . ] } Zmena mierky - scaling MM I/2006
Transform { translation 4.0 0.0 0.0 rotation 0.0 1.0 0.0 0.785 scale 0.5 0.5 0.5 children [ . . . ] } Ukážka transformácie MM I/2006
Uzol Appearance • špecifikuje atribúty vzhľadu : Appearance { material # field SFNode texture # field SFNode textureTransform # field SFNode } MM I/2006
Uzol Material • špecifikuje uzol definujúci materiálové atribúty vzhľadu Material { ambientIntensity 0.2 # field SFFloat diffuseColor 0.8 0.8 0.8 # field SFColor emissiveColor 0.0 0.0 0.0 # field SFColor shininess 0.2 # field SFFloat specularColor 0.0 0.0 0.0 # field SFColor transparency 0.0 # field SFFloat } MM I/2006
Príklad materiálov MM I/2006
Uzol texture - textúry • ImageTexture – definícia obrázku • PixelTexture – definícia bodov • MovieTexture - definícia videosekvencie • image pixels – počet bobov • image data - width, height, bytes/pixel, pixel values PixelTexture {image 2 1 3 0xFFFF00 0xFF0000} MovieTexture { url "movie.mpg" loop TRUE # opakovanie speed 1.0 } # rýchlosť MM I/2006
Appearance { material Material { . . . } texture ImageTexture { url “obrazok.jpg“ } } Textúry - imageTexture MM I/2006
Mapovanie textúr MM I/2006
Transparentné pozadie MM I/2006
Transformácia textúry MM I/2006
Zmena mierky textúry MM I/2006
Zem, malá zem MM I/2006
Zem 3 MM I/2006
Zem 2 MM I/2006
2-D cross-section - základ 3-D spine - dráha Extrusion { crossSection [ . . . ] spine [ . . . ] . . . scale [ . . . ] orientation [ . . . ] } Uzol extrusion MM I/2006
Extrude po osi MM I/2006
Extrude po kružnici MM I/2006
Extrude po špirále MM I/2006
ElevationGrid { xDimension 0 xSpacing 0.0 zDimension 0 zSpacing 0.0 height [ ] color NULL colorPerVertex TRUE normal NULL normalPerVertex TRUE texCoord NULL ccw TRUE solid TRUE creaseAngle 0.0 set_height } Uzol elevationGrig MM I/2006
UzolLighting - osvetlenie • priame - smerové svetlo – directional light, ak použijeme priame osvetlenie, svetelné lúče sú rovnobežné - toto svetlo nemá definovaný umiestenie - iba smer – v praxi to predstavuje vzdialená zdroj svetla, napríklad slnečné svetlo • vše smerové svetlo – point light - je svetlo umiestené v priestore scény, ktoré osvetľuje všetko okolo neho, svetelné lúče sa šíria vše smerovo od zdroja svetla • bodové svetlo – spot light ... reflektor - tento typ svetla vytvára svetelný kužeľ. MM I/2006
PointLight { location 0.0 0.0 0.0 intensity 1.0 color 1.0 1.0 1.0 } Uzol pointLight MM I/2006