|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
Realitatea virtuala - VRML | ||||||
|
||||||
Introducere in VRML t5c4cp -------------------------------------------------------------------------------- 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. 1. Introducere in VRML 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) 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. 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 1.3 Criterii de design 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 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. 2. Noduri VRML 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. 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 #VRML 1.0 ascii 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 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 4.1 Caracterizare 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 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. 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 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. 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 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. 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. Ce tipuri de informatii trebuie transferate intre sistemele care compun mediile virtuale? 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 Arhitectura software de retea, la nivel general, este prezentata in urmatoarea ilustratie: 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 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. 4.5 Unelte de dezvoltare 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. 5. Conceperea de aplicatii VRML 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 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. 5.2 Executia scripturilor 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 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 Scripturi asincrone Limbajele script suportate Exemplu: DEF CYCLE Script A eventIn SFTime touchTime field SFInt32 number 2 eventOut SFInt32 output url "javascript: function initialize() A // constructor output = 0; 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 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(); 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. 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 # definirea prototipurilor DEF S Script A field SFFloat distance IS distance eventOut MFVec3f position url "javascript: function initialize() A DEF I PositionInterpolator A key a 0, 0.5, 1 i keyValue a -1 0 0, 1 0 0, -1 0 0 i ROUTE T.fraction_changed TO I.set_fraction 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 url "javascript: function initialize() A ROUTE T.fraction_changed TO I.set_fraction Transform A translation -3 0 0 children Pendulum A rate 3 maxAngle 6.28 children Shape A geometry Cylinder A height 5 S S Transform A translation 3 0 0 children Shuttle A rate 2 children Shape A geometry Sphere A S S 5.3 Extensii ale navigatorului VRML 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 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 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 De exemplu, codul care realizeaza trecerea din hol in RP1 este: Anchor A children a 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. 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. |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite |
|