Michel FRICKER |
REALISATION D’UNE INTERFACE DE CONSULTATION D’OBJETS 3D PERMETTANT
NOTAMMENT LA PRISE DE DONNEES METRIQUES AINSI QU’UNE 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".