Sunteți pe pagina 1din 31

PRELUCRAREA IMAGINILOR SI REALITATEA

VIRTUALA

CAPITOLUL 1

GENERALITATI DESPRE REALITATEA VIRTUALA

Realitatea virtuala reprezinta o simulare generata de calculator a unui mediu


tridimensional in care utilizatorul este capabil sa vizualizeze si sa manipuleze continutul
acestui mediu.

Daca multimedia se refera la date preasamblate si preprogramate, incluzind o suita de


informatii din anumite medii, realitatea virtuala este dinamica si in interactiune
permanenta cu receptorul ei. Multimedia este la baza bidimensionala, o serie de imagini
prezentindu-se, conform unui scenariu predefinit, pe ecran, pe cind realitatea virtuala este
tridimensionala, mult mai maleabila si intens interactiva, combinatie avansata de
hardware si software multimedia. Utilizatorul unui sistem virtual are libertatea de a
explora lumea creata de calculator si de a interactiona direct cu ea.

Termenul de realitate virtuala se confunda deseori cu ciberspatiul, cuvintul fiind inventat


de scriitorul SF William Gibson in celebrul roman "Neuromancer", publicat pentru prima
data in anul 1984.

Medii software frecvent utilizate

Autodesk Inventor

Pachetul Autodesk Inventor reprezintă o soluţie de modelare 3D în mediul virtual


a prototipurilor utilizate în procesul de design, vizualizare şi simulare pentru procesele de
fabricaţie ce se pot desfăşura în cadrul unui sistem integrat de fabricaţie.
Acest pachet software combină 6 moduri de lucru pentru obţinerea celor mai bune
rezultate.
Prin intermediul modului „Modelarea componentelor” sunt combinate obiectele
virtualesolide cu suprafeţe pentru crearea de forme geometrice complexe. Uneltele de
analiză Zebra şi Gaussian sunt utilizate pentru verificarea designului din punct de vedere
geometric şi structural.

1
Cel de al doilea mod de utilizare este reprezentat de modul „Proiectarea
asamblării” ce face verificarea posibilităţilor de asamblare corectă a părţilor componente
unui proiect sau asubansamblelor utilizate la construirea unui mecanism complex. Acest
mod de lucru face verificarea soluţiilor de asamblare şi permite detectarea poziţiilor şi
metodologiilor optime de asamblare a soluţiilor mecanice, precum şi interferenţa dintre
anumite componente ce nu permit asamblare în ordinea de lucru prestabilită.
Un alt mod de lucru este modul „Cabluri şi Conectică” ce permite designerilor să
proiecteze trasee de cablu, cabluri şi elemente de conectică în mod tridimensional. Tot
prin intermediul acestui mod de lucru se permite importarea de standarde pentru cabluri
şi biblioteci cu elemente (cabluri, conectori) ai diverşilor producători ce permit definirea
şi rutarea traseelor de calcul. Tot prin intermediul acestui mod de lucru al pachetului
Autodesk Inventor se pot calcula parametrii calitativi ai sistemelor electrice, diametrul
mănunchiurilor de fire, raza de îndoire a cablurilor, individuale şi în mănunchi, lungimea
firelor.În acelaşi pachet Autodesk Inventor este integrat şi modul de lucru „Proiectarea
foilor metalice” ce automatizează multe dintre aspecte privind obţinerea de produse
metalice prin ştanţarea, decuparea şi formarea foilor metalice. Proiectanţii pot verifica
posibilităţile de formare, întindere a diverselor materiale şi foi metalice la formele
propuse pentru modelare înainte de proiectarea matriţelor pentru presele de prelucrare.
Un alt mod de lucru al pachetului „Autodesk Inventor” îl reprezintă „Generatorul
de structuri” ce permite proiectarea şi dezvoltarea structurilor asamblate prin sudură.
Acest mod de lucru simplifică modalitatea de asamblare prin sudură a subansamblelor
prin calcularea toleranţelor necesare pieselor ce vor fi asamblate prin sudură.
Un alt mod de lucru al pachetului Inventor îl reprezintă modulul „Tuburi şi
Conducte” ce permite proiectarea 3D a traseelor de tuburi şi conducte în spaţii mici sau
ansambluri complexe folosind standardele industriei şi specificaţiile producătorilor,
pentru elemente de fixare, elemente de îmbinare, tuburi, conducte, ţevi şi furtunuri.

2
Fig.1 Interfaţa grafică de simulare „Autodesk Inventor”

Matlab Simulink

Matlab reprezintă un mediu de procesare numerică dezvoltat de către compania


Mathworks ce permite manipularea matricelor, realizarea diagramelor funcţiilor şi
datelor, implementarea algoritmilor, crearea de interfeţe utilizator şi interfaţarea cu
programe scrise în alte limbaje de programare.
Deşi Matlab a fost creat cu scopul primar de procesare numerică i-au fost adăugate unelte
specifice altor domenii pe parcursul dezvoltării pentru integrarea de funcţii şi capabilităţi
specifice majorităţii domeniilor de cercetare, producţie şi calcul. Aceste unelte sunt
reprezentate de bibliotecile tip „toolbox”.
Deşi la începutut Matlab a fost utilizat îndeosebi de către inginerii şi cercetătorii
din domeniul controlului sistemelor automate la momentul actual reprezintă un mediu de
simulare foarte utilizat în cercetare, în mediul academic, industrie în majoritatea
domeniilor de la proiectarea sistemelor embedded, la analiza financiară.

3
Prin intermediul Matlab se pot apela funcţii şi subrutine scrise în limbajul C. O
funcţie de tip „wrapper” este creată pentru a permite tipurilor de date Matlab să fie
transmise şi returnate.
Biblioteci scrise în limbajul” Java” sau standardele „ActiveX” şi „.NET” pot fi
apelate dinmediul Matlab. Mediul Matlab a fost dezvoltat pentru implementarea
pachetului Simulink ce permite utilizarea Matlab prin conexiuni grafice a elementelor
disponibile în toolbox-uri şi realizarea de simulări utilizând doar această metodă de tip
„drag and drop”. Există un număr mare de produse software ale companiei MathWorks
precum şi a altor companii colaboratoare ce extind capabilităţile Simulink şi cuplate cu
componenta Real-Time Workshop, Simulink poate genera în mod automat cod sursă în
limbajul C pentru implementarea în timp real a sistemelor şi verificarea funcţionării
algoritmilor implementaţi în timp real.

Fig.2. Toolbox-ul Simulink Virtual Reality

4
În cadrul pachetului Matlab Simulink există două toolboxuri importante pentru
simularea sistemelor flexibile de fabricaţie. Primul dintre aceste toolboxuri se numeşte
SimEvent şi este constituit ca o bibliotecă cu blocuri grafice ce permit modelarea
sistemelor de tip coadă şi dispune de un motor de simulare a apariţiei evenimentelor de
tip discret.
O altă bibliotecă ce este recent introdusă în cadrul pachetului şi care este de o
importanţă deosebită în domeniul simulării şi modelării este toolbox-ul VirtualReality
(fig.2.). Prin intermediul acestui toolbox se poate realiza simularea comportamentului
sistemelor şi prototipurilor utilizând tehnici 3D. Tehnica de simulare a toolbox-ului
Virtual Reality se bazează pe tehnologia de simulare VRML.
Tehnologia VRML reprezintă un standard conceptualizat şi oficializat în anul
1997 ce permite realizarea unui mediu tridimensional de simulare interactiv prin definirea
de obiecte cărora li se ataşează atribute (poziţie, culoare, orientare, centru, centru pivot,
iluminare, transparenţa, poziţie ierarhică în lanţul cinematic, formă, legătură URL) ce se
pot modifica on-line de către elementele toolbox-ului Virtual Reality. Prin utilizarea
elementelor toolbox-ului se poate interveni asupra modelelor şi scenei de modelare prin
posibilitatea de modificare a tuturor parametrilor unui obiect.

