GOGLIO REMY

ROGNANT LOIC

ESSI3/DESS VIMM

WEATHER MAP

en JAVA et VRML

Le but du projet:

On veut representer les temperatures mesurees sur un reseau de villes comme une surface variable dans le temps. Les temperatures correspondront a l'elevation locale de la surface et seront representees par une couleur fonction de leur valeur. le reseau de villes sera fixe et servira de support a la surface.

On disposera d'un ensemble de mesures pour chaque ville correspondant a differentes dates de mesures.

Notre analyse

En theorie, la surface a modeliser et a faire evoluer au cours du temps est une surface 3D.

Donc, a partir d un semis de donnees 3D, on veut etablir un modele numerique de surface. Pour modeliser cette surface, une solution aurait pu etre de realiser une triangulation de Delaunay en 3D.

Mais pour des raisons pratiques et de cout algorithmique et de structure de donnees ( points en 2,5D et pas 3D), nous nous sommes restreint a utiliser un Delaunay 2D qui utilise les donnees en (x,y) extraites du fichier de donnees 3D. Recherchant une surface et non le volume correspondant a l'enveloppe convexe des donnees la tiangulation en 3D est inutile.

A partir de la carte realisee en 2D, nous avons greffe une altitude z a chaque noeud.

Nous nous sommes efforces de realiser une triangulation 2D de maniere dynamique qui prend en compte aussi bien les points 2D que les points 2,5D ( appeles ainsi a cause de la restriction que l'on s'est impose). Pour les points 2,5D, la triangulation ne prendra en compte que les coordonnes (x,y).

Toutefois, l'ajout d'un point a la surface ( click souris dans l'applet ) ne pourra generer qu'un point 2D qui est un point 2,5D d'altitude nul .

Pour la realisation de ce projet, nous nous sommes attaches a realiser des methodes les plus generiques possibles permettant a partir d un fichier de positions et de mesures de temperatures de construire dynamiquement une triangulation de Delaunay 2D qui sera transfomee en surface 3D par l'ajout de l'elevation en chaque noeud du graphe. Cette surface sera ensuite affichee en 3D en VRML et les altitudes seron mises a jour dynamiquement a l'ecran.

De maniere concrete , au depart on ne possede que le ficher de points et toute la surface est instanciee a l'ouverture en memoire.

On va developper un ensemble de classes permettant de construire la weatherMap.

L'originalite de notre produit reside dans sa double utilisation, soit via une applet, soit via Cosmoworlds.

L'applet:

L'applet ne travaille qu'en 2D. Elle lit le fichier de points et de mesures et affiche la triangulation 2D des points de references des villes.

L'applet propose de visualiser pour la surface

Comme nous l'avons deja dit plus haut, la triangulation est dynamique dans la mesure ou on peut rajouter (point 2D)( click souris ) ou retirer des points (2D et 2,5D) (Meta-click sur le point a enlever). Chaque modification entraine un raffraichissement de la surface qui reagit en temps reel.

L'applet propose aussi, une fois que la surface desiree a ete construite, d'ecrire la surface dans un fichier VRML qui pourra etre visualisee et animee soit par Liquid Reality, soit par CosmoWorlds.

Le fichier VRML avac script JAVA

Notre WeatherMap est une IndexedFacet qui dispose

Les evenements proviennent de l'interaction entre le programme JAVA et le Noeud VRML via des routes definies dans le VRML.Ces evenements nous permettent de mettre a jour les champs de notre IndexedFacet.

A l'initialisation des objets VRML (ouverture du fichier sous liquid reality) la surface sera dynamiquement remplie par les donnees lues dans le fichier weatherMap. Un objet java weatherMap est instancie et rempli (lecture du fichier et calcul de la triangulation).On genere des events out qui vont prendre les informations directement dans l objet java( coordonnees de point , indexes des facettes ... ) et les envoyer dans l objet VRML pour la mise a jour.

La mise a jour de field du noeud VRML se fait de deux manieres :

1) les champs exposes sont prevus pour etres modifies dynamiquement .Pour cela il existe des methodes implicites ( set_nom du champ).

2) les autres champs du noeud ne peuvent etre modifies que s il existe des event in dedie a cette tache.

Dans le cas de l indexedFaceSet, les quatre champs qui nous interressent ( le point, les couleurs, l index de points des facettes et l index des couleurs pour chaque sommet des facettes) sont accessibles via l une ou l'autre des methodes decrites ci-dessus. Ceci nous a permis de partir d'un objet vide que l'on rempli .

La weatherMap est en faite une suite de surfaces correspondant aux mesures a des temps differents . Cette mise a jour est faite via des objets reactifs ( cones et boule) qui questionnent l'objet java weatherMap . Celui-ci retourne les positions mises a jours ainsi que les nouvelles couleurs indexees sur l'altitude du point. Ces positions sont routees via le script dans l objet VRML.

Problemes rencontres

* le security Manager :

Objet de bien des problemes pour de nombreux binomes , cette affreuse chose a bloque toutes tentatives de lecture de classe ou de fichier dans le script VRML.Grace a l'obstination de deux etudiants et de leur valeureux enseignant Mister PETER SANDER ( thanks god it's him!), il on reecrit ce qu'il fallait pour debloquer l'ensemble des foumis besogneuses que nous etions. Apres cette grande victoire sur le cote obscure... nous avons pu rapidement atteindre nos objetifs :

un fichier VRML communiquant via un script java avec des classes java generiques . Classes qui sont d'autre part utilisees aussi dans l'applet decrite ci-dessus.

* Creation de routes VRML : on a prefere creer un noeud vide avec ces routes plutot que de le creer totalement en menoire . En effet , on a des difficultes pour ecrire des routes sur des objet qui ne sont pas encore connus du fichier VRML.

* La bonne comprehension des champs exposes ou non et les differentes manieres de les modifier( decrit ci-dessus).

Conclusion:

Bien qu'on ait eu le meme sujet qu'un autre binome, on a realise un travail bien different du leur. C'est ce qui a rendu le sujet interessant er ouvert a differentes perspectives.

Le seul Bemol serait surement le manque d'ouvrages disponibles de VRML qui a rendu notre travail plus fastidieux et aussi la perte de temps engendre par le probleme lie au security Manager.

Les sources :

fichier.tar.gz