Journées de la Topographie
du 2 au 4 octobre 2006

Michel FRICKER

REALISATION DUNE INTERFACE DE CONSULTATION DOBJETS 3D PERMETTANT
NOTAMMENT LA  PRISE DE DONNEES METRIQUES AINSI QUUNE LIAISON AVEC
UNE BASE DE DONNEES EXTERNE

 

Société d’accueil : GLOBAL MEDITERANNEA
PFE présenté par : Michel FRICKER
Directeur (directrice) du PFE : Sébastien VAREA 
Correcteurs : M. KOEHL et M. FISCHER

1. Introduction :

Global  Mediterranea  est  très  présent  sur  le  marché  de  la  modélisation  tridimensionnelle,  et  particulièrement dans le domaine de l’archéologie.  Les archéologues utilisent ses modèles 3D dans 3 buts précis : diffuser, conserver et étudier.  La diffusion est assurée grâce à l’emploi du VRML, qui permet de visualiser simplement une scène  3D.
La conservation est faite sous forme de fichier .wrl ayant comme grand avantage une faible taille. 
Enfin,  les  modèles  3D  que  Global  Mediterranea  réalise,  permettent  aux  archéologues  d’examiner  l’objet sous toutes ses coutures. Cependant, l’archéologue est limité à la visualisation de l’objet, s’il  veut avoir des informations complémentaires sur  la taille par exemple il devra mesurer directement  l’objet. On voit ici une forte limitation de l’utilisation des modèles 3D.

Ainsi Global Mediterranea aimerait pouvoir créer une interface de consultation d’objet 3D pour  donner une plus-value à son travail de modélisation.  C’est  sur  ce  sujet  que  nous  sommes  partis.  Ainsi  le  but  est  de  développer  des  outils  qui  nous  permettrons, de façon simple, de déplacer un objet 3D dans une scène, de le faire pivoter, de prendre  des  mesures  aussi  bien  de  distance  que  de  surface,  sur  toute  la  scène  ou  encore  d’ajouter  ou  supprimer des objets 3D depuis une base de données externe.

2. Cadrage :

Global  Mediterranea  propose  ses  modèles  3D  sous  la  forme  de  fichier  VRML  (.wrl),  cependant  le  choix du logiciel à utiliser pour notre interface n‘était pas arrêté. Disposant de tous les modèles sous  différents formats 3D comme les fichiers .3DS, .OBJ, .WRL ou encore .IGS, le choix du programme  s’est fait après une longue période de recherche desoutils nécessaires. Le développement de macros  sous Photoshop n’étant pas aisé, et sachant que l’utilisateur devra également posséder Photoshop, le  choix s’est porté sur un viewer VRML du type Cortona. L’avantage de ce type de viewer, est qu’il est  gratuit, peu coûteux en puissance des machines et que les fichiers .wrl ne prennent pas beaucoup de  place,  quelques  Mega-octets  pour  les  plus  grosses  scènes.  Ainsi  l’utilisateur  pourra  facilement  visualiser les scènes et interagir avec.
Ce choix étant fait, on a pu concevoir les différents modules nécessaires à l’interface.

Ainsi le diagramme FAST de mon projet schématise clairement les solutions trouvées :

Diagramme FAST résumant les solutions techniques.

3. Outils communs aux différents modules :

Le premier outil essentiel, dans la programmation VRML, est l’emploi de ROUTE. Ces routes sont le  chemin  liant  les  événements  entre  eux.  Chaque  objet  de  la  scène  peut  générer  un  ou  plusieurs  événements. Les routes permettent de créer les activations de fonction présentes dans le VRML ou  développées en javascript.
Un autre outil développé est la fabrication de Layer  3D. Un layer 3D est un affichage d’une fenêtre 
VRML  dans  une  fenêtre  VRML  déjà  existante.  Le  layer  3D  se  fond  dans  la  fenêtre  VRML,  ainsi  l’utilisateur ne verra pas de changement entre sa fenêtre principale et le layer 3D. De plus, le layer 3D  reste fixe par rapport à la fenêtre VRML principale. Ainsi, l’utilisateur pourra naviguer dans la scène et  aura  toujours  le  layer  affiché  sur  l’écran.  Ces  Layer  3D  sont  utilisés  pour  l’affichage  des  boutons  permettant l’activation des modules développés.

Enfin, la mise en place des boutons utilisés pour l’activation des modules est réalisée par l’utilisation 
de  fonction  VRML  Touch  Sensor.  Pour  ce  faire,  on  crée  un  Touch  Sensor  associé  au  bouton.  Le  Touch  Sensor  permet  de  créer  un  événement  si   on  clique  sur  le  bouton.  On  relit  alors  cette  événement  grâce  à  une  route  à  l’exécution  d’un  script  Javascript.  Le  script  permettra  d’activer  la  fonction choisie. Pour cela on rend toutes les fonctions inactives au début du fichier VRML (attribut  Enabled désactivé) et l’utilisation du Touch Sensor changera l’attribut Enabled en actif.

4. Module de déplacement :

Il permet de déplacer un objet 3D quelle que soit sa forme, sur une surface 3D. Ainsi nous pouvons 
utiliser  une  salle  ou  un  site  déjà  modélisée  comme  surface  à  décrire  par  l’objet  à  déplacer.  Deux  modes de déplacement de l’objet sont possibles, le premier utilise une vue fixe dans le coin de l’écran  représentant la salle ou le site vue du dessus, en passant dessus avec le pointeur de la souris on  déplace l’objet directement dans la scène. L’objet se déplacera sur la surface de la salle. Ainsi on peut  déplacer l’objet dans toute la scène en gardant une vue de l’intérieur de la scène.  Le second est plus simple, en mode déplacement l’objet se déplacera suivant le pointeur de la souris  tout en restant toujours sur la surface de la salle. Ce mode est bien plus simple mais possède un gros  défaut, on ne peut déplacer l’objet que dans le point de vue où a commencé le déplacement. Ainsi on  devra  passer  d’un  mode  de  navigation  à  un  mode de  mesure  régulièrement,  ce  qui  entraîne  une  lourdeur. C’est pourquoi, le premier mode a été développé.

5. Module de mesure :

Le module de mesure utilise l’affichage de la console disponible dans les viewers VRML. On dispose 
de deux types de mesure : une simple distance et une mesure de surface. Le principe de ce module  est de créer une zone active sur toute la scène. Ainsi à chaque déplacement du pointeur de la souris,  le  viewer  connaît  la  position  du  pointeur  sur  l’objet  3D.  Un  simple  clic  permet  de  sauvegarder  la  position  du  pointeur  et  ainsi  en  cliquant  plusieurs  points,  on  peut  aisément  obtenir  le  calcul  d’une  distance ou d’une surface.

La précision de la mesure dépend de la précision du modèle. Ainsi sur un vase de 20 cm de haut, on  atteint une précision de ± 1,5mm. Sur un bâtiment de 50m de long, la précision est de 2 à 4 cm. Ces  ecarts-types  ont  été  mesurés  en  prenant  une  vingtaine  de  mesures  du  levé  topographique  pour  le bâtiment et autant de mesures sur le vase.

6. Module d’édition :

Le module d’édition permet d’insérer, supprimer ou copier un objet 3D à la scène. Ce module utilise 
une base de données de type Apache serveur et des scripts CGI (Common Gateway Interface) pour  lancer les applications. Le langage de programmation des scripts CGI choisit a été le PERL, car il est  particulièrement adapté à la manipulation des chaînes de caractères.  Ainsi pour l’insertion ou la copie (qui fonctionne de la même manière, une copie n’est qu’une insertion  d’un objet déjà présent dans la scène 3D, il ne reste plus qu’à extraire l’objet de la scène) d’un objet  3D, on va chercher le fichier VRML de l’objet dans la base de données, puis rajouter à cet objet un  script  Javascript  dans  le  fichier  VRML.  Après  cela,  on  concaténera  ce  fichier  VRML  avec  la  scène  existante et l’utilisateur n’aura plus qu’à placer l’objet. Pour la copie, au lieu de chercher l’objet dans la  base de données, on utilisera un script CGI qui permettra d’extraire uniquement l’objet de la scène et  le copier pour utiliser une insertion.
Pour  la suppression  d’un objet  3D,  on a  établi  de  rajouter un  commentaire  dans  le  fichier  VRML  à  chaque objet dans une scène. Ce commentaire indique le début de la définition de l’objet et un autre  commentaire indique sa fin. Il commence par #objet_nom_de_l_objet et finit par #fin_nom_de_l_objet.  Ainsi  lors  de  la  suppression  ou  la  copie  d’un  objet,  on  pourra  rechercher  grâce  à  un  script  CGI,  le  début  de  l’objet  ainsi  que  sa  fin  et  supprimer  ou  copier  du  fichier  VRML  sa  définition.  Ces  commentaires  servent  également  pour  pouvoir  déplacer  ou  pivoter  un  objet  existant.  Connaissant  l’endroit où est défini l’objet, il suffira de rajouter le script javascript dans le VRML grâce à un script  CGI qui concaténera les scripts au fichier VRML.

7. Perspectives :
Les perspectives de ce projet sont encore nombreuses. On a pu établir les bases des fonctionnalités  nécessaires à sa réalisation. Cependant il reste encore des détails à réaliser. On peut comparer cela à  la  construction  d’une  maison.  Les  fondations  qui  représentent  les  recherches  bibliographiques,  permettent d’avoir une bonne assise du projet et de pouvoir planifier son développement. Les briques  de la maison sont représentées par les modules qui ont été réalisés. Ils permettent une grande liberté  dans la réalisation du projet, car chaque fonction développée est réutilisée pour réaliser un module.  Enfin il ne reste plus qu’à finir les petits travaux de notre maison pour lui donner un aspect propre et  parfait.   Ainsi   l’interface   proprement   dite   regroupant   toutes   les   fonctionnalités   reste   encore   à  développer.
Dans  un  futur  proche,  une  confrontation  du  travail  déjà  réalisé,  aux  futurs  utilisateurs  permettra  de  mettre en avant les qualités et faiblesses de l’interface et permettra de continuer et de perfectionner   la  qualité  du  travail  déjà  réalisé.  Ainsi,  on  pourra   adapter  facilement  les  modules  aux  désirs  des  utilisateurs.  Des  ébauches  d’interfaces  pourront  leur  être  proposées  et  comme  cela,  on  pourra  ensemble finir ce projet. De plus, cette confrontation permettra de valider l’ajout indéniable de cette  interface aux modèles 3D que Global Mediterranea réalise et pourra attirer d’autres clients qui sont à  l’heure actuelle hésitant à n’acheter "qu’une modélisation".

©2006 INSA de Strasbourg, spécialité Topographie | Webmaster