5
CAPITOLUL 2

VIRTUAL REALITY MODELING LANGUAGE (VRML)

1. Introducere in VRML
1.1 Istoric al limbajului

Conceperea unui univers tridimensional virtual se poate realiza cu ajutorul VRML


(Virtual Reality Modeling Language), scopul initial al limbajului fiind tranzitia de la o
interfata text a Web-ului la una avind trei dimensiuni, in permanenta interactiune cu
utilizatorul. VRML a fost creat de Mark Pesce si Anthony (Tony) Parisi, cu ajutorul lui
Gavin Bell si Brain Behlendorf. Primii doi au hotarat sa proiecteze o interfata 3D pentru
Web. Limbajul de modelare a acestei interfete (VRML) trebuia sa fie diferit de HTML,
dar nu au dorit sa inventeze un nou limbaj. Dupa ce au trecut in revista tehnologiile
existente la acea data, au investigat mai multi candidati. Dupa o serie de deliberari, au
ales formatul de fisier ASCII Open Inventor de la Silicon Graphics Inc. (SGI). Unul
dintre motivele principale pentru care a fost ales Open Inventor este faptul ca acest
format permite o descriere completa a grafurilor de scena 3D, cu poligoane redate sub
forma de obiecte. Open Inventor include, de asemeni, facilitati de iluminare, descrieri de
materiale si texturi, precum si efecte speciale. Astfel, un subset al formatului de fisier SGI
Open Inventor, cu adaugarea extensiilor de acces la retea, a reprezentat baza VRML-ului.
VRML a fost proiectat in primavara anului 1994, prezentat la prima conferinta WWW din
Geneva, la dezvoltarea sa avindu-se in vedere independenta de platforma, extensibilitatea
si abilitatea de a lucra in cadrul retelelor cu latime ingusta de banda. Primul program
suportind VRML (care incarca imaginea 3D a unei banane si o afisa pe ecranul
calculatorului) s-a numit Labyrinth. VRML s-a lansat public la data de 3 aprilie 1995 si
specificatia VRML versiunea 1.0 a urmat in luna mai a aceluiasi an. Versiunea 1.0 a
specificatiei VRML a fost pusa la punct de Gavin Bell, Anthony Parisi si Mark Pesce.
Ulterior a aparut VRML 1.1.

Pe 4 august 1996 se da publicitatii specificatia versiunii 2.0, permitind generarea de lumi


virtuale animate si avind o serie de facilitati noi precum:

- elemente de control geometric si proprietati ale culorilor pentru forme

- senzori simplificind operatiile efectuate cu ajutorul mouse-ului (e.g. drag-and-drop)

- gruparea nodurilor care permit "detectarea coliziunii" obiectelor

- atribute de iluminare cum ar fi fog (ceata)

6
- furnizarea de informatii despre scena catre browsere

- facilitati pentru utilizarea surselor de sunet.

In 1997 a aparut o specificatie apropiata de VRML 2.0 numita VRML97, iar in prezent se
lucreaza la cea de-a treia versiune a limbajului.

O lume virtuala modelata in VRML


1.2 Caracterizarea lumilor 3D

In loc de a parcurge pagini cu imagini statice si de a urma hiper-legaturi, utilizatorii pot,


de exemplu, sa umble pe coridoare si sa manipuleze obiecte, folosind o casca speciala de
vizualizare (Head-Mounted Display: HMD) si o manusa pentru "comunicarea" cu mediul.
Mai nou, a aparut ecranul retinal virtual (Virtual Retinal Display: VRD) pentru o
explorare mai facila a lumilor 3D.

Crearea unui spatiu virtual are similaritati cu procesul de proiectare urmat de arhitecti. In
cartea sa "Towards a New Architecture", Le Corbusier (Charles-Edouard Jeanneret)
defineste arhitectura ca fiind "arta, un fenomen al emotiilor". Manifestul sau, constind din
faptul ca arhitectura se bazeaza pe trei elemente fundamentale, se poate aplica si in cazul
realitatii virtuale.

Aceste elemente sint:

- masa - lumea este construita din diverse forme (cuburi, conuri, sfere, cilindri, piramide)
avind fiecare o masa;

- suprafata - o masa este "invelita" de suprafata ei, suprafata dind individualitate fiecarei
mase;

- planul - este generatorul lumii virtuale, ordonind-o si stabilind un set de reguli de


constructie.

Pentru a genera un mediu in VRML trebuie avute in vedere urmatoarele:

- design si functionalitate

- originalitate

- proportie

7
1.3 Criterii de design

VRML a fost proiectat pentru a indeplini urmatoarele cerinte:

Independenta de editor

Face posibila utilizarea de generatoare si editoare disponibile pe orice platforma, si


posibilitatea de a importa date din alte formate.

Perfectionarea

Inzestrat cu toate informatiile necesare pentru implementarea si adresarea unui set de


trasaturi complete pentru acceptarea unei largi industrii.

Compunerea

Abilitatea de a folosi elementele VRML-ului in diferite combinatii si astfel permitandu-se


reutilizarea lor in alte contexte.

Extensibilitatea

Abilitatea de a adauga noi elemente in cadrul lumilor VRML.

Implementarea

Capabil de implementari variate pe un numar mare de sisteme.

Potentialul multi-utilizator

Implementarea lumilor VRML in vederea folosirii in contextele utilizatorilor multiple


(medii multi-utilizator).

Ortogonalitatea

Elementele limbajului trebuie sa fie independente unul de altul, iar orice dependenta
posibila trebuie sa fie structurata si bine definita.

Performanta

8
Elementele trebuie sa fie proiectate tinind cont de importanta si de performantele
interactive pe o varietate de platforme (software si hardware).

Scalabilitatea

Elementele VRML trebuie sa fie proiectate pentru o infinitate de compozitii.

Standardizarea practica

Elementele VRML trebuie sa suporte aplicatii existente sau macar alte propuneri ce
trebuiesc a fi standardizate.

Structuri bine-definite

Un element trebuie sa posede o interfata bine-definita si o simpla stare cu scop


neconditionat. Elementele cu scopuri multiple si efecte secundare trebuie evitate.

In limbajul VRML pot sa se realizeze reprezentari statice si animate de obiecte si poate


exista hiper-legaturi catre alte elemente multimedia, cum ar fi sunetele si filmele.
Interpretoarele (vizualizatoarele) VRML sint disponibile (de cele mai multe ori gratuit)
pentru diferite platforme, la fel cum exista si diverse instrumente capabile sa creeze si sa
manipuleze fisiere VRML.

VRML suporta un model extensibil care permite definirea de noi obiecte si o inregistrare
a proceselor, suportindu-se astfel dezvoltarea extensiilor inter-operabile printr-o
modalitate standardizata. In acest mod, se asigura o legatura intre elementele VRML si
folosirea uzuala a trasaturilor API (Application Programmer Interface) pentru grafica 3D.

9
2. Noduri VRML

La baza, VRML manipuleaza obiecte, teoretic putin contine orice: forme geometrice 3D,
imagini, sunet. Multimea de baza a obiectelor VRML consta din noduri. Nodurile
formeaza structura initiala a tuturor lumilor VRML si se impart in categoriile (la
versiunea VRML 1.0):

- noduri definind forme geometrice (sfere, solide rectangulare, etc): AsciiText, Cone,
Cube, Cylinder, IndexedFaceSet, IndexedLineSet, PointSet, Sphere

- noduri care specifica proprietatile si modul de aparitie a formelor: Coordinate3,


FontStyle, Info, Material, MaterialBinding, Normal, ShapeHints, Texture2,
TextureCoordinate2 etc.

- noduri ce transforma spatiul de lucru virtual: MatrixTransform, Rotation, Scale,


Transform, Translation

- noduri definind punctul de perspectiva (camera): OrthographicCamera,


PerspectiveCamera

- noduri care definesc modul de iluminare a obiectelor: DirectionalLight, PointLight,


SpotLight

- noduri de grupare: Group, Separator, Switch, TransformSeparator, WWWAnchor

- noduri de import: WWWInline

Nodurile sint aranjate in structuri ierarhice numite grafuri de scene, definind ordinea de
reprezentare a nodurilor si folosind notiunile de stare si tranzitie. Exista un mecanism de
limitare a efectelor proprietatilor setate, permitind partitionarea scenelor in fragmente,
fiecare posedind o functionalitate independenta.

Sistemul de coordonate este cel cartezian tridimensional, unitatea de masura pentru


distante fiind metrul, iar cea pentru unghiuri fiind gradul.

Cimpurile definind valori pentru proprietati pot fi de tip simplu (numar, vector, imagine)
sau de tip compus.

10
Tipurile de baza ale valorilor VRML sint: SFBitMask, SFBool, SFColor, SFEnum,
SFFloat, SFImage, SFLong, SFMatrix, SFRotation, SFString, SFVec2f, SFVec3f
(SF=Single value Field) sau MFColor, MFLong, MFVec2f, MFVec3f (MF=Multiple
value Field).

Exemple
Un prim exemplu de lume VRML 1.0 formata din doua corpuri (o sfera violeta si un cub
verde).

#VRML 1.0 ascii


Separator A
DirectionalLight A direction 0 0 -1 # directia de iluminare
S
Separator A # creaza o sfera violeta
Material A diffuseColor 1 0 1 # culoare de forma RGB
S
Sphere AS
S
Separator A
Material A # genereaza un cub verde diffuseColor 0 1 0
S
Transform A translation 0 2 0 # muta in sus (pe axa 0y) cu
S # 2 m de la origine
Cube AS # forma cubica de dimens. implicite
S

Un exemplu mai complex, scris in VRML 2.0, in care putem observa interdependenta
nodurilor de diferite tipuri:

#VRML V2.0 utf8

Background A # fundalul skyAngle a 1.2 1.57i skyColor a0 0 1, 0 0 0.6, 0 0.5 0.6i


groundAngle a 0.5 i groundColor a0.0 0.1 0.5, 0 0.5 0.6i
S
Transform A translation -1.5 3 0 children Shape A geometry Text A # un text string
a"Tehnologii","Web"i length ai maxExtent 0.0
S
S
S
Transform A translation 1.5 0 0 children Shape A appearance Appearance A texture
ImageTexture A url "web.gif" S
S # un cub cu fatete umplute cu o imagine 2D geometry Box AS
S
S
Transform A translation 4.5 0 0 children Shape A appearance Appearance A texture
ImageTexture A url "web.gif" S

11
S # un con cu fatete umplute cu o imagine 2D geometry Cone AS
S
S
Transform A translation 5 -2.5 0 children Shape A appearance Appearance A material
Material A diffuseColor 0 0 0
S # schimba culoarea (albastru)
S geometry Text A string a"in","VRML"i length ai maxExtent 0.0 fontStyle FontStyle A
family "SANS" # modifica proprietatile fontului style "PLAIN" horizontal TRUE
leftToRight TRUE topToBottom TRUE justify "BEGIN" size 1.0 spacing 1.0
S
S
S
S

Lumea 3D generata de exemplul de mai sus, vizualizata cu WorldView 2.0

12
3. Functionarea unui sistem VRML

Functiile de baza ale unui sistem (navigator) VRML se concretizeaza in:

- modelarea fiecarui obiect in cadrul lumii virtuale

- stocarea si actualizarea informatiilor privind localizarea si aparenta fiecarui obiect (nod)

- simularea comportamentului obiectelor

- desenarea lumii 3D

- generarea sunetelor asociate obiectelor virtuale

- navigarea prin mediul virtual

- interactiunea utilizatorului cu obiectele din cadrul mediului

13
Arhitectura unui navigator VRML

4. Medii virtuale distribuite


Un mediu virtual distribuit reprezinta un sistem software care permite interactiunea in
timp-real, de la distanta, a mai multor utilizatori, incorporind grafica 3D si sunet stereo.

4.1 Caracterizare
Un mediu virtual distribuit se bucura de urmatoarele caracteristici:

- iluzia spatiului comun

Toti participantii au iluzia localizarii in acelasi spatiu tridimensional (aceeasi camera sau
cladire ori acelasi areal). De cele mai multe ori, spatiul este fictiv, generat electronic, dar
trebuie sa prezinte aceleasi proprietati pentru toti utilizatorii (aspect meteorologic,
acustica, textura etc.)

- iluzia prezentei comune

Fiecare dintre participanti ia forma unei persoane virtuale, numita avatar, care are, printre
altele, asociate urmatoarele:

- o reprezentare grafica (pe cit posibil, cit mai realista);

- un model al structurii corpului (prezenta membrelor, antenelor etc.);

- un model al deplasarii (multimea miscarilor si gesturilor pe care le poate executa);

- un model fizic (e.g. greutate, inaltime etc.).

Un avatar nu trebuie sa posed forma umanoida si un utilizator poate avea asociate mai
multe reprezentari de tip avatar. Nu toti participantii din cadrul mediului virtual trebuie sa
fie controlati de om, o parte dintre avatari putind fi creati de program, avind sau nu
inteligenta artificiala.

- iluzia timpului comun

Mediul virtual distribuit permite interactiunea in timp-real dintre utilizatori.

- posibilitatea comunicarii

14
Posibilitatile comunicarii includ comunicarea prin gesturi, prin text introdus de la un
dispozitiv de intrare sau prin voce.

- partajarea informatiilor

In afara faptului de a facilita comunicarea dintre utilizatori, sistemul ofera posibilitatea de


a interactiona cu mediul virtual (de exemplu, participantii la o simulare virtuala pot
selecta, muta, transforma obiecte care exista in mediu si pot sa le dea altor utilizatori). Un
proiectant de mediu virtual distribuit poate oferi utilizatorilor libertatea de a construi
edificii, de a desena pe o tabla sau chiar de a distruge mediul.

Un mediu virtual distribuit simulind o cafenea: Caffeine Machine (IBM)


Inainte de a intra in mediu, utilizatorul trebuie sa-si aleaga tipul de avatar dorit
Conectarea mai multor utilizatori la sistem diferenteaza mediile virtuale distribuite de
realitarea virtuala obisnuita. Abilitatea de a partaja diverse obiecte ale mediului confera o
noua dimensiune mediului, fata de serviciile conversationale clasice (chat-uri, sisteme de
tele-conferinte). Interactivitatea in timp-real este o alta caracteristica suplimentara, care
nu apare la navigatoarele Web sau la serviciile de posta electronica.

Mediile virtuale distribuite sint cele mai indicate pentru aplicatii necesitind crearea tele-
prezentei.

4.2 Structura
Un mediu virtual distribuit prezinta urmatoarea structura:

motoare si display-uri grafice (statii de lucru grafice, deseori suportind OpenGL, casti de
vizualizare - head mounted display, ecrane retinale etc.);

dispozitive de comunicare si control (tastatura, mouse, joystick, manusa senzoriala - data


glove, detectoare de miscare, microfoane, boxe audio si altele);

sisteme de procesare distribuita;

retele (rapide, locale: Ethernet, Token Ring sau mondiale: ISDN (Integrated Services
Distribution Network), DSI (Defense Simulation Internet), comunicarea realizindu-se
printr-un protocol special: VRTP (Virtual Reality Transfer Protocol) sau folosindu-se
standardul Living Words).

Problemele ce pot surveni in implementarea si functionarea unui mediu virtual distribuit


sint, in principal, cele legate de managementul in timp-real al resurselor, pierderea de
date, largimea de banda, eterogenitatea si scalabilitatea echipamentelor, configurarea si
exploatarea software-ului.

15
Mediile virtuale distribuite sint, concomitent, sisteme distribuite, aplicatii grafice si
aplicatii interactive, integrind sisteme de baze de date (utile pentru memorarea datelor
persistente care genereaza mediul: forme si localizari de obiecte, texturi, informatii
despre avatari etc.), interactionind cu sisteme tranzactionale (de comert electronic, de
exemplu) si trebuind sa asigure autentificarea utilizatorilor si jurnalizarea activitatilor.

4.3 Origini
Mediilor virtuale distribuite isi au radacinile in:

- mediile virtuale militare

Unul dintre cele mai cunoscute este SIMNET (Simulator Networking), dezvoltat pentru
DARPA incepind cu 1983 si dat in folosinta abia in anul 1990, jucind un rol destul de
important si in operatiunea "Furtuna in Desert" de peste citiva ani. Scopul proiectului a
fost dezvoltarea unui mediu virtual distribuit ieftin pentru antrenarea unor unitati militare
cu efectiv restrins. Din ideile si succesul lui SIMNET ia fiinta un protocol denumit
Distributed Interactive Simulation (DIS), standardizat in 1993 (IEEE 1278), avind un
ecou rasunator in domeniul militar, dar prezentind unele inconveniente ca numarul redus
de participanti (maxim 300 de utilizatori concomitent), marimea pachetelor de date si
necesitati hardware destul de insemnate (pentru simulari cu un grad mare de realism se
folosesc numai statii SGI). SIMNET si ulterior DIS folosesc o tehnica speciala numita
dead-reckoning pentru evitarea inundarii retelei cu pachete de date.

- jocurile in retea

Una dintre primele incercari de implementare a unui simulator realist o constituie Flight,
conceput initial de Gary Tarolli de la Silicon Graphics Inc. (SGI), simulator de zbor
disponibil in premiera in vara anului 1983 si inclus in software-ul oricarei statii grafice
comercializate de SGI in perioada 1984-1992. Partea de retea a fost adaugata incepind cu
1984, dar utilizatorii conectati la simulator nu puteau interactiona unul cu altul. Acest
lucru este insa posibil la programul demonstrativ Dogfight, limitat initial la 10 utilizatori
din ratiuni de evitare a congestiei retelei. Aceste doua aplicatii au inspirat, peste ani,
dezvoltarea mediilor virtuale distribuite, mai ales prin faptul ca SGI a facut sursele
programelor publice (fragmente din aceste surse au fost folosite pentru proiectul
NPSNET pe care-l vom descrie mai tirziu).

O alta sursa de inspiratie a constituit-o Doom (idSoftware), aparut pe piata in decembrie


1993 ca aplicatie shareware, punct de cotitura in industria jocurilor in retea, oferind un
mediu 3D realist, zgomotos si populat cu monstri. Succesorul lui, Doom II, a fost
disponibil din octombrie 1994 si s-a vindut in peste 1,6 milioane de exemplare. A fost
portat si pe statii de jocuri precum Sega 32X, Super Nintendo, Sony PlayStation sau
Nintendo 64.

Pentru Macintosh, se poate mentiona un joc cu grafica impresionanta si sunet spatial,


denumit Marathon, aparut in 1994, care oferea, ca si Doom, utilitare pentru editarea si
crearea de catre utilizator a scenelor 3D.

16
- mediile virtuale academice

Unul dintre eforturile timpurii ale comunitatii academice in crearea de medii virtuale
distribuite este concretizat in grupul de cercetare NPSNET, avind la baza citeva proiecte
studentesti ca FOG-M (Fiber-Optically Guided Missile System), VEH (Vehicle
Simulator) si MPS (Moving Platform Simulator), dezvoltate pe statii Unix in perioada
1986-1988.

NPSNET (Naval Postgraduate School Network) a avut mai multe stadii de dezvoltare.
NPSNET-1, a carui demonstratie publica a avut loc la Conferinta SIGGRAPH'91, folosea
un protocol propriu de comunicare si putea rula intr-o retea locala. Au urmat NPSNET-2,
NPSNET-3 si NPSNET-Stealth, cel din urma, operational din 1993, fiind compatibil cu
sistemele SIMNET. Ultima versiune, NPSNET-IV, a continuat sa fie dezvoltata pina in
decembrie 1996, oferind marea majoritate din facilitatile mediilor virtuale distribuite
actuale.

Un alt proiect, PARADISE (Performance Architecture for Advanced Distributed


Interactive Simulation Environments), a fost initiat in 1993 la Universitatea Stanford,
focalizat in principal pe problemele de comunicare in retea, avind ca punct de plecare
programul Dogfight mentionat anterior. Astfel, PARADISE utilizeaza tehnici de
multicast, algoritmi performanti dead-reckoning, posedind o arhitectura orientata-obiect
(C++), diverse module de interfata fiind scrise in Tcl. Sistemul este operational pe statii
IBM RS/6000 cu capabilitati OpenGL.

Institutul Suedez de Informatica dezvolta un mediu compatibil cu SIMNET si DIS


denumit Distributed Interactive Virtual Environment (DIVE). Totul a pornit in 1991, de la
editorul de grafica bidimensionala Multidraw, avindu-l ca autor pe Olaf Hagsand. Acest
program ulterior s-a dovedit a fi catalizatorul proiectului Telepresence, care a fost
redenumit ca DIVE in 1992. Daca initial sistemul rula pe IBM/RS 6000, permitind
conectarea simultana a numai doi utilizatori, ulterior a fost portat pe statii Sun, ultima
versiune, DIVE 3.0, folosind o interfata grafica utilizator conceputa complet in Tcl/Tk.

