Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Realitatea virtuala - VRML
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

Introducere in VRML t5c4cp
Noduri VRML
Functionarea unui sistem VRML
Medii virtuale distribuite
Conceperea de aplicatii VRML
Studiu de caz: o aplicatie VRML pentru vizualizarea tridimensionala a interiorului unei cladiri
Viitor

--------------------------------------------------------------------------------

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
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)

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

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

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
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.

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
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
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


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

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.

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.

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?

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 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.

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.

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.

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. https:) 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: 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();

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

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
i A
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
i A
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 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,
0 0 1 0 i
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 A S S
S
S

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", "https://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)
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:

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"
S

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.


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.


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta