Sunteți pe pagina 1din 7

UNIVERSITATEA OVIDIUS CONSTANA

FACULTATEA DE MATEMATIC I INFORMATIC


MEDII VIRTUALE MULTI-MODALE DISTRIBUITE - ANUL I, SEMESTRUL I
REALITI MIXTE

APLICAIE VRML

STUDENT: PETCU ANDREEA-CRISTIANA


PROFESOR: PROF. DR. POPOVICI DORIN-MIRCEA

Limbajul de modelare tridimensional VRML 2.0 (Virtual Reality Modeling


Language) este utilizat n crearea de pagini Web interactive.

Generaliti
Denumirea iniial a limbajului a fost Virtual Reality Markup Language.
Specificaiile VRML au fost dezvoltate iniial de ctre firma Silicon Graphics
Inc. (SGI), pornindu-se de la un set de clase care ncapsulau biblioteca de
funcii grafice OpenGL (Open Inventory). Treptat s-a ajuns la dezvoltarea unei
noi tehnologii, numit Virtual Reality Modeling Language. Prima versiune a
limbajului a fost standardizat n anul 1995, i anume VRML 1.0. Cea mai
rspndit versiune este VRML 2.0 (cunoscut i sub denumirea de VRML97),
cea mai important diferen faa de versiunea anterioar constituind faptul
ca lumile VRML 1.0 sunt statice, pe cnd cele create cu VRML 2.0 pot
interaciona cu vizitatorul acestora (interactive). Tehnic vorbind, pentru a oferi
posibilitatea realizrii lumilor 3D dinamice, standardul 2.0 a fost mbogit cu
noi tipuri de noduri i noi concepte, cum ar fi: PROTOtipuri, switchuri, senzori,
scripturi, interpolatori, rute, elemente multimedia (sunete, texturi animate).
Viitorul VRML-ului este vegheat de organizaia Web3D Consortium
(http://www.web3d.org) care a lansat generaia urmtoare a limbajului,
numit Extensible 3D (X3D), adoptat ca standard internaional de ctre
International Organization for Standardization (ISO). Extensible 3D este un
sistem deschis i extensibil pentru descrierea de obiecte i lumi 3D interactive
pe Internet folosind limbajul XML (Extensible Markup Language). Cu toate c
nlocuiete limbajul VRML, vechiul format rmne n continuare suportat. Noul
standard are la baz conceptele de componente i profile. O component
conine unul sau mai multe noduri din aceeai categorie (de exemplu noduri
geometrice, de iluminare etc.). n continuare, aceste componente sunt
grupate n profile, profilul X3D-1 nglobnd componentele de baz pentru
geometrie i animaie, n timp ce profilul X3D-2 reprezint limbajul VRML97
suportnd ntreaga funcionalitate a acestuia. Companiile specializate n soluii
grafice 3D vor putea dezvolta componente i profile interoperabile n vederea
extinderii funcionalitii standardului.
Conform definiiei date de Web3D Consortium:
VRML este un standard deschis pentru 3D multimedia i lumi virtuale
partajate n Internet.
VRML este inclus sau citat n standardul MPEG-4, precum i n Java3D sau
alte standarde de dezvoltare. VRML este utilizat n modelarea aplicaiilor
medicale, modelarea structurilor complexe n chimie (a moleculelor, de
exemplu), n design, arhitectur, jocuri sau publicitate. n seciunea cu
referine bibliografice pot fi gsite legturi ctre sit-uri Web bazate pe VRML.
VRML permite descrierea de obiecte 3D i combinarea lor n scene i lumi
virtuale. El poate fi folosit la crearea de lumi interactive, care s conin:
imagini, animaii, clipuri audio sau video. ntr-o lume VRML utilizatorul i nu
computerul are controlul. Obiectele dintr-o scen pot interaciona unele cu
altele prin evenimente sau pot interaciona cu evenimente utilizator. Lumile
pot fi legate ntre ele sau cu alte documente HTML. O lume creat poate fi
distribuit pe Internet, vzut i explorat interactiv de mai muli vizitatori n
acelai timp.

Pentru a putea vizualiza o lume VRML, browser-ul de Internet (Internet


Explorer, Netscape Navigator, HotJava, Opera etc.) are nevoie de un VRML
browser (sub forma unui plugin de cele mai multe ori) ce permite utilizatorului
(numit vizitator n VRML) s navigheze n lumea virtual, s obin diferite
vederi ale scenei n funcie de punctul de vedere ales, s interacioneze cu
elementele scenei etc. Facilitile oferite depind de la un browser la altul.
Dintre cele mai cunoscute browser-e VRML amintim Cortona, CosmoPlayer,
CC3D, OpenWorlds i FreeWRL, o list complet a acestora, precum i o
comparaie a facilitilor oferite de fiecare dintre acestea gsindu-se la adresa
http://vrml.miningco.com/library/weekly/.

Noiuni de baz ale limbajului VRML


Limbajul de modelare VRML este un limbaj case-sensitive. Un document
VRML este un fiier text cu extensia .wrl care trebuie s nceap cu linia
#VRML V2.0 utf8 care indic un document VRML n versiunea 2.0, iar setul de
caractere utilizat este UTF-8 (posibil i ASCII). Un fiier VRML poate fi
compresat folosind utilitare de tip gzip pentru a mri viteza de acces n cazul
unor fiiere VRML VIRTUAL REALITY MODELING LANGUAGE 145 mari.
Documentele VRML sunt colecii de obiecte, definiii de noduri utilizator
(PROTOtipuri) i rute. Nodul este blocul de construcie fundamental n VRML.
Nodurile sunt abstractizri ale conceptelor i obiectelor din lumea real.
Nodurile conin cmpuri i evenimente.
Cmpul reprezint o proprietate (atribut) a unui nod. Fiecare nod are un
numr fix de cmpuri.
Obiectul reprezint o instan a unui nod standard sau definit de
programator.
Evenimentele semnalizeaz stimulii externi, modificrile valorilor
cmpurilor i interaciunile dintre noduri. Un eveniment este compus dintr-un
timestamp i o valoare pentru un cmp. liter mic, cmpurile unui nod fiind
specificate ntre acolade.
Clasificarea nodurilor VRML :
Shapes (ex: Box, Cone, Sphere, Text, IndexedFaceSet, Extrude);
Grouping (ex: Transform, Anchor, Inline, LOD, Switch);
Lighting (ex: DirectionalLight, PointLight, SpotLight);
Sensors (ex: TouchSensor, TimeSensor, PlaneSensor);
Animation (ex: CoordinateInterpolator, ColorInterpolator);
Multimedia (ex: AudioClip, PixelTexture, ImageTexture, Sound).
Modelul de culoare utilizat n VRML este RGB, cu valori pentru cele trei
componente cuprinse n intervalul [0, 1] ((0, 0, 0) pentru negru, (1, 1, 1)
pentru alb). Unitile de msur VRML sunt considerate n mod implicit a fi
exprimate n metri. Unghiurile sunt msurate n radiani, nu n grade.
Comentariile ncep cu simbolul # i se extind pn la sfritul linei. Sistemul
de coordonate folosit este cel cartezian.

Noduri VRML
n aceast seciune vor fi prezentate cele mai utilizate noduri n
construcia lumilor virtuale. Deoarece valorile cmpurilor sale pot fi alte
noduri, se spune c este un nod container.

Nodul Shape are dou cmpuri:


appearance, care precizeaz proprietile fizice i optice ale suprafeei
obiectului (culoare, textur etc.);
geometry, care definete forma geometric a obiectului (sfer, cilindru, cub
etc.).

Definirea proprietilor legate de culoarea obiectelor se face folosind


nodul Appearance prin intermediul cmpului material ce poate fi instaniat cu
un obiect de tipul Material. Cele mai utilizate cmpuri ale nodului Material
sunt:
diffuseColor, definete culoarea obiectului;
ambientIntensity, precizeaz cantitatea de lumin reflectat de suprafaa
obiectului;
shininess, controleaz intensitatea strlucirii pentru zonele Strlucitoare.
Pentru specificarea texturii unui obiect, nodul Appearance expune cmpul
texture care poate fi instaniat cu unul dintre tipurile de texturi disponibile n
VRML: ImageTexture, MovieTexture sau PixelTexture.
n legtur cu specificarea formei obiectului, nodul Shape conine cmpul
geometry care poate fi instaniat folosind un nod de tip geometrie. Acestea
pot fi clasificate n dou categorii:
primitive: Box, Cone, Cylinder, Sphere, Text, FontStyle;

complexe:IndexedFaceSet,
IndexedLineSet,
PointSet,
Extrude,
ElevationGrid.

Gruparea nodurilor n VRML


n vederea unei mai bune organizri a scenelor i lumilor VRML au
fost introduse nodurile de grupare. Astfel, nodurile VRML se pot organiza n
grupuri, care la rndul lor pot alctui scene, i mai departe lumi virtuale.
Nodurile de grupare sunt folosite pentru a defini o mulime de
noduri ca un singur obiect.
Cmpul children al nodurilor de grupare conine lista nodurilor fiu.
Fiecare nod de grupare definete un spaiu de coordonate pentru copiii si.
Acest spaiu de coordonate este relativ la spaiul de coordonate al nodului
printe pentru nodul de grupare.
Nodurile de grupare n VRML sunt: Anchor, Billboard, Collision, Group,
Inline, LOD, Transform i Switch. Noduri precum Appearance, Material,
IndexedFaceSet sau Cylinder nu pot fi folosite n cmpul children al unui nod
de grupare. n continuare vor fi descrise cteva dintre cele mai folosite noduri
de grupare:
Nodul Transform - Acest tip de nod este utilizat pentru gruparea mai
multor noduri n vederea aplicrii unei transformri geometrice (cu toate c
lucrul acesta nu este obligatoriu). Transformrile care pot fi specificate ntr-un
nod Transform sunt translaia, rotaia i scalarea. Ordinea n care sunt
aplicate aceste transformri unui obiect este foarte important deoarece
compunerea transformrilor nu este asociativ. De exemplu, aplicarea unei
translaii urmat de o rotaie nu are acelai efect total ca n cazul aplicrii

rotaiei prima oar i apoi a translaiei. Ordinea aplicrii transformrilor este


urmtoarea: translaia, rotaia i n cele din urm scalara (indiferent de
ordinea n care sunt specificate cele trei transformri pentru obiectul
Transform).

Comenzile DEF i USE


VRML ofer posibilitatea de a asocia un nume unui nod sau grup de noduri
folosind comanda DEF. Pentru duplicarea obiectului n scen, trebuie folosit
comanda USE cu numele definit anterior.
Observaie: Comanda DEF se utilizeaz la prima definire a nodului, apoi
nodul este referit folosind USE.

Culori i iluminare n VRML


Exist n limbajul VRML noduri ce permit specificarea culorii la nivel de
vrf.
Acestea
sunt:
PointSet,
ElevationGrid,
IndexedFaceSet
i
IndexedLineSet. Astfel, diferite fee ale aceluiai obiect pot avea culori
diferite.
Cmpurile utilizate la specificarea culorii sunt:
color precizeaz culoarea la nivel de vrf/fa;
colorPerVertex este de tip boolean i se gsete n nodurile ElevationGrid,
IndexedFaceSet sau IndexedLineSet; dac ia valoarea TRUE, culoarea se
aplic unui vrf, pe cnd pentru o valoare FALSE culoarea se va aplica ntregii
fee.

Animaie n VRML
Evenimente. Rute
Evenimentul reprezint un mesaj trimis de la un obiect la altul prin
intermediul unei rute.
Ruta reprezint conexiunea dintre un obiect care genereaz un
eveniment i un obiect care recepioneaz evenimentul. Evenimentele
semnalizeaz stimuli externi, modificri ale valorilor cmpurilor unui obiect
sau interaciuni ntre obiecte. Un eveniment este alctuit dintr-un timestamp
i noua valoare a unui cmp. Fiecare obiect poate trimite sau recepiona
evenimente.
Prima coloan din definiia unui cmp al unui nod este numit tipul de
interfa i controleaz accesul altor noduri/obiecte la coninutul cmpului
respectiv. Interfaa cmpului poate fi de mai multe tipuri:
field nici un acces;

eventIn acces n scriere; alt obiect poate modifica valoarea acestui cmp,
dar nu o poate citi;
eventOut acces n citire; alt obiect poate citi valoarea acestui cmp, dar
nu o poate modifica;
exposedField acces complet (scriere i citire) asupra valorii acestui
cmp. Cmpurile exposed fields ale unui nod includ evenimentele
set_NUMECAMP (eventIn), generat la modificarea valorii cmpului respectiv i
NUMECAMP_changed (eventOut), prin care se transmite noua valoare unui alt
nod.

Etapele unei animaii


Animaia n VRML const n modificarea valorilor unor cmpuri prin
transmiterea de evenimente n mai multe etape. Aceste etape sunt
urmtoarele:

Etapele animaiei:

etapa Trigger (declanator) genereaz evenimentul de pornire a animaiei.


De obicei este un nod senzor care genereaz un eveniment cnd utilizatorul
interacioneaz cu el;
etapa Logic realizeaz prelucrarea evenimentelor generate de declanator,
dup care este pornit cronometrul. n aceast etap, browser-ul paseaz
evenimentele primite de la Trigger unui nod de tip Script, care le proceseaz,
dup care le trimite mai departe cronometrului. n cazul animaiilor simple
acest pas nu este necesar;
etapa Timer (cronometru) genereaz evenimente de timp pe o anumit
perioad de timp sau continuu, pn la oprirea sa explicit;
etapa Engine (motor) este constituit dintr-un singur nod (interpolator sau
script) sau dintr-o mulime de noduri i va determina parametrii animaiei la
un moment dat;
Target (inta) este obiectul (obiectele) scenei ale crui valori vor fi
schimbate; n cea mai simpl form, schimbarea poate afecta poziia sau
orientarea unui obiect de tip Transform.
Declanatoare
Nodurile senzor sunt noduri care reacioneaz la un anumit stimul extern
(apsarea butonului de mouse, intrare ntr-o zon specificat a spaiului 3D
etc.) prin generara unui eveniment de tipul eventOut. Evenimentul generat de
un senzor poate fi apoi rutat la un alt obiect al scenei. Adesea, senzorii sunt
legai de noduri Script care vor rula o secven program la recepionarea unui
eveniment.

Cronometru
Un exemplu de Timer este nodul TimeSensor. Acesta este un cronometru
care genereaz evenimente time n funcie de viteza calculatorului pe care
este vizualizat documentul VRML (ca urmare nu este un dispozitiv foarte
precis).
Aceste evenimente se comport ca o "pomp intern" care conduce
ntreaga animaie. Pe lng evenimentul time, un nod TimeSensor mai
genereaz i alte evenimente, cum ar fi: fraction_changed, isActive,
cycleTime.
Cele mai uzitate cmpuri ale nodului TimeSensor sunt:
startTime precizeaz momentul n care TimeSensor-ul ncepe generarea
evenimentelor i are valoarea implicit 0;
stopTime precizeaz momentul n care TimeSensor-ul oprete generarea
evenimentelor;
cycleInterval numrul de secunde ale ciclului;
loop implicit FALSE, ceea ce nseamn c senzorul se va opri la sfritul
ciclului; dac ia valoarea TRUE senzorul va rula pn la atingerea timpului
specificat n cmpul stopTime sau la nesfrit, dac stopTime < startTime.

Acesta descriere s-a dorit o introducere n lumea VRML. Posibilitatea


realizrii scenelor complexe ntr-o manier descriptiv i nu procedural (ca n
cazul OpenGL sau Direct3D) constituie avantajul principal al acestui limbaj.
Larga lui rspndire n Internet l face deasemenea foarte popular.