Alt proiect academic este BrickNet, initiat la Universitatea Nationala din Singapore,
rulind pe statii Sun si SGI Indigo, apoi pe PC-uri, fiind creat in 1991 de Gurminder
Singh.

O sesiune DIVE 3.0


4.4 Medii virtuale distribuite bazate pe VRML
Datorita limitarilor hardware ale masinilor conectate la Internet si a lipsei de investitii de
amploare in tehnologia VRML, relativ putine organizatii au realizat experimente majore
in domeniul mediilor virtuale distribuite. Sistemele proiectate de obicei suporta un numar
redus de participanti (sub 20 de utilizatori). Problemele puse in discutie in ceea ce
priveste interoperabilitatea mediilor virtuale pe Web pot fi urmatoarele:

Ce tipuri de informatii trebuie transferate intre sistemele care compun mediile virtuale?

17
Ce protocol trebuie ales pentru realizarea transferului?

Care este arhitectura software de retea pe care poate sa ruleze in conditii optime un astfel
de sistem?

Pentru primele doua intrebari, putem raspunde ca tipurile de date si, respectiv,
protocoalele folosite sint:

- schimbarile de stare si interactiunile intre entitati (transferate prin protocoale punct la


punct);

- elementele care compun mediul (obiecte, avatari,...) disponibile prin cereri client-server
via HTTP sau VRTP;

- pointerii si referintele de retea (reprezentate prin URI-uri);

- fluxurile de date multimedia in timp-real (transmise in maniera multicast, prin


protocoale ca RTP - Real-Time Protocol).

Pentru cea de-a treia problema, solutiile se dovedesc a fi multiple. Astfel, vom da in
continuare citeva exemple de medii virtuale distribuite, fiecare cu propria sa arhitectura.

DIS-Java-VRML
Dezvoltat la Naval Postgraduate School (Statele Unite ale Americii), proiectul este
considerat de autorii lui drept model pentru mediile virtuale distribuite bazate pe VRML.
Eforturile proiectantilor s-au focalizat asupra transferului informatiilor despre schimbarile
de stare si interactiunile dintre entitatile care compun mediul, dezvoltindu-se o biblioteca
de clase Java si o arhitectura pentru interschimbul de pachete de date DIS in Internet.

Arhitectura software de retea, la nivel general, este prezentata in urmatoarea ilustratie:

Arhitectura software generala a unui sistem DIS-Java-VRML


O metoda de implementare ar fi aceea in care browserul VRML realizeaza atit
vizualizarea lumilor 3D, cit si procesarea codului Java. O alta abordare este cea in care
sistemul consta dintr-o aplicatie Java de sine-statatoare sau dintr-un applet Java, fisierele
VRML fiind prelucrate de un vizualizator VRML auxiliar.

Experimentele practice efectuate au aratat ca un mediu DIS-Java-VRML poate suporta


pina la 40 de utilizatori conectati simultan, in conditii acceptabile de viteza de transfer.

Living Words
Acest proiect este conceput de grupul de cercetare al Consortiului Web 3D (fost
Consortiul VRML), scopul lui fiind definirea unui set de conventii VRML 2.0 pentru
realizarea interoperabilitatii mediilor virtuale distribuite. Living Words nu reprezinta,
asadar, o arhitectura completa a unui mediu virtual efectiv, ci mai mult ofera o serie de

18
standarde privind utilizarea VRML-ului in acest context: suport pentru prezenta virtuala a
mai multor participanti, pentru interactiunea participant-participant sau participant-
sistem, pentru asamblarea dinamica a mediului din diverse componente precum avatari,
modele partajate, camere virtuale si altele. Astfel, sint disponibile biblioteci (abstracte)
continind scene/noduri VRML care pot fi folosite de programatorii si proiectantii de lumi
3D.

Sint definite urmatoarele interfete pentru:

- coordonarea pozitiei si starii obiectelor partajate (inclusiv avatari);

- schimbul de informatii intre obiectele unei scene VRML;

- asigurarea securitatii aplicatiilor VRML (la nivel de sistem si de utilizator);

- dezvoltarea unei biblioteci de utilitare si extensii VRML 2.0;

- identificarea si integrarea in timpul rularii a scripturilor VRML.

Pentru asigurarea interoperabilitatii si independentei de platforma, Living Words impune


ca limbajul de programare a sistemului sa fie Java.

Aplicatiile bazate pe specificatiile Living Words (inca in stadiu de cercetare) sint:

blaxxun Interactive - compus din clientii blaxxun Community Client pro si serverele
blaxxun Community Server objects, poseda propriul browser VRML 2.0 oferind suport
pentru applet-uri Java externe;

Sony Community Place - are ca scop asigurarea unor conditii bune de vizualizare a
lumilor 3D virtuale chiar si pentru clientii conectati la Internet prin modem, furnizind
servicii conversationale de tip chat (text sau grafic), interactiunea cu obiecte animate etc.
Serverul si clientii folosesc un protocol special, denumit VSCP (Virtual Society Client
Protocol), bazat pe TCP/IP;

Open Community - mediu virtual distribuit dezvoltat de Mitsubishi Electric Research Lab
(MERL), reprezinta si o biblioteca software oferind servicii precum comunicatiile in
retea, transportul datelor audio si obiectelor VRML in timp-real. Protocolul folosit este
ISTP (Interactive Sharing Transfer Protocol). Sistemul este conceput in limbajul C, dar in
viitor va fi rescris in Java.

19
4.5 Unelte de dezvoltare

Pentru a asigura modularizarea, portabilitatea si adaptarea mediului la lumea dinamica a


Internetului, s-au imaginat diverse aplicatii pentru asistarea programatorilor si
designerilor de sisteme virtuale distribuite. Majoritatea uneltelor de dezvoltare (toolkit-
uri) sint disponibile gratuit pe Internet. Deja exista o serie de aplicatii si biblioteci care
faciliteaza munca de construire a unui mediu virtual distribuit (bazat sau nu pe VRML)
dintre care pot fi amintite:

Bamboo este un mediu de programare a sistemelor virtuale distribuite, ideea de baza fiind
asigurarea in maniera dinamica a scalabilitatii acestora. Modular, preluind filosofia
Adobe sau Netscape de a utiliza plug-in-uri, Bamboo poate fi adaptat conform dorintelor
utilizatorilor, fiind independent de platforma (se poate incarca masina virtuala Java
(JVM) ca modul, desi aplicatia este conceputa in C++). Partea de retea este preluata de la
ACE (Adaptive Communication Environment), pe baza caruia a fost construit.

High Level Architecture (HLA) initial a fost dezvoltat in cadrul Departamentului de


