Mediu Interactiv Multiuser In 3d, Utilizand Java Si X3d

CUPRINS

Capitolul 1 Introducere

1.1 Domenii abordate

1.1.1 VRML

1.1.2 X3D – Extensible 3D

1.2 Obiective generale

Capitolul 2 Tehnologii utilizate

2.1 Limbaje de programare, marcare și metalimbaje folosite în implementarea aplicației

2.1.1 JAVA

2.1.2 X3D – XML

2.1.3 HTML

2.1.4 SQL

2.2 Medii de dezvoltare

2.2.1 X3D-Edit

2.2.2 Eclipse IDE

2.3 Browser X3D

Capitolul 3 Descrierea aplicației

3.1 Noțiuni teoretice

3.1.1 Elemente introductive X3D

3.1.2 Specificații ISO/IEC 19777 pentru îmbinarea limbajului JAVA cu X3D

3.1.3 Applet cu semnătură

3.1.4 Conexiunea server-client

3.2 Tema propriu-zisă

3.3 Designul aplicației

Capitolul 4 Scenariu de utilizare

Capitolul 5 Concluzii și perspective

Capitolul 6 Bibliografie

Lista figurilor:

Figura 1 Exemplu scenă 3D în VRML 8

Figura 2 Arhitectura unui sistem X3D 9

Figura 3 Îmbinarea X3D cu limbaje de programare 12

Figura 4 Exemplu scenă 3D în X3D 13

Figura 5 Scenă X3D 19

Figura 6 Îmbinarea X3D cu XML 20

Figura 7 Tipuri de profile în X3D 24

Figura 8 Editor X3D-Edit 25

Figura 9 Rezultatul rulării unui fișier X3D 25

Figura 10 Captură Eclipse 26

Figura 11 Imagine încărcată cu BS Contact 7.2 27

Figura 12 Imagine încărcată cu Vivaty Player 28

Figura 13 Imagine încărcată cu FreeWRL 28

Figura 14 Imagine încărcată cu InstantReality 29

Figura 15 Imagine încărcată cu Octaga 29

Figura 16 Imagine încărcată cu Xj3D 30

Figura 17 Nodul cub 32

Figura 18 Nodul con 32

Figura 19 Nodul cilindru 33

Figura 20 Nodul sferă 33

Figura 21 Nodul text 33

Figura 22 Comanda keytool -genkey 39

Figura 23 Fereastră de avertizare pentru applet 40

Figura 24 Opțiune fereastră avertizare applet 41

Figura 25 Afișarea de informații suplimentare 41

Figura 26 Diagramă stare/tranziție TCP/IP 43

Figura 27 Rularea serverului 50

Figura 28 Fereastră de avertizare pentru applet 51

Figura 29 Afișarea applet-ului de autentificare în browser 52

Figura 30 Afișarea applet-ului în browser și date completate 52

Figura 31 Afișarea applet-ului de înregistrare în browser 53

Figura 32 Afișarea applet-ului de înregistrare cu date completate 53

Figura 33 Scenă 3D încărcată în browser 54

Figura 34 Scena 3D încărcată în browser 55

Figura 35 Vizualizarea scenelor 3D pentru vizitatori diferiți 55

Figura 36 Date primite de server 56

Capitolul 1 Introducere

Spațiul Web reprezintă unul dintre exemplele clare în care o idee simplă, cea a hipertextului, a generat un întreg conglomerat de tehnologii. Internetul, prin viteza cu care a fost asimilat și dezvoltat, a adus o nouă viziune asupra proiectării aplicațiilor.

S-a observat o tendință a dezvoltatorilor de aplicații web, de utilizare tot mai frecventă a scenelor 3D. Deasemenea există numeroase facilități oferite pentru a crea lumi virtuale, interactive și dinamice.

Deși există multe standarde și specificații independente care afectează dezvoltarea și administrarea paginilor web, standardele web în sensul larg sunt următoarele:

Recommendations publicat de World Wide Web Consortium (W3C)

Internet standard (STD) publicat de Internet Engineering Task Force (IETF)

Request for Comments (RFC) publicat de Internet Engineering Task Force

Standards publicat de International Organization for Standardization (ISO)

Standards publicat de Ecma International (formal ECMA)

The Unicode Standard și Unicode Technical Reports (UTR) publicat de Unicode Consortium

Registrele de nume și numere administrate de Internet Assigned Numbers Authority (IANA).

Aplicațiile cele mai importante ale realității virtuale sunt considerate următoarele:

modelare, simulare și vizualizare în domeniul științific, prin care se obțin imaginea și studiul diferitelor modele sau fenomene inaccesibile observației directe(fluxuri de informații, structuri atomice, sisteme meteorogice, sisteme cosmice etc.); utilizarea rezultatelor în software educațional;

experimente și simulări în domeniul medicinei, pentru învățarea diferitelor proceduri fără riscul vieții pacientului (de exemplu, în chirurgie);

sisteme de simulare(simulatoare) pentru antrenamentul piloților, astronauților, șoferilor etc., prin care se pot exersa manevre dificile, fără a fi în pericol viața participantului sau securitatea cabinei de vehicul (avion, elicopter, mașină, tren, navă maritimă, navă spațială etc.);

proiectare asistată de calculator(CAD) în diferite domenii (construcții, arhitectură etc.), prin care proiectantul are posibilitatea să vadă rezultatele proiectului sub forma imaginii acestuia în timp real, să observe detaliile, să studieze respectarea diverselor criterii, să ia decizii de modificare a parametrilor înainte de construirea prototipului;

realizarea de jocuri distractive pe calculator și filme de animație.[VPO04]

1.1 Domenii abordate

În următoarele două paragrafe am realizat o prezentare a două standarde 3D, care

se succed în evoluția lor. În derularea aplicației am utilizat X3D, dar pentru că acest standard moștenește caracteristicile standardului VRML și pentru o mai bună înțelegere, s-a ales prezentarea acestuia. Deasemenea menționez că VRML este încă utilizat pe scară largă de către dezvoltatori și așa cum am precizat în paragrafele ce urmează, aplicațiile dezvoltate cu ajutorul VRML sunt încă actuale și funcționale, chiar dacă unele au o vechime de zece ani.

1.1.1 VRML

Calculatoarele au devenit din ce în ce mai rapide, cu capabilități grafice avansate, furnizând resurse pentru dezvoltarea de tehnologii grafice. În mod specific, tehnologiilor 3D li s-au acordat din ce în ce mai multă atenție în ultimii ani, introducând o nouă etapă în lumea artei și a design-ului. Tranziția de la aplicațiile 2D la cele 3D a implicat dezvoltarea de tehnologii Web 3D corespunzătoare.

VRML ( Virtual Reality Modeling Language ) este un standard folosit pentru a descrie modele 3D și lumi virtuale pe Internet. VRML poate fi folosit pentru o gamă largă de aplicații, precum: muzee virtuale, medii interactive educaționale, divertisment, construirea de orașe virtuale și multe altele. Faptul că VRML se poate aplica în numeroase situații, dar și ușurința cu care se poate învăța, face ca acest standard să fie deseori folosit în dezvoltarea de aplicații.

VRML este un limbaj descriptiv, ce definește scene 3D, oferind posibilitatea utilizatorului să călătorească în cadrul scenei. Fișierele VRML folosesc extensia .wrl și pot fi încărcate cu ajutorul unor aplicații speciale, majoritatea fiind plug-in pentru Netscape și Internet Explorer.

VRML este standardizat ca ISO / IEC 14772, oferind capacitatea de a accesa un model 3D pe internet.

Beneficii oferite de VRML:

modelează cu ușurință lumi 3D;

obiecte complexe 3D sunt rezultatul combinării unor primitive simple, ca cilindrii, sfere, conuri, suprafețe triunghiulare etc.;

se folosesc fișiere de dimensiuni mici;

programarea ierarhică oferă un suport pentru asimilarea rapidă a limbajului.

Termenul de Virtual Reality Modeling Language (VRML) a fost folosit prima

dată de Tim Berners-Lee la o conferință europeană Web în 1994, când a discutat despre necesitatea unui standard Web 3D. Ca urmare a dezbaterii, un grup de experți s-au reunit, formând www-vrml. Grupul a modificat numele standardului din Virtual Reality Markup Language în Virtual Reality Modeling Language, pentru a evidenția rolul pe care îl are în grafică. Rezultatul efortului lor reprezintă specificațiile VRML 1. Ca bază a acestor specificații au folosit formatul fișierului Inventor de la Silicon Graphics. Aceștia au dezvoltat inițial specificațiile VRML, pornind de la un set de clase care încapsulau biblioteca de funcții grafice OpenGL (Open Inventory).

Standardul VRML 1 crea lumi virtuale statice, ceea ce a reprezentat o limitare. Aceasta s-a rezolvat o dată cu dezvoltarea standardului VRML 2, ce oferă interactivitate cu lumea virtuală. În 1997, VRML 2 a fost adoptat ca Standard Internațional ISO/IEC 14772-1:1997, cunoscut sub numele de VRML97. Din punct de vedere tehnic, pentru a oferi posibilitatea realizării lumilor 3D dinamice, standardul 2.0 a fost îmbogățit cu noi tipuri de noduri și noi concepte, dintre care se menționează: PROTOtipuri, senzori, switch-uri, scripturi, interpolatori, rute, elemente multimedia (sunete, texturi animate).

Standardul VRML 97 este dezvoltat în continuare de Web 3D Consortium. X3D (Extensible 3D) reprezintă succesorul lui VRML97, standard ce are ca format un fișier XML și asigură comunicarea în timp real a datelor 3D.

Caracteristici principale ale standardului VRML:

platformă independentă – poate fi utilizat pe orice fel de platformă – PC sau MAC;

navigare – o lume VRML poate fi ușor explorată, navigând printre obiecte, deasemenea se pot face legături cu alte lumi VRML și există un important avantaj precum existența senzorilor ce permit executarea unor acțiuni la apariția unui eveniment.

Deplasarea într-un spațiu 3D este similar cu mișcarea unei camere video. Aceasta

are o poziție și o orientare, atribute stabilite de modul în care utilizatorul se deplasează în scenă. Acest mod de deplasare se numește Viewpoint în termeni VRML.

Alte caracteristici:

efecte – VRML permite specificarea de înfățișări și sunete. De exemplu adăugarea de fundal, texturi, zgomote în fundal, capacitatea de a face un obiect transparent. Se poate utiliza animația, rotind sau mișcând un obiect;

coliziuni – se poate depista coliziunea între un utilizator și un obiect, de exemplu când un utilizator dorește să treacă printr-un perete, acțiune ce se poate interzice;

script – utilizarea limbajelor de programare, ca Java și C++, favorizează crearea unor lumi 3D complexe;

extensibil – VRML oferă opțiunea de a crea noduri proprii, folosind Prototipuri.[EST05]

Web3D Consortium a dat o definiție a acestui standard, și anume: VRML este un

standard deschis pentru 3D multimedia și lumi virtuale partajate pe Internet.

VRML este utilizat în numeroase domenii, prin modelarea aplicațiilor în: medicină, chimie, design, arhitectură, jocuri, publicitate.

Limbajul de modelare VRML este un limbaj case-sensitive. Un astfel de document este un fișier text cu extensia .wrl și trebuie să înceapă cu linia

#VRML v2.0 utf8

Un fișier VRML are următoarea structură:

Group{ children[

Shape{

geometry Box{. . .}

appearance Appearance{. . .}

} Transform{. . .}

. . .

]

}

Un exemplu de fișier VRML este detaliat în continuare, și anume crearea unei scene compusă dintr-o sferă roșie de rază 2,5 centrată în origine:

Shape {

appearance Appearance {

material Material {

diffuseColor 1.0 0.0 0.0

}

}

geometry Sphere {

radius 2.5

}

}

Următoarea imagine[EST05] prezintă un model de scaun de la IKEA. Persoanele care se ocupă cu designul pot utiliza VRML pentru a construi idei și pentru a le prezenta clienților.

Figura Exemplu scenă 3D în VRML

1.1.2 X3D – Extensible 3D

Standardul X3D este un sistem deschis și extensibil pentru descrierea de obiecte și lumi 3D interactive pe Internet, folosind limbajul XML (Extensible Markup Language). Chiar dacă înlocuiește limbajul VRML, vechiul format rămâne în continuare suportat. Noul standard are la bază conceptele de componente și profile. O componentă conține unul sau mai multe noduri din aceeași categorie (ex. noduri de iluminare). În continuare, aceste componente sunt grupate în profile, și anume profilul X3D-1 înglobează componentele de bază pentru geometrie și animație, iar profilul X3D-2 reprezintă VRML97 și suportă întreaga funcționalitate a acestuia. Conținutul X3D este dinamic cu numeroase elemente ca noduri, senzori, scripturi, interpolări, comportamente.

Companiile specializate în soluții grafice 3D vor putea dezvolta componente și profile interoperabile în vederea extinderii funcționalității standardului. Acesta este destinat să fie un format universal de interschimbare pentru grafică 3D și multimedia.

Principalele obiective privind design-ul X3D sunt:

separarea arhitecturii de codarea datelor;

suportsau mai multe noduri din aceeași categorie (ex. noduri de iluminare). În continuare, aceste componente sunt grupate în profile, și anume profilul X3D-1 înglobează componentele de bază pentru geometrie și animație, iar profilul X3D-2 reprezintă VRML97 și suportă întreaga funcționalitate a acestuia. Conținutul X3D este dinamic cu numeroase elemente ca noduri, senzori, scripturi, interpolări, comportamente.

Companiile specializate în soluții grafice 3D vor putea dezvolta componente și profile interoperabile în vederea extinderii funcționalității standardului. Acesta este destinat să fie un format universal de interschimbare pentru grafică 3D și multimedia.

Principalele obiective privind design-ul X3D sunt:

separarea arhitecturii de codarea datelor;

suport pentru un număr mare de formate de codare, printre care XML și VRML;

oferă ca alternativă interfețe aplicații de programare (API) pentru scenele 3D.

Standardul X3D are trei părți, ce sunt descrise succint în continuare:

prima parte reprezintă framework-ul X3D și SAI (Scene Access Interface), ce a fost aprobată ca standardul ISO/IEC 19775. Acest framework definește componentele și profilele standardizate și interfața de acces la sistemul X3D în timpul rulării;

a doua parte este numită codarea X3D ce adoptă standardul ISO/IEC 19776. Această parte conține specificațiile de codare XML și VRML;

a treia parte reprezintă limbajul X3D ce adoptă standardul ISO/IEC 19777. Această ultimă parte conține limbajele de programare JAVA și ECMA Scripting.[TKC]

Figura[WBB12] de mai jos descrie arhitectura unui sistem X3D.

Figura Arhitectura unui sistem X3D

Astfel cuprinde un browser X3D care transformă fișierele X3D într-un arbore de noduri. Manager-ul scenei grafice din browser-ul X3D interpretează scena și geometria din fișierul X3D. Limbajele de programare pentru X3D primesc evenimente SAI de la utilizator și răspund paginii Web. Conținutul unui fișier X3D este un fișier text XML, ce poate fi editat simplu într-un editor de text, precum Notepad, sau de X3D-Edit.

În figura[VPO04] de mai jos, este descris un model conceptual de execuție:

În interfețele grafice utilizator create în X3D întreaga funcționalitate este inclusă în X3D, fiind imposibil de a controla din exterior conținutul. Pentru a efectua schimbări

radicale în aplicație, trebuie modificat fișierul care conține modelul 3D. După înlocuirea fișierului X3D cu noua versiune, scena X3D trebuie reactualizată din browser. Acest stil de organizare corespunde în mare măsură cu interacțiunea de tip client – server pe WEB.

Important de precizat este modalitatea în care X3D se îmbină cu alte limbaje de programare, ce contribuie la dezvoltarea aplicației, aceasta devenind complexă și dinamică. Există cel puțin șase modalităti diferite de a combina X3D, HTML și Java, fiind astfel destul de greu de identificat modul de combinare cerut de standardele HTML, Java, și/sau X3D. Următoarea listă conține o enumerare succintă a tuturor acestor posibilități:

fișier X3D interior unui fișier HTML – aceasta este o parte a HTML utilizând tag-urile HTML <EMBED> sau <OBJECT>, cu toate că HTML nu necesită ca un browser HTML să suporte includerea fișierelor X3D (sau a oricărui alt tip de fișier) în documente HTML.

cod Java interior unui fișier X3D – această soluție este standardizată, utilizând nodul Script, care se referă la cod compilat Java.

applet Java ce comunică cu un browser X3D – aceasta este o extensie cunoscută ca External Authoring Interface (EAI).

clase Java corespunzând nodurilor X3D – o serie de companii au dezvoltat pachete de programe care definesc reprezentările nodurilor X3D în memorie și care pot fi utilizate în orice mod de către programator; acestea pot fi extrem de utile atunci când se implementează browsere sau ustensile X3D, fără însă a fi părți standard, nici pentru X3D și nici pentru Java.

fișier HTML interior unui fișier X3D – utilizarea unui fișier HTML ca hartă de textură pentru a fi afișată într-o lume 3D, poate constitui o extensie interesantă a limbajului X3D.

applet Java interior unui fișier X3D – utilizarea unui applet Java ca hartă a texturii pentru a afișa programul Java într-o lume 3D, ar putea constitui o extensie interesantă. Interacțiunea cu programul Java poate fi suportată prin proiectarea deplasării dispozitivului de indicare în applet.

În figura[WBB12] următoare sunt reprezentate modalități de îmbinare a

limbajului de modelare X3D cu diferite limbaje de programare:

Figura Îmbinarea X3D cu limbaje de programare

Modelele tridimensionale proiectate în X3D introduc noi avantaje pentru interacțiunea utilizatorului cu interfața grafică. De exemplu, controlul volumetric, implementat cu ușurință în X3D, facilitează simularea comportamentului obiectelor în 3D. O multitudine de alte componente pot fi manipulate de către utilizator prin simple operații: click, dragging, rotire, sau acționând asupra obiectelor prin intermediul unui sistem de senzori special creați. Posibilitatea de a insera scripturi în X3D accentuează

interactivitatea interfeței grafice, permițând programatorilor să implementeze meniuri

interactive care îndeplinesc cerințe specifice unor anumite task-uri. Potențialul de a crea interfețe utilizator în 3D și de a organiza informația în a treia dimensiune este enorm.

Pentru a vizualiza conținutul X3D grafic online, în browser-ul curent se instalează un plug-in special. Majoritatea dezvoltatorilor de plug-in-uri X3D oferă aceste componente software gratis sau pentru o taxa rezonabilă se pot obține licențe software. Un exemplu de X3D plug-in, extrem de robust, este BitManagement Contact X3D player.

De obicei, plug-inul X3D este echipat cu un set de funcții de bază pentru a facilita navigația utilizatorului în mediul virtual 3D. Deși folositoare, aceste funcții doar ajută

la navigarea în mediul virtual, dar nu permit modificarea componentelor acestui mediu.

Standardul X3D este cel care permite modificarea dinamică și interacțiunea cu obiectele 3D din scenă. Sunt mai multe alternative pentru implementarea simulatoarelor X3D.

Următoarea scenă X3D[WBB09] este încărcată cu ajutorul plug-in-ului Xj3d.

Figura Exemplu scenă 3D în X3D

Stadiul actual al standardului X3D

În perioada 15-17 iunie 2009 a avut loc cel de-al 14-lea simpozion Web3D în Darmstadt, Germania, unde s-au celebrat zece ani de inovare și interoperabilitate în cadrul standardului X3D.[ HPG]

Standardul X3D reprezintă o tehnologie certificată ISO, disponibilă pentru grafice 3D interactive în World Wide Web. Folosirea acestui standard a devenit din ce în ce mai întâlnită de-a lungul timpului, oferind aplicații durabile în domenii ca industrie, știință, medicină, cultură, divertisment și educație. Ca dovadă a durabilității aplicațiilor este faptul că multe aplicații create acum zece ani încă funcționează și sunt utilizate. Un avantaj fundamental în cadrul sistemelor X3D este faptul că acestea protejează conținutul și oferă suport pentru dezvoltarea de proiecte, a căror durată de viață depășește 50 de ani. X3D, fiind urmașul direct al standardului VRML, există modele VRML, vechi de 10 ani, ce rulează pe cele mai noi aplicații X3D.

Multe limbaje de programare s-au folosit predominant, iar după o perioadă au fost considerate învechite și ca urmare s-a diminuat considerabil utilizarea lor. Însă X3D rămâne în continuare cel mai folosit standard pentru implementarea de sisteme 3D, fiind prezent internațional și în cadrul multor domenii.

Se menționează câteva dintre proiectele actuale, în care s-au adoptat soluții X3D:

Experiența CAVE Immersive cu o reducere de până la 75% a costului și a testării online

Grupul Lego a sporit comerțul cu metaio

Coloseum din Roma antică – O experiență istorică uimitoare

Coperion 3D – O fabrică virtuală pe masă.[HPG]

Obiective generale

Aplicația își propune să realizeze o scenă 3D, unde vizitatorii conectați pot să

interacționeze și pot să vizualizeze în timp real mișcările efectuate de ceilalți participanți.

Pentru implementarea cu succes a aplicației, se propune realizarea mai multor elemente care se vor îmbina și vor coresponda între ele pentru transmiterea și primirea de informații. Elementele ce se propun a fi realizate sunt:

scena 3D în care se vor desfășura evenimentele;

partea de server unde vor fi interpretate datele primite de la utilizator;

o structură bine definită pentru ca fiecare cerere a clientului să fie interpretată separat, modular;

o tabelă pentru stocarea de informații a utilizatorilor;

conexiunea server-client ce se va realiza prin protocolul TCP/IP;

partea de client ce va cuprinde dinamica aplicației;

applet pentru autentificare;

partea de HTML unde va fi integrat applet-ul.

Pentru îndeplinirea acestor obiective s-a optat pentru limbaje de programare și

standarde corespunzătoare, ce oferă facilități în realizarea aplicației. Alegerea acestora s-a făcut pe baza mai multor criterii. Câteva dintre aceste considerente s-au enumerat mai jos:

experiența acumulată în utilizarea lor;

gama de servicii oferite, potrivite pentru cerințele aplicației;

existența unui număr mare de tutoriale și informații utile pe Internet;

După o analiză amănunțită a cerințelor aplicației, uneltele alese pentru

implementare sunt:

standardul X3D;

limbajul de programare orientat pe obiecte, Java;

HTML;

SQL;

plug-in-ul Xj3D;

mediul de dezvoltare pentru X3D este X3D-Edit;

mediul de dezvoltare pentru Java este Eclipse.

Capitolul 2 Tehnologii utilizate

2.1 Limbaje de programare, marcare și metalimbaje folosite în implementarea aplicației

În dezvoltarea aplicației s-au îmbinat diferite limbaje, pentru a implementa partea de client și partea de server. Acest lucru a fost posibil datorită flexibilității limbajelor folosite, dar și a caracteristicilor mediilor de dezvoltare alese..

2.1.1 JAVA

Limbajul JAVA oferă un foarte bun suport pentru realizarea de aplicații complexe

pentru Web, fiind de multe ori preferat pentru ușurința dezvoltării, întreținerii și actualizării aplicațiilor. Avantaje importante sunt:

independența lui față de platformă;

mulțimea de unelte gratuite pentru dezvoltare;

reutilizarea facilă a codului;

documentații disponibile pe Internet.[TAO05]

Orice aplicație implementată în Java poate rula pe orice calculator sau dispozitiv

digital. Acest lucru este crucial pentru aplicații World Wide Web. Este asemenea unui mecanism de forma calculator în calculator. Acesta este considerat o mașină virtuală, o parte din software, ce permite simularea unui calculator Java standardizat. Mașina virtuală execută aplicații Java prin interpretarea comenzilor una câte una.

Java este considerat un limbaj de programare ce joacă un rol important în dezvoltarea de aplicații Web, prin folosirea unor protocoale standardizate.

Java a fost realizat pentru a fi ușor de folosit, astfel oferă facilități de editare, compilare și debug. Un motiv pentru care Java este mai simplu de folosit în comparație cu C++, este acela că Java folosește alocarea automată a memoriei și colectarea rezidurilor, pe când C++ solicită programatorului să implementeze aceste operații.

Java este orientat pe obiecte și acest lucru implică aplicații modulare și cod reutilizabil. Deasemenea în dezvoltarea acestui limbaj de programare s-a pus accentul pe securitate, caracteristică vitală pentru orice tip de aplicație.

Însă trebuie luate în considerare și dezavantajele pe care acest limbaj le prezintă din punct de vedere al:

performanței – semnificativ mai lent;

aspect – când se utilizează forma default pentru aplicații GUI cu toolkit-ul Swing.

2.1.2 X3D – XML

X3D utilizează Extensible Markup Language (XML) pentru a descrie geometria și comportamentul VRML. Acest limbaj este bine cunoscut ca unul puternic reprezentativ pentru formatul de interschimbare 3D, ce poate fi suportat de un număr mare de structuri.

Specificațiile X3D reprezintă un teritoriu interactiv de explorat, exprimând geometria și comportamentul VRML utilizând setul de tag-uri oferit de XML, acesta fiind compatibil cu lumea Web. Scena grafică, noduri și câmpuri corespund cu documentul, elementele și atributele din limbajul XML.

Există numeroase beneficii pentru XML:

metalimbaje personalizate pentru structurarea de date;

ușor de citit și înțeles atât de către oameni, cât și de către sistemele de operare;

validează constrângerile de date;

licență gratuită;

independent din punct de vedere al platformei;

foarte bine suportat.

Deși a fost destul de controversată decizia de a furniza această variantă XML,

există câteva motive solide pentru punerea ei în aplicare:

XML este necesar pentru a comunica cu Web-ul;

este nevoie de a încorpora noi tehnologii grafice standardizate;

este necesar ca fișierele VRML să ruleze la fel în cadrul tipurilor de browser;

este vital apariția unui standard care nu evoluează numai o data la cinci ani.[WBB01]

Un exemplu de cod XML pentru un grafic simplu X3D arată în felul următor:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN"

"http://www.web3d.org/specifications/x3d-3.0.dtd">

<X3D profile="IMMERSIVE"

xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"

xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.0.xsd">

<head>

<meta name='filename' content='RedSphereBlueBox.x3d'/>

</head>

<Scene>

<Transform>

<NavigationInfo headlight='false'

avatarSize='0.25 1.6 0.75' type='EXAMINE'/>

<DirectionalLight/>

<Transform translation='3.0 0.0 1.0'>

<Shape>

<Sphere radius='2.3'/>

<Appearance>

<Material diffuseColor='1.0 0.0 0.0'/>

</Appearance>

</Shape>

</Transform>

<Transform translation='-2.4 0.2 1.0' rotation='0.0 0.707 0.707 0.9'>

<Shape>

<Box/>

<Appearance>

<Material diffuseColor='0.0 0.0 1.0'/>

</Appearance>

</Shape>

</Transform>

</Transform>

</Scene>

</X3D>

Structura unui fișier X3D este următoarea:

header-ul fișierului (XML, ClassicVRML, Compressed Binary);

declarația header pentru X3D;

declarația pentru profil;

declarațiile pentru componente (opțional);

declarațiile meta (opțional) ;

nodul rădăcină X3D;

nodurile copii a scenei grafice X3D.

Astfel sintaxa arată în felul următor:

#X3D V3.2 utf8

PROFILE Immersive

# No HEAD statement is provided in ClassicVRML Encoding

COMPONENT DIS:1

COMPONENT Geospatial:1

COMPONENT H-Anim:1

COMPONENT NURBS:4

''filename'' ''HeaderProfileComponentMetaExample.x3d''

# Scene graph nodes are added here[BDK07]

Interpretarea codului de mai sus este reprezentat în următoarea imagine:

Figura Scenă X3D

În următoarea figură este detaliată legătura cu XML:

Figura Îmbinarea X3D cu XML

2.1.3 HTML

HyperTextMarkup Language este un limbaj de marcare, pe care l-am utilizat la

crearea paginii web afișată în browser.

Într-un document HTML sunt precizate următoarele :

versiunea HTML a documentului;

zona head cu etichetele <head> </head>;

zona body cu etichetele <body> </body> sau <frameset> </frameset>.[WBB02]

Toate paginile HTML încep și se termină cu etichetele <html> și </html>.

HTML nu este un limbaj de programare, ci reprezintă un limbaj de marcare, fiind

un set de etichete de marcare, folosite pentru a descrie pagini Web.

Un exemplu[WBB10] de document HTML în care este integrat un fișier x3d este

detaliat în continuare:

<applet code="org.jdesktop.applet.util.JNLPAppletLauncher"

width=600

height=400

archive="http://download.java.net/media/applet-launcher/applet-launcher.jar,

http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jar,

http://download.java.net/media/gluegen/webstart/gluegen-rt.jar,

http://download.java.net/media/joal/webstart/joal.jar,

http://www.xj3d.org/applet_test/uri.jar,

http://www.xj3d.org/applet_test/vecmath.jar,

http://www.xj3d.org/applet_test/j3d-org-all_0.9.0.jar,

http://www.xj3d.org/applet_test/applet-tutorial_1.0.0.jar,

http://www.xj3d.org/applet_test/xj3d-interactive-applet-av3d_2.0.0.jar,

http://www.xj3d.org/applet_test/xj3d-sai_2.0.0.jar,

http://www.xj3d.org/applet_test/xj3d-external-sai_2.0.0.jar,

http://www.xj3d.org/applet_test/js.jar,

http://www.xj3d.org/applet_test/httpclient.jar,

http://www.xj3d.org/applet_test/aviatrix3d-all_2.0.0.jar,

http://www.xj3d.org/applet_test/xj3d-script-base_2.0.0.jar">

<param name="codebase_lookup" value="false"/>

<param name="subapplet.classname" value="Xj3DAppletTutorial"/>

<param name="subapplet.displayname" value="Xj3D Demo Applet"/>

<param name="subapplet.image" value="http://www.xj3d.org/applet_test/appletTestLoadImage.JPG"/>

<param name="noddraw.check" value="true"/>

<param name="progressbar" value="true"/>

<param name="jnlpNumExtensions" value="2"/>

<param name="jnlpExtension1"

value="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp"/>

<param name="jnlpExtension2"

value="http://download.java.net/media/joal/webstart/joal.jnlp"/>

<param name="modelURL" value="http://www.xj3d.org/applet_test/moving_box.x3dv"/>

</applet>

În cadrul acestui fișier HTML apar pachete jar, necesare funcționării acestei scene

într-un browser. Acestea trebuie semnate pentru a putea fi încărcate în browser. Acest procedeu va fi detaliat într-un capitol separat, datorită importanței lui.

Pentru implementare s-a utilizat un simplu editor text, și anume Notepad.

2.1.4 SQL

SQL (Structured Query Language – Limbaj structurat de Interogare) reprezintă un

limbaj de programare specific lucrului cu bazele de date. Deși standardizat ANSI-ISO există numeroase versiuni ale limbajului. Este foarte popular utilizat pentru diferite operații de către Sistemele de Gestiune a Bazelor de Date relaționale, și anume crearea, modificarea, regăsirea și manipularea datelor.[ WBB03]

Se menționează faptul că SQL permite atât accesul la conținutul bazelor de date, cât și la structura acestora.

S-a introdus în proiectul de față o bază de date, pentru a reține cu ușurință toți utilizatorii înregistrați, dar și în vederea extinderii pe viitor a aplicației.

Pentru a realiza conexiunea la baza de date s-a utilizat pachetul mysql-connector-java-5.1.5-bin.jar. S-a aplicat tehnologia JDBC, aceasta fiind un API ce realizează conexiunea cu un număr mare de baze de date SQL și oferă acces și la alte surse de date, precum forma tabelară.

Se poate spune că JDBC abstractizează conectarea la baza de date pentru aplicațiile Java. Există patru modalități[WBB10] de conectare a unei aplicații la un server de baza de date prin intermediul unui driver:

punte JDBC-ODBC. Această API furnizează legături pentru limbajele C si Cobol către baze de date. Puntea translatează apelurile JDBC în apeluri ODBC și le transmite către ODBC prin intermediul librăriilor ODBC;

parte Java și parte driver natural. Este folosită o combinație între implementarea JAVA și specificațiile furnizorilor, native;

server intermediar de acces la baza de date. O aplicație server intermediază între apelurile JDBC și un alt driver;

driver Java pur. Aceste drivere convertesc apelurile JDBC în apeluri directe către baza de date, folosind protocolul de rețea specific furnizorului de baza de date. Se face astfel o conexiune directă la baza de date printr-un socket.

2.2 Medii de dezvoltare

2.2.1 X3D-Edit

X3D-Edit reprezintă un editor de fișiere grafice pentru Extensible 3D (X3D), ce face posibilă editarea fără erori, crearea și validarea de fișiere grafice pentru scene X3D sau VRML. Furnizează deasemenea tooltip-uri pentru atribute și noduri, ceea ce simplifică foarte mult crearea de astfel de fișiere, atât pentru începători cât și pentru avansați în acest domeniu.

Pentru a utiliza X3D-Edit trebuie instalat o dată cu acesta și Xeena. Instrumentul

de construire Xeena de la IBM este conceput în Java și folosește fișierele de configurare XML produse de designer pentru a crea editoare personalizate bazate pe arbori pentru limbaje arbitrare XML. Aceasta este o abordare interesantă ce a facilitat dezvoltarea și testarea codului XML din X3D, ce corespunde cu funcționalitățile codului VRML. Datorită implementării în Java, acest instrument Xeena este independent de platforma utilizată, având rezultate pozitive sub sistemele de operare Windows, Macintosh și Linux.

Caracteristici ale instrumentului de creare disponibile prin configurația Xeena sunt numeroase. Interfața cu utilizatorul este considerată reprezentativă și ușor de înțeles. Acest tool crează scene grafice bine închegate, iar noi noduri pot fi introduse doar în locurile permise de limbaj.

În timpul modificării unui arbore din scena grafică, autorii pot cu ușurință transforma scena X3D în cod VRML și să lanseze un plug-in în browser pentru a vizualiza rezultatele.

Printre caracteristicile dezvoltate se numără capacitatea de a identifica profile, fiecare corespunzând unei palete comune de noduri diferite. Aceasta permite ca Profile din browser să includă Interchange (conținut lightweight), Interactive (adăugarea de capacități pentru tastatura, mouse), Immersive (în mare echivalent cu scena grafică) și Full (toate nodurile)[BDK07]. Extensiile permit autorilor să indice că scena include nivele intermediare de capacitate a nodurilor. Specificarea de profile și componente în header-ul scenei permite extensia eficace în browsere 3D, atât pentru conținutul curent, cât și pentru caracteristici viitoare.

Figura Tipuri de profile în X3D

Acest instrument de editare furnizează elemente fundamentale în dezvoltarea de scene grafice și cel mai important simplifică implementarea acestora. Atât pentru cei care au acumulat experiență în lucrul cu X3D, cât și pentru începători, este ușor și ergonomic acumularea principiilor pe care X3D le are la bază.[BRU00]

Un exemplu, pe care fiecare programator îl parcurge la primul contact cu un limbaj nou de programare, este „Hello world!”. Mai jos apare fereastra de X3D-Edit și rezultatul implementării programului.

Figura Editor X3D-Edit

Figura Rezultatul rulării unui fișier X3D

2.2.2 Eclipse IDE

Eclipse este un mediu de dezvoltare integrat IDE, deschis și extensibil. Acesta

este foarte răspândit și cunoscut, ușor de utilizat și util pentru crearea unui cod de calitate. Am ales acest mediu de dezvoltare pentru că oferă numeroase unelte pentru dezvoltarea aplicațiilor Java, precum debug, refractor, actualizarea codului, listă de task-uri. Este o practică generalizată ca părțile arhitecturale distincte ale aplicației, sursele și clasele compilate, să fie distribuite în pachete Java distincte pentru o mai bună organizare.

Prin adăugarea pachetelor necesare limbajului X3D, am realizat cu ușurință o îmbinare a celor doua limbaje, Java și X3D.

Figura Captură Eclipse

2.3 Browser X3D

Pentru dezvoltarea de browsere X3D și interpretarea conținutului X3D s-au dezvoltat numeroase proiecte open source, dar și comerciale. Dintre acestea, unele predomină în cadrul aplicațiilor, aducându-se în mod continuu îmbunătățiri și caracteristici noi.

Unul dintre cele mai folosite este proiectul Xj3D. Browser-ul Xj3D este dezvoltat în limbajul de programare orientat pe obiecte Java. Acesta este open source și suportă aproape toate profilele X3D. Important de menționat este faptul că Xj3D are implementate noduri suplimentare, noduri senzori, altele decât cele furnizate de specificațiile X3D. Un exemplu de nod este X3DHIDDeviceSensorNode ce suportă integrarea cu dispozitive de intrare HID standardizate. Deasemenea, o facilitate oferită de proiectul Xj3D constă în faptul că suportă Scene Authoring Interface (SAI). Acesta permite ca o aplicație externă să modifice și să controleze browser-ul și implicit scena X3D în timpul rulării.

Un alt browser X3D open source este FreeWRL. Acesta este disponibil sub formă binară pentru diferite platforme, inclusiv Windows și Mac OS. Inițial a fost conceput pentru a afișa conținutul fișierelor VRML, iar ulterior o dată cu dezvoltarea și extinderea standardului a fost extins și pentru X3D. Acest browser, în comparație cu Xj3D, nu are alte noduri adiționale pe lângă cele din profilul standard al X3D. Însă, trebuie menționat faptul că oferă flexibilitate procedurală prin External Authoring Interface (EAI), dar nu suportă SAI. Prin EAI , un server ce rulează codul poate crea, modifica și distruge noduri din scena grafică X3D, afișată în browser.

Cele mai folosite produse comerciale sunt Flux, BS Contact și Octaga.[AGH08]

În următoarele imagini sunt descrise scene 3D, interpretate cu diferite plugin-uri

pentru un browser Web. S-a exemplificat pentru cele mai cunoscute și utilizate în acest moment.

Imagine vizualizată cu plug-in BS Contact 7.2[WBB04]:

Figura Imagine încărcată cu BS Contact 7.2

Imagine vizualizată cu plug-in Vivaty Player[WBB05]:

Figura Imagine încărcată cu Vivaty Player

Imagine vizualizată cu plug-in FreeWRL[WBB06]:

Figura Imagine încărcată cu FreeWRL

Imagine vizualizată cu plug-in InstantReality[WBB07]:

Figura Imagine încărcată cu InstantReality

Imagine vizualizată cu plug-in Octaga[WBB08]:

Figura Imagine încărcată cu Octaga

Imagine vizualizată cu plug-in Xj3D[WBB09]:

Figura Imagine încărcată cu Xj3D

În dezvoltarea aplicației, pentru vizualizarea 3D a scenei s-au folosit Xj3D,

InstantReality și BS Contact.

Capitolul 3 Descrierea aplicației

3.1 Noțiuni teoretice

În acest capitol, respectiv în subcapitolele componente, s-au descris caracteristici

distincte și importante ale aplicației. Fiecare dintre aspectele prezentate reprezintă elemente fundamentale ale aplicației și soluții alese în rezolvarea unor probleme apărute pe parcursul dezvoltării aplicației.

3.1.1 Elemente introductive X3D

X3D este organizat ca un set de componente, unde fiecare componentă reprezintă

un set de funcționalități consistând din variate obiecte sau servicii X3D. Design-ul X3D este modular, permițând nivele variate de servicii să fie furnizate și astfel oferind o mai mare flexibilitate în dezvoltarea graficelor 3D.

Profilele X3D sunt constituite din componente și oferă nivele de funcționalitate, pe care autorii le pot folosi pentru a crea lumi complexe X3D.[GCV]

În structura unui fișier X3D apar noduri pentru fiecare dintre componentele

Shape, Appearance și Material.

Nodurile geometrice sunt obiectele care se desenează efectiv, când o scena X3D este interpretată. Acestea sunt formate din poligoane, cel mai adesea triunghiuri, dar pot conține și linii, puncte, figuri 2D.

Un nod Shape unește un nod geometric cu un nod Appearance. Acesta din urmă, definește culoarea, proprietățile materialului, textura imaginii ce urmează a fi aplicată. Materialul adaugă efecte speciale unei culori, cum este transparența, strălucirea, luminozitatea. Texturile sunt imagini 2D ce se înfășoară în jurul unei geometrii, furnizând capabilități speciale de interpretare.

Fiecare nod Shape este localizat în sistemul curent de coordonate a scenei grafice, având ca părinte noduri Transform și grupuri.

Primitivele utilizate în X3D sunt simple elemente geometrice. Fiecare nod Shape

asociază un singur nod geometric (Cub, Con, Cilindru, Sferă, Text) la un nod Appearance corespunzător. Nodurile Shape, Appearance și Material pot fi reutilizate eficient prin aplicarea unui nume DEF la prima apariție și ulterior se utilizează USE cu același nume. Nodurile Appearance reprezintă deasemenea și o cutie în care colectează noduri Material ce definesc noduri precum culoarea, textura, imaginea și altele care influențează imaginea unei geometrii asociate.

Nodul Shape este fundamental în scena X3D și este inclus în toate profilele, excepție făcând Core. Aceste noduri pot fi plasate pe nivelul cel mai de sus al scenei sau în orice grup de noduri.

Nodurile Shape X3D sunt:

cub[BDK07]

Figura Nodul cub

con[BDK07]

Figura Nodul con

cilindru[BDK07]

Figura Nodul cilindru

sferă[BDK07]

Figura Nodul sferă

text[BDK07]

Figura Nodul text

Nodurile X3D se grupează pentru a organiza obiectele într-o scenă X3D, aceste noduri fiind: Inline, Group, StaticGroup, Switch, Transform Anchor, Billboard, Collision, Viewing și Navigation.

Se menționează instanțele prototip, ce crează un nod nou în timpul rulării scenei grafice X3D. Astfel autorii pot crea elemente reutilizabile ale scenei X3D.[BDK07]

Deasemenea sunt importante elementele:

comportament se definește ca reprezentând modificarea unui câmp conținut de un nod în scena grafică;

nodurile de animație, de interacțiune cu utilizatorul și actualizările rețelei pot produce valori de actualizare;

declarații ROUTE conectează ieșirea unui nod cu intrarea unui câmp a altui nod;

event se definește ca valoarea transmisă de ROUTE, de la un câmp la altul;

astfel valorile nodurilor din scena grafică se pot modifica pe parcurs.[BDK07]

X3D este un limbaj puternic tipizat, și anume fiecare câmp din fiecare nod

(fiecare atribut XML) are un tip de date strict definit. Aceste tipuri sunt fie o singură valoare sau valori multiple (de ex. SFFloat, SFRotation, SFVec3f) – SF = Single Field, MF = Multiple Field.

3.1.2 Specificații ISO/IEC 19777 pentru îmbinarea limbajului JAVA cu X3D

Aceste specificații furnizează un set clase și interfețe de bază independente implementate, ce reprezintă posibile interacțiuni cu scena X3D prin intermediul SAI. Dependențe de implementare specifice pentru browser rămân ascunse utilizatorului. Clasele declarate abstracte trebuie derivate de către implementarile specifice ale browser-ului.[WBB12]

Următoarele scenarii sunt posibile când se crează o referință pentru un browser X3D:

un applet Java cu un plug-in X3D într-un browser web;

o aplicație server care comunică cu un browser pe o mașină separată;

o componentă ca aplicație Java independentă. [WBB12]

În aplicație s-a optat pentru prima variantă, menționată mai sus. S-a utilizat plug-

in Xj3D și serviciile oferite de acesta.

Se prezintă în continuare metode[WBB12] utilizate în aplicație, prin care s-a creat, accesat și modificat scena X3D.

Pachete cu extensia jar, specifice X3D și plug-in-ului Xj3D, folosite în cadrul aplicației sunt evidențiate în tabelul de mai jos:

3.1.3 Applet cu semnătură

În implementarea aplicației s-a optat pentru utilizarea unui applet, ce va rula

într-un browser. Pentru ca acesta să ruleze într-un browser trebuie să fie integrat în cod HTML. Sintaxa[WBB14] respectată este următoarea:

<applet
    code=class-filename
    width=pixels
    height=pixels
    archive=jar-file
    name=instance-name
    codebase=url
    align=alignment
    vspace=pixels
    hspace=pixels
    MAYSCRIPT
    >
  <param name=parameter1 value=value1>
  <param name=parameter2 value=value2>
  . . .
  alternateHTML
</applet>

Mașina virtuală Java rulează o aplicație applet sub un alt regim de securitate decât cel sub care rulează aplicațiile independente. Acestea sunt considerate implicit „de încredere”. Cei care au stabilit specificațiile au presupus că un utilizator poate să ruleze aplicații ce există pe propria mașina virtuală. Însă în domeniul aplicațiilor applet, nu se cunosc toate datele până în momentul în care acest applet este descărcat și afișat. Astfel applet-ul se consideră că nu este „de încredere”. Aceasta este o parte a arhitecturii de securitate pe care un browser le încarcă pentru a proteja resursele de aplicații applet greșite.[WBB13]

Soluția [WBB13] este de a crea/obține un certificat digital și cu ajutorul acestuia se semnează applet-ul. În cazul în care applet-ul nu este semnat apare o eroare de forma:

java.security.AccessControlException: access denied (java.net.SocketPermission www.google.com connect,resolve). Astfel când un browser descarcă o pagină ce conține un applet este afișat un certificat într-o fereastră în care apar detalii despre acesta: cine l-a creat, cine l-a emis. Acest certificat conține informații de identificare ale celui care l-a creat. Autoritatea certificatului poate să aibe propriul certificat, generat de o entitate cu autoritate mai mare, verificându-i informațiile de acreditare. Astfel poate să apară pe mai multe nivele, formând “chain of trust”.[ WBB13]

Pașii [WBB13] care trebuie parcurși pentru a semna un applet sunt:

crearea unui pachet jar

applet-ul trebuie împachetat într-un fișier de tip jar, la care i se atașează un certificat;

în cadrul codului HTML, atributul archive trebuie să indice către fișierul jar;

comanda pentru crearea unui fișier jar este:

jar cf jar-file input-file(s)

crearea unei chei publice/private

comanda utilizată este:

keytool –genkey

Figura Comanda keytool -genkey

în pașii următori se vor solicita mai multe elemente, precum parola, alias, zona de proveniență;

keytool este un utilitar SDK de management pentru chei și certificate;

keytool stochează chei și certificate în keystore, unde sunt protejate de o parolă;

crearea unui certificat pentru cheia creată

comanda utilizată este:

keytool -selfcert

se vor solicita parola și alți parametrii necesari;

astfel certificatul este semnat;

se rulează jarsigner asociat cu certificatul creat

comanda pentru generarea semnăturii pentru fișierul jar este:

jarsigner [ options ] jar-file alias

comanda pentru verificarea semnăturii și a integrității fișierelor

jarsigner –verify [ options ] jar-file

s-a exemplificat prin comenzile utilizate în aplicație

jarsigner -keystore "C:\Documents and Settings\George\workspace\Client\src\myconnkey" -storepass 123456 MyApplet.jar ionela

jarsigner -verify MyApplet.jar

Astfel applet-ul este semnat și la încărcarea lui în browser va apărea o fereastra de forma:

Figura Fereastră de avertizare pentru applet

Dacă se dorește studierea mai multor informații despre certificatul emis, acestea

se găsesc la „More Information” dupa cum urmează:

Figura Opțiune fereastră avertizare applet

Figura Afișarea de informații suplimentare

Se face mențiunea că la fiecare modificare în codul applet-ului, vor trebui repetați

pașii prin care se crează și se semnează fișierele jar. Emiterea unei chei nu trebuie repetată. Din aceste motive, s-a optat pentru crearea unui fișier bat (ce conține comenzile necesare), pentru a ușura implementarea.

Deasemenea toate pachetele jar, specifice X3D și Xj3D, utilizate în derularea aplicației, au fost semnate cu același certificat.

3.1.4 Conexiunea server-client

Pentru conexiunea server-client s-a utilizat protocolul TCP-IP (orientat pe

conexiune). Astfel în partea de client s-a folosit clasa Socket, iar în partea de server ServerSocket.

Se prezintă diagrama stare/tranziție a protocolului TCP. [WBB15] Stările sunt în dreptunghiurile cu colțurile rotunjite, iar tranzițiile sunt reprezentate prin săgețile etichetate.

Figura Diagramă stare/tranziție TCP/IP

În partea de client [IJU00]:

În partea de server [IJU00]:

3.2 Tema propriu-zisă

Aplicația implementată realizează interacțiunea într-o scenă 3D între mai mulți

clienți, ce se conectează la server. Stabilirea conexiunii se bazează pe protocolul TCP/IP.

Partea inovativă în cadrul acestui proiect este faptul că un vizitator conectat îi poate vizualiza pe ceilalți în cadrul scenei 3D. Deasemenea, la un interval de timp bine stabilit, se actualizează scena 3D și astfel vizitatorul poate observa în timp real mișcările efectuate de participanți.

Clienții mențin conexiunea cu server-ul care preia informațiile transmise prin socket, le interpretează și transmite înapoi la client răspunsul.

Acțiunile pe care un client le poate efectua sunt următoarele:

înregistrare (în cazul în care clientul nu are un cont);

autentificare;

ieșire;

deplasare în cadrul scenei 3D.

Coordonatele sale în scena 3D se transmit automat la un interval optim de timp. În

cadrul aplicației s-a pus accentul pe integrarea Java cu X3D, dar pe lângă acestea sunt deasemenea necesare îmbinarea cu HTML și SQL.

Înainte ca scena 3D să fie încărcată de către utilizator în browser, acesta trebuie să completeze datele pentru autentificare. Acestea sunt transmise prin socket la server, unde se face conexiunea cu baza de date, pentru a verifica datele transmise. În baza de date sunt păstrate informațiile minime despre utilizatori. În cazul în care autentificarea are succes (datele sunt corecte), clientul este introdus într-o listă pe server. În această listă sunt stocați utilizatorii care sunt online. Informațiile stocate sunt numele și coordonatele pe care le ocupă în scena 3D. Această listă se actualizează în permanență, pentru a putea urmări mișcările efectuate de clienți.

Astfel, aplicația s-a realizat prin îmbinarea mai multor standarde și protocoale, rezultând armonios un tot unitar.

3.3 Designul aplicației

Aplicația propusă implementează o scenă 3D, în care vizitatorii pot să urmărească

în timp real mișcările efectuate de ceilalți participanți.

Soluționarea dificultăților apărute pe parcursul implementării aplicației s-a bazat pe funcționalitățile oferite de limbajele de programare și standardele utilizate.

În partea de server este implementată logica aplicației. S-a realizat conexiunea server-client prin protocolul TCP/IP. Deasemenea pentru interpretarea cerințelor de la client s-a aplicat pattern-ul TEMPLATE METHOD prin clasa abstractă ConnectionAbstractMethod. În această clasă este dezvoltat șablonul necesar fiecărei cereri, și anume conectarea, citirea datelor, interpretarea lor, scrierea și trimiterea lor la client. Interpretarea datelor se realizează în metoda abstractă operație(ArrayList dateUtilizator), ce ia ca parametru datele primite de la client. Pentru fiecare cerere s-a implementat o clasă separată, în care s-a suprascris această metodă.

La primirea datelor de autentificare, se face conectarea la baza de date MySql și se verifică utilizatorul și parola. Clienții sunt stocați într-o tabelă, pentru a ușura operațiile cu aceștia. Pentru înregistrare se primesc utilizatorul, parola și adresa de e-mail, care se introduc în tabelă prin comenzi SQL. Deasemenea, la autentificare sau înregistrare, utilizatorul este introdus într-o listă statică existentă pe server. În această listă statică este păstrat numele și coordonatele pe care le ocupă vizitatorul în scena 3D.

Cea mai importantă sarcină pe care o are serverul este de a efectua actualizarea. Clientul transmite numele său și coordonatele deținute în scena 3D. După citire acestea se actualizează în lista statică și se transmit coordonatele celorlalți participanți din scena 3D.

În continuare sunt specificate clasele cu atributele și metodele corespunzătoare, folosite pentru implementarea serverului:

În partea de client cea mai importantă caracteristică este îmbinarea Java cu X3D. Utilizând clasele și metodele oferite de standardul ISO-IEC-19777 s-a operat asupra scenei 3D. În clasa ComunicareClient s-a realizat conexiunea cu serverul prin protocolul TCP/IP, folosind clasa SocketFactory și metodele sale.

În browser se încarcă inițial un applet semnat pentru autentificare. Mașina virtuală Java rulează o aplicație applet sub un alt regim de securitate decât cel sub care rulează aplicațiile independente. De aceea applet-ul trebuie semnat. După completarea datelor acestea se transmit prin socket la server. În caz de succes se încarcă scena 3D, unde se pot vizualiza ceilalți vizitatori.

Fereastra de autentificare/înregistrare este ușor de utilizat, fiind bine cunoscută de orice utilizator.

În clasa MyApplet, actualizarea scenei se declanșează la un interval de timp bine stabilit. Astfel se face conectarea la server și se transmit propriile coordonate. Ca răspuns de la server, clientul primește coordonatele celorlalți vizitatori din scenă.

Actualizarea se face cu ajutorul metodelor descrise în standardul ISO-IEC-19777. Coordonatele s-au captat prin interogarea nodului PROXIMITY_SENSOR. Deasemenea se utilizează clase și metode oferite de browser-ul Xj3D. Pachete asociate acestuia s-au atașat pentru buna rulare a aplicației.

Capitolul 4 Scenariu de utilizare

În acest exemplu server-ul s-a rulat din Command Prompt și s-au afișat mesaje

pentru o mai buna supraveghere a informațiilor.

Figura Rularea serverului

La prima încărcare a aplicației în browser va apare o fereastră în care se pot

vizualiza informații despre cel care a creat certificatul necesar pentru încărcarea applet-ului.

Figura Fereastră de avertizare pentru applet

Se poate bifa „Always trust content from this publisher” și astfel nu va mai apărea

la fiecare încărcare.

În imaginea de mai jos se poate vizualiza applet-ul pentru autentificare și consola Java.

Figura Afișarea applet-ului de autentificare în browser

Figura Afișarea applet-ului în browser și date completate

Mai jos se poate observa fereastra de înregistrare:

Figura Afișarea applet-ului de înregistrare în browser

Figura Afișarea applet-ului de înregistrare cu date completate

Încărcarea scenei 3D în browser:

Figura Scenă 3D încărcată în browser

Se poate observa la baza scenei butoane de navigare:

EXAMINE

FLY

PAN

TILT

WALK

HOME

FITWORLD

LOOKAT

NEXTVIEW

PREVIOUSVIEW

Figura Scena 3D încărcată în browser

Figura Vizualizarea scenelor 3D pentru vizitatori diferiți

În server se pot observa coordonatele primite pentru celălalt vizitator din scena

3D.

Figura Date primite de server

Capitolul 5 Concluzii și perspective

Dezvoltarea de aplicații 3D în browser a devenit o alternativă interesantă pentru

interfețe, rezultând astfel interfețe mai realiste și folositoare utilizatorilor.

Astfel VRML și X3D sunt opțiuni viabile pentru descrierea de lumi virtuale pe Internet, dispunând de numeroase tipuri de browser, și facilități pentru realizarea lor, precum îmbinarea cu limbaje de programare Java, C++.

Xj3D a fost realizat pentru a adăuga caracteristici 3D oricărei aplicații. În

aplicația prezentată s-a folosit SAI (Scene Acces Interface), ce furnizează un mediu compatibil pentru a rula și modifica scene X3D.

În dezvoltarea aplicației facilitățile oferite suplimentar de Xj3D au fost utile. Ca parte de cod Java, Xj3D poate fi integrat în pagini web ca și applet.

Datorită faptului că X3D se bazează pe limbajul declarativ XML, acesta este standardizat, independent de platformă, mult mai flexibil și facilitează interacțiunea cu utilizatorul.

Web este supus unor modificări revoluționale în permanență, iar următoarea generație va avea la bază XML și nu HTML. Dacă în prima generație se punea accentul pe aspectul paginilor Web, în faza următoare se va accentua semantica informației pe Web. Acest lucur va fi realizat cu ajutorul XML. Astfel și graficele 2D și 3D vor fi prezentate sub format XML, rezultând faptul că standardul X3D va juca un rol important în vizualizarea informației și crearea de interfețe grafice pentru următoarea generație Web.

Câteva din caracteristicile benefice ale standardului X3D:

grafice Web de înaltă calitate având un control structural și vizual precis;

grafice generate dinamic de date XML;

grafice integrate cu alți membrii din familia XML;

grafice personalizate ușor de alți utilizatori;

grafice ușor de actualizat;

oferă un nivel adițional de detaliu;

se utilizează numeroase limbaje prin îmbinare.

Aplicația implementată poate fi extinsă pe viitor, prin adăugarea de noi opțiuni

pentru vizitatorii scenei. Un exemplu de astfel de opțiune poate fi posibilitatea de a interacționa prin dialog. Astfel, la apariția unui eveniment (de ex. click pe imaginea unui dintre participanți) să se poată trimite un mesaj, prin intermediul server-ului. Sau se pot introduce alte scene pentru a fi încărcate în scena 3D.

În această lucrare s-a pus accentul pe modul în care mai multe limbaje se îmbină cu standardul X3D și pe operațiile necesare pentru rularea acestei scene într-un browser.

Capitolul 6 Bibliografie

[AGH08] Hussein Ahmed, Denis Gracanin, Ayman Abdel-Hamid, A framework for Interaction Interoperability in X3D Mobile Collaborative Virtual Environments, Martie 27-29 2008, Cairo-Egipt

[BDK07] Don Brutzman and Len Daly, Morgan Kaufmann, X3D for Web Authors, Editura Elsevier Science& Technology Books, April 2007

[BRU00] Don Brutzman, X3D-Edit Authoring Tool for Extensible 3D (X3D) Graphics, Naval Postgraduate School Monterey california 93943-5000 USA

[EST05] Eliana Stavrou, 3D Graphics Tehnology: VRML Part I – Introduction, 2005

[GCV]Vladimir Geroimenko, Chaomei Chen, Visualizing Information Using SVG and X3D, Editura Springer

[HPG] http://www.web3d.org/

[IJU00] Ioan Jurca, Programarea rețelelor de calculatoare, Editura De Vest, Timișoara 2000

[TAO05] Ștefan Tanasă, Cristian Olaru, Dezvoltarea aplicațiilor Web folosind Java, Editura Polirom, Iași, 2005

[TKC] J.F. Tsai, J.S. Kouh, C.W. Chen, E-Learning Platform for Teaching Courses of Dynamics and Fluid Mechanics by X3D

[VPO04] Marin Vlada, Mircea Popovici, Realitatea Virtuală (Virtual Reality), tehnologie modernă a informaticii aplicate, Conferința Națională de Învățământ Virtual Ediția a II-a, București, 29-31 octombrie 2004

[WBB01] http://www.xml.com

[WBB02] http://ro.wikipedia.org/wiki/HyperText_Markup_Language

[WBB03] http://ro.wikipedia.org/wiki/SQL

[WBB04] http://www.bitmanagement.de/

[WBB05] http://www.vivaty.com/

[WBB06] http://freewrl.sourceforge.net/examples.html

[WBB07] http://instantreality.org/exhibition/

[WBB08] http://www.octaga.com/

[WBB09] http://www.xj3d.org/

[WBB10] http://www.xj3d.org/tutorials/

[WBB11] http://www.geocities.com/cascutn_cnairda/6.html

[WBB12]http://www.web3d.org/x3d/specifications/ISO-IEC-19777-2-X3DLanguageBindings-Java/Part2/

[WBB13]http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html

[WBB14] http://www.duckware.com/applets/reference.html

[WBB15]http://profs.info.uaic.ro/~busaco/teach/courses/net/docs/winsock/articles/debugging-tcp.html

6 Bibliografie

[AGH08] Hussein Ahmed, Denis Gracanin, Ayman Abdel-Hamid, A framework for Interaction Interoperability in X3D Mobile Collaborative Virtual Environments, Martie 27-29 2008, Cairo-Egipt

[BDK07] Don Brutzman and Len Daly, Morgan Kaufmann, X3D for Web Authors, Editura Elsevier Science& Technology Books, April 2007

[BRU00] Don Brutzman, X3D-Edit Authoring Tool for Extensible 3D (X3D) Graphics, Naval Postgraduate School Monterey california 93943-5000 USA

[EST05] Eliana Stavrou, 3D Graphics Tehnology: VRML Part I – Introduction, 2005

[GCV]Vladimir Geroimenko, Chaomei Chen, Visualizing Information Using SVG and X3D, Editura Springer

[HPG] http://www.web3d.org/

[IJU00] Ioan Jurca, Programarea rețelelor de calculatoare, Editura De Vest, Timișoara 2000

[TAO05] Ștefan Tanasă, Cristian Olaru, Dezvoltarea aplicațiilor Web folosind Java, Editura Polirom, Iași, 2005

[TKC] J.F. Tsai, J.S. Kouh, C.W. Chen, E-Learning Platform for Teaching Courses of Dynamics and Fluid Mechanics by X3D

[VPO04] Marin Vlada, Mircea Popovici, Realitatea Virtuală (Virtual Reality), tehnologie modernă a informaticii aplicate, Conferința Națională de Învățământ Virtual Ediția a II-a, București, 29-31 octombrie 2004

[WBB01] http://www.xml.com

[WBB02] http://ro.wikipedia.org/wiki/HyperText_Markup_Language

[WBB03] http://ro.wikipedia.org/wiki/SQL

[WBB04] http://www.bitmanagement.de/

[WBB05] http://www.vivaty.com/

[WBB06] http://freewrl.sourceforge.net/examples.html

[WBB07] http://instantreality.org/exhibition/

[WBB08] http://www.octaga.com/

[WBB09] http://www.xj3d.org/

[WBB10] http://www.xj3d.org/tutorials/

[WBB11] http://www.geocities.com/cascutn_cnairda/6.html

[WBB12]http://www.web3d.org/x3d/specifications/ISO-IEC-19777-2-X3DLanguageBindings-Java/Part2/

[WBB13]http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html

[WBB14] http://www.duckware.com/applets/reference.html

[WBB15]http://profs.info.uaic.ro/~busaco/teach/courses/net/docs/winsock/articles/debugging-tcp.html

Similar Posts