Aparare SUA si nu a reprezentat un standard deschis, public. In prezent, HLA se afla in
adoptia organizatiilor IEEE si OMG (Object Management Group). Arhitectura este una
obiectuala, fiecare simulator de lumi virtuale 3D reprezentind o componenta, denumita
federate, constituita dintr-o colectie de obiecte, posedind diferite atribute, capabile de a
initia si raspunde la evenimente. Un federate isi inregistreaza obiectele prin intermediul
unei componente middleware denumita Run-Time Infrastructure (RTI). RTI colaboreaza
cu instantele RTI aflate pe alte calculatoare pentru a obtine informatii despre ceilalti
participanti si a le trimite date. Colectia tuturor componentelor federate impreuna cu
instantele RTI asociate formeaza asa-numita federatie (federation). RTI ofera suport
pentru managementul federatiei, managementul obiectelor dintr-un federate,
managementul datelor vehiculate in retea, managementul proprietarilor obiectelor si
managementul timpului. Specificatia HTL pune la dispozitia programatorilor interfete
spre limbajele C++, Java si Ada, implementarile RTI deja existind pe anumite platforme
precum Sun Solaris, SGI IRIX, Linux si Windows NT.

Java Shared Data Toolkit (JSDT) este pus la dispozitie de Sun si ofera un cadru de
dezvoltare a aplicatiilor Java colaborative (e.g. suport pentru sincronizarea automata a
zonelor de memorie partajata si definirea de canale abstracte pentru trimiterea si
receptionarea evenimentelor partajate). Utilizind JSDT, se poate implementa complet
HLA RTI.

Shared Data Objects (SDO) reprezinta oferta gratuita a laboratorului AlphaWorks de la


IBM care pune la dispozitie un toolkit Java, util pentru crearea mediilor virtuale
distribuite, asemanator cu JSDT, dar furnizind mai multe facilitati pentru programatori.

20
5. Conceperea de aplicatii VRML

Pentru definirea unei aplicatii VRML, trebuie sa avem in vedere sa asigure urmatoarele:

- un mecanism pentru managementul si tranferul datelor bidimensionale si


tridimensionale;

- elemente pentru reprezentarea bidimensionala si tridimensionala a informatiilor de baza;

- elemente pentru vizualizarea si modelarea informatiilor bidimensionale si


tridimensionale;

- un mecanism pentru incorporarea de date din alte formate de fisiere;

- mecanisme pentru definirea de noi elemente care extind capabilitati pentru alte formate
de fisiere (suportindu-se tipuri suplimentare si forme ale informatiei).

5.1 Scripturi in VRML


In cadrul administrarii starilor se doreste adesea sa se decida ce efect va avea un
eveniment in scena VRML proiectata. De exemplu: "daca proprietatea unui obiect (nod)
are o valoare mai mica decit valoarea permisa si daca utilizatorul furnizeaza o combinatie
de date corecta, atunci modifica valoarea acelui obiect."

Astfel de decizii sint exprimate ca noduri de tip Script (in VRML 2.0), care receptioneaza
evenimente de la alte noduri, le proceseaza si trimit evenimente la alte noduri. Un nod
Script poate, de asemeni, sa pastreze drumul informatiei intre executii. Aceasta sectiune
descrie mecanismele si semanticile generale pe care toate limbajele script trebuie sa le
suporte.

Evenimentul procesat este prelucrat de un program sau de un script continut in (sau


referit de) cimpul url al nodului Script. Acest program (sau script) poate fi scris in orice
limbaj de programare pe care il suporta navigatorul VRML. Vizualizatoarele VRML 2.0
sint libere sa implementeze orice specificatie de limbaje script.

Un nod Script este activat atunci cind este receptionat un eveniment. In acest punct,
browser-ul executa programul din cimpul url al nodului Script (transferind programul
unui interpretor extern spre executie, daca este necesar). Programul poate realiza o
varietate de actiuni: trimite evenimente (si astfel schimba scena VRML), proceseaza
diverse date, dialogheaza cu diverse servere aflate oriunde in Internet si altele.

21
5.2 Executia scripturilor
Nodurile Script permit autorului de lumi VRML sa insereze diverse proceduri de calcul in
mijlocul unui eveniment cascada. Scripturile faciliteaza de asemeni autorului de lumi sa
genereze un eveniment cascada atunci cind un nod Script este creat sau, in unele limbaje
script, la un moment arbitrar.

Nodurile Script receptioneaza evenimente in mod cronologic. Orice evenimente generate


ca rezultate ale procesarii unui eveniment furnizeaza timpi corespunzatori cu
evenimentele care le genereaza. Conceptual, receptionarea si procesarea unui eveniment
se realizeaza instantaneu in cadrul unui nod Script, chiar daca in practica acest lucru nu
este posibil.

Initializate si Shutdown
Limbajul script poate defini o metoda initializate (un constructor), aceasta metoda fiind
apelata inaintea oricaror evenimente care sint generate. Evenimentele generate prin
metoda de initializare trebuie sa aiba timpul mai mic decit al oricarui eveniment emis de
nodul Script.

De asemenea, se poate specifica o metoda shutdown (un destructor). Aceasta metoda va fi


apelata atunci cind corespondentul nodului Script este sters sau lumea continuta de nodul
Script este descarcata ori inlocuita de alta lume VRML. Aceasta metoda poate fi folosita
ca o operatie de stergere, mecanism extern pentru eliminarea fisierele create temporar, de
exemplu.

EventsProcessed
Se poate defini o rutina eventsProcessed, care este apelata dupa ce unul sau mai multe
evenimente sint receptionate. Metoda eventsProcessed poate prezenta un caracter
nedeterminist. Pentru un singur eveniment cascada, rutina eventsProcessed a unui nod
Script dat poate fi apelata cel mult o singura data. Evenimentele generate de o rutina
eventsProcessed sint date de timpul ultimului eveniment procesat.

Scripturi asincrone
Unele limbaje suportate de browser-ele VRML pot permite nodurilor Script sa genereze
spontan evenimente, facilitind crearea de noduri Script avind diverse functii cum ar fi un
nou nod sensor (al carui rol este sa interactioneze cu utilizatorul). In acest caz, scriptul
genereaza un eveniment initial care cauzeaza un eveniment cascada si limbajul script
si/sau browser-ul vor determina un timp de inceput apropiat pentru acel eveniment initial.
Astfel de evenimente sint apoi sortate in cadrul fluxului de evenimente si procesate ca
oricare altele, urmind aceleasi reguli pentru circuitele de modificare a scenelor VRML
etc.

Limbajele script suportate


Cimpul url al nodului Script poate specifica un URL (e.g. http:) care refera la un fisier
sau direct inline (e.g. javascript:) in codul limbajului script. Tipul MIME al datei
returnate defineste tipul limbajului. Instructiuni aditionale pot fi incluse inline folosind:

22
protocol (care permite specificarea unui tip MIME) sau "Scripting Language Protocol"
(protocolul limbajului script).

Exemplu:

DEF CYCLE Script A eventIn SFTime touchTime field SFInt32 number 2 eventOut
SFInt32 output url "javascript: function initialize() A // constructor output = 0;
S function touchTime(value, time) A if (output == number - 1) output = 0; else
++output;
S
"
S

Cimpurile, evenimentele de intrare si evenimentele de iesire ale unui nod Script sint
accesibile din cadrul functiilor limbajului script. Cimpurile definite in nodul Script sint
disponibile scriptului printr-un mecanism specific limbajului (de exemplu, o variabila
membru este automat definita pentru fiecare cimp si eveniment ale nodului Script).
Valorile cimpului pot fi citite sau scrise si sint persistente de-a lungul apelurilor functiei.
Evenimentele de iesire definite in nodul Script pot fi, desigur, accesate: valoarea primita
este ultima valoare trimisa. Scriptul poate avea acces, de asemeni, orice eveniment al
oricarui nod la care are un pointer. Sintaxa acestui mecanism este dependenta insa de
limbajul folosit.

Interactiunea cu navigatorul VRML


In continuare vom descrie semantica pentru functiile si metodele pe care interfata
browser-ului le suporta, folosind o sintaxa asemanatoare cu cea a limbajului C pentru
definirea tipului parametrilor si valorilor returnate. In aceasta sintaxa ipotetica, tipurile
sint date ca tipuri de cimpuri VRML.

Metodele de interfata sint urmatoarele:

- SFString getName(); si SFString getVersion();

Metodele getName() si getVersion() dau "numele" si "versiunea" navigatorului curent


folosit. Aceste valori sint definite de autorul browser-ului VRML si ele identifica acel
browser. Nu sint garantate a fi unice sau a respecta un format standard si sint doar
informative. Daca informatia nu este disponibila, aceste metode returneaza siruri vide.

- SFFloat getCurrentSpeed();

23
Se returneaza viteza cu care viewpoint-urile (punctele de vizualizare) VRML sint
translatate, in metri pe secunda. Daca viteza de deplasare nu este semnificativa sau daca
viteza nu poate fi determinata din diverse motive, este returnata valoarea 0.0.

- SFFloat getCurrentFrameRate();

Metoda getCurrentFrameRate() returneaza rata curenta a frame-urilor (cadrelor imaginii),


in frame-uri pe secunda. Modalitatea prin care aceasta este masurata depinde de browser.

- SFString getWorldURL();

- Metoda getWorldURL() returneaza locatia lumii incarcate.

- void replaceWorld(MFNode nodes);

Metoda inlocuieste lumea curenta cu lumea reprezentata de nodurile transmise. Aceasta


metoda de obicei nu returneaza nimic, deoarece continutul lumii din scriptul care ruleaza
va fi inlocuit. Metoda este similara apelurilor exec() din UNIX.

- void loadURL(MFString url, MFString parameter);

Metoda loadURL incarca url-ul cu parametrii trimisi. Aceasta metoda returneaza imediat,
in cazul in care URL-ul este incarcat in aceeasi fereastra a browser-ului (nu este nici un
parametru TARGET redirectat la alt frame). Lumea curenta va fi oprita si inlocuita cu
datele de la noul URL la un moment din viitor.

- void setDescription(SFString description);

Metoda seteaza descrierea pentru lumea VRML curenta. Acest mesaj va fi afisat intr-o
maniera ce depinde de browser. Pentru a sterge descrierea curenta, se specifica un sir vid.

- MFNode createVrmlFromString(SFString vrmlSyntax);

Metoda proceseaza un sir constind dintr-o descriere a unei scene VRML, analizind
nodurile continute in scena si returnind radacina nodurilor corespunzatoare scenei
VRML.

- void createVrmlFromURL(MFString url, SFNode node, SFString event);

CreateVrmlFromURL insarcineaza browser-ul sa incarce descrierea unei scene VRML de


la un anumit URL sau mai multe URL-uri date. Dupa ce scena este incarcata,
evenimentul este trimis la nodul transmis ca parametru, returnindu-se radacina nodurilor
corespunzatoare scenei VRML. Parametrul evenimentului contine un sir numind un
eveniment MFNode la nodul pastrat.

24
void addRoute(SFNode fromNode, SFString fromEventOut, SFNode toNode, SFString
toEventIn); si void deleteRoute(SFNode fromNode,SFString fromEventOut, SFNode
toNode,SFString toEventIn);

Aceste metode adauga si respectiv sterg o cale intre numele evenimentelor date pentru
nodurile date.

Exemplu
Ilustram cele afirmate mai sus prin urmatorul exemplu preluat din specificatia VRML97:

# definirea prototipurilor
PROTO Shuttle a # cimpuri publice field SFTime rate 1 field SFFloat distance 1 field
MFNode children a i exposedField SFTime startTime 0 exposedField SFTime stopTime 0
field SFBool loop TRUE
iA
DEF F Transform A children IS children S
DEF T TimeSensor A cycleInterval IS rate startTime IS startTime stopTime IS stopTime
loop IS loop
S

DEF S Script A field SFFloat distance IS distance eventOut MFVec3f position

url "javascript: function initialize() A


// constructor:setup interpolator, pos1 = new SFVec3f(-distance, 0, 0); pos2 = new
SFVec3f(distance, 0, 0); position = new MFVec3f(pos1, pos2, pos1);
S",
S

DEF I PositionInterpolator A key a 0, 0.5, 1 i keyValue a -1 0 0, 1 0 0, -1 0 0 i


S

ROUTE T.fraction_changed TO I.set_fraction


ROUTE I.value_changed TO F.set_translation
ROUTE S.position TO I.set_keyValue
S

PROTO Pendulum a field SFTime rate 1 field SFFloat maxAngle 3.14159 field MFNode
children a i exposedField SFTime startTime 0 exposedField SFTime stopTime 0 field
SFBool loop TRUE
iA
DEF F Transform A children IS children S
DEF T TimeSensor A cycleInterval IS rate startTime IS startTime stopTime IS stopTime
loop IS loop

25
S
DEF S Script A field SFFloat maxAngle IS maxAngle eventOut MFRotation rotation

url "javascript: function initialize() A


// constructor:setup interpolator, rot1 = new SFRotation(0, 0, 1, 0); rot2 = new
SFRotation(0, 0, 1, maxAngle/2); rot3 = new SFRotation(0, 0, 1, maxAngle); rotation =
new MFRotation(rot1, rot2, rot3, rot2, rot1);
S",
S
DEF I OrientationInterpolator A key a 0, 0.25, 0.5, 0.75, 1 i keyValue a 0 0 1 0,
0 0 1 1.57,
0 0 1 3.14,
0 0 1 1.57,
0010i
S

ROUTE T.fraction_changed TO I.set_fraction


ROUTE I.value_changed TO F.set_rotation
ROUTE S.rotation TO I.set_keyValue
S

Transform A translation -3 0 0 children Pendulum A rate 3 maxAngle 6.28 children Shape


A geometry Cylinder A height 5 S S
S
S

Transform A translation 3 0 0 children Shuttle A rate 2 children Shape A geometry Sphere


ASS
S
S

26
5.3 Extensii ale navigatorului VRML

Navigatoarele VRML care doresc sa adauge functionalitati peste capabilitatile


specificatiei pot sa realizeze acest lucru prin crearea prototipurilor externe. Daca noul nod
nu poate fi exprimat folosind mecanismul prototipurilor (nu poate fi specificat ca un graf
de scena VRML), atunci trebuie sa fie definit ca un prototip extern cu o specificatie URN
unica. Autorii care folosesc functionalitati extinse trebuie sa furnizeze URL-uri sau URN-
uri multiple, alternative la reprezentarea continutului pentru a se asigura ca sint acceptate
de toate browser-ele.

Spre exemplu, sa presupunem ca se doreste implementarea unui nod geometric Torus,


folosit pentru reprezentarea unui tor:

EXTERNPROTO Torus a field SFFloat bigR, field SFFloat smallR i


a"urn:inet:library:Torus", "http://www.site.com/proto_torus.wrl" i

Browser-ul va recunoaste URN-ul si va folosi implementarea nodului Torus. Alte


browsere s-ar putea sa nu recunoasca URN-ul, sa ignore lista de URL-uri si sa caute
fisierul pentru prototipul specificat. Daca URL-urile sau URN-urile nu sint gasite, nodul
Torus se presupune ca este nod vid.

Navigatoarele VRML trebuie sa recunoasca si sa implementeze PROTO,


EXTERNPROTO, si specificatiile URN. Numele prototipurilor (e.g. Torus) nu au nici o
semnificatie aparte. Unicitatea URL-urilor si URN-urilor determina locatia si semantica
nodurilor.

6. Studiu de caz: o aplicatie VRML pentru vizualizarea tridimensionala a interiorului unei


cladiri
In ceea ce urmeaza, se va prezenta o aplicatie VRML completa pentru realizarea 3D a
parterului Facultatii de Informatica, alcatuit din holul de la intrare, secretariatul, biroul
Dl.Decan si sala de calculatoare RP1. Acest studiu de caz reprezinta partea practica
originala a lucrarii de diploma a absolventului promotiei 1999/2000 Dan Moscu.

Parterul Facultatii de Informatica (modelat in VRML)

27
Aplicatia a fost realizata cu ajutorul unui editor numit VRML Pad, iar pentru vizualizarea
ei se poate folosi un plug-in precum Cortona VRML Client sau World View. In principiu,
interfata unui plug-in VRML pentru navigatorul Web este compusa din doua parti
distincte:

Toolbar-urile:

- toolbar-ul vertical care contine butoane folosite pentru a specifica tipul navigarii prin
lumea VRML.

- toolbar-ul orizontal care contine butoane cu actiuni predefinite pentru schimbarea


pozitiei de vizualizare a lumii virtuale.

Fereastra 3D care prezinta utilizatorului lumea VRML dorita.

Exista de asemenea meniuri pop-up contextuale care pot fi accesate apasind butonul drept
al mouse-ului in timp ce cursorul este deasupra toolbar-urilor sau a ferestrei 3D.

Navigarea prin lumea virtuala

A te misca in spatiul 3D este similar cu a misca o camera video. Astfel, ne putem gindi la
o camera video care captureaza imagini din lumea reala si le transforma in semnale
electronice pentru a fi vizualizate pe ecran; camera video poseda o pozitie si o orientare si
acestea sint atribute independente. Se pot folosi comenzile camerei situate pe toolbar-ul
vertical pentru a misca aceasta camera in spatiul tridimensional. Acesta simuleaza
existenta unei persoane reale care vede si interactioneaza cu lumea VRML.
Programatorul VRML poate plasa in lumea virtuala oricite camere doreste - locuri
interesante de unde utilizatorul ar dori sa vada lumea. Doar o camera poate fi activa la un
moment dat.

Navigarea prin lumea virtuala 3D

Structura aplicatiei
Aplicatia este impartita in patru lumi distincte: holul, sala de calculatoare RP1,
secretariatul si decanatul. Celor patru lumi le corespund fisierele: hol.wrl, rp1.wrl,
secretariat.wrl, respectiv decanat.wrl. Trecerea de la o lume la alta se face dind click pe
usa respectiva. In momentul in care cursorul este pozitionat pe una din aceste usi, se va
activa un Anchor. In acel moment apasind butonul sting al mouse-ului se va realiza
trecerea in alta lume.

De exemplu, codul care realizeaza trecerea din hol in RP1 este:

28
Anchor A children a
USE usa
i url "rp1.wrl"
S

Tastatura unui calculator modelata in VRML


Fiecare obiect care apare de mai multe ori in cadrul aplicatiei, cum ar fi: monitorul,
tastatura, unitatea centrala, scaunul, masa, usa etc. este stocat in fisiere separate si apoi
este importat in locul in care se doreste a fi folosit. Spre exemplu, in figura de mai sus
este prezentata o captura din fisierul tasta.wrl, in care a fost modelata tastatura utilizata in
fisierul rp1.wrl pentru fiecare calculator virtual.

Structura fisierelor este una arborescenta, de pilda fisierul rp1.wrl importa noduri din
fisierele proba.wrl si pereti.wrl.

Fisierul proba.wrl reprezinta o masa care are trei calculatoare si trei scaune, si in fisierul
rp1.wrl este importat de doua ori. Fisierul pereti.wrl reprezinta incaperea propriu-zisa,
adica trei pereti pe care se afla si o tabla, si un perete de sticla, utilizind diverse texturi.

Peisajul care se observa prin geamul de sticla al laboratorului RP1 este realizat in
pereti.wrl, iar codul lui se prezinta mai jos:

Background A groundColor a0.21 0.66 0.17, 0.21 0.66 0.17i groundAngle 1.5 skyColor
a0.42 0.63 0.89, 0.42 0.63 0.89i skyAngle 1.64 backUrl "img\back.jpg" frontUrl
"img\back.jpg" rightUrl "img\back.jpg" leftUrl "img\back.jpg" bottomUrl "img\floor.jpg"

La rindul sau, fisierul pereti.wrl foloseste fisierele neon.wrl si usahol.wrl, iar proba.wrl
utilizeaza fisierele monitor.wrl, tasta.wrl, masa.wrl, scaun.wrl si pc.wrl.

Sala de calculatoare RP1 (modelata in VRML)


Unitatea centrala a unui calculator are definit un touch sensor la butonul CDROM-ului si
un touch sensor la butonul de power. In momentul in care este apasat butonul de power,
se va aprinde un led daca este stins si invers. Cind este apasat butonul de la CDROM, va
iesi CD-ul, va sta citeva secunde, si apoi va intra la loc. In acest timp un led verde de la
CD va clipi. Si ledul rosu de la hard-disk clipeste continuu, ca si cum ar fi folosit hard-
disk-ul. Datorita acestor animatii, miscarea in sala de calculatoare poate fi fragmentata,
fiind consumate foarte multe resurse.

29
Un calculator virtual (modelat in VRML)

7. Viitor
Deja realitatea virtuala este utilizata, inglobata sau nu in alte tehnici de reprezentare a
informatiei, in domenii precum arhitectura, educatia, medicina, ingineria ori sociologia si
divertismentul. Creatiile VRML prezente deja pe Web pot fi incadrate intr-un curent
artistic denumit environmental art.

Spatiul cibernetic poate deveni viitorul laborator al omului de stiinta, viitorul simulator
cibernetic al inginerilor, viitorul amfiteatru al studentilor. Daca inca nu exista suficiente
instrumente menite a construi lumi 3D sofisticate, tehnici precum telesenzatia (summum
al realitatii virtuale, computer vision, grafica computerizata si telecomunicatii) ofera
premisele reprezentarii informatiilor intr-o forma familiara, facila si complexa.

Credem ca limbajele de marcare se vor apare in urmatorii ani vor oferi modalitati de
manipulare inteligenta a datelor universului nostru uman transpus in spatiul cibernetic
aflat in continua transformare si expansiune.

30
31

S-ar putea să vă placă și