Page d'accueil
3D
VRML
Déplacement
Exemple
Cadeaux
Visiter
VRML

Le VRML (Virtual Reality Modeling Language) a été crée en 1993 par Mark Pesce et Tony Parisi, à une époque où la 3e dimension était peu répandue sur les machines. Ce langage permettait de développer des applications de réalité virtuelle assez rapidement et d’intégrer des éléments Web. Etant assez vieux, il est peu fréquent de trouver des sites qui l’utilisent encore, et peu de nouveau plugins permettent de profiter de l’Internet en 3D, comme le Java3D.

Nous avons choisi le VRML2 (ou VRML97) pour son aspect proche de la programmation HTML (intégration d’applets Java, liens, nœuds…), et sa facilité de conception via 3D Studio Max. Pour pouvoir lire les résultats, il faut installer un plugin spécifique car il n’est pas lisible d’origine. Pour notre projet nous avons choisi Blaxxun Contact, pour son interface intuitive et sa console utile pour le déboguage. C’est aussi le plus récent parmi ceux essayés ce qui permet de mieux tirer profit des technologies actuelles.

Le langage se décompose en nœuds (nodes) qui définissent aussi bien des objets que des capteurs et scripts. Il peut gérer des variables avec son propre format, il est suffisamment rapide pour gérer des algorithmes complexes grâce aux classes java (NB : Blaxxun n’exécute pas les classes externes au WRL – l’extension du VRML). C’est aussi un format modulaire qui permet de mettre a jour les environnements sans chercher dans un fichier extrêmement grand (car une simple forme un peu lissée peut prendre une centaine de lignes…)

Cependant il a quelques limitations et failles qui nous ont gênées. D’abord en ce qui concerne la modélisation, il ne nous a pas été possible d’appliquer des textures sur chaque face, ce qui imposait de doubler les murs et plafonds pour changer de texture.

Ensuite le rendu est parfois aléatoire (voir l’escalier de l’entrée) et des chevauchements apparaissent à longue distance.

Et enfin le plus gênant est la déformation due au champ de la caméra, ce qui rend les salles souvent visiblement petites, et les portes trop petites, et ce malgré les bonnes dimensions.

D’autre part, il était impossible de récupérer directement la position de l’utilisateur, et seul une astuce dénichée au fond du Web nous a permise de contourner ce problème.

Dans notre projet nous utilisons le java, mais il faut savoir que le VRML possède aussi son langage de programmation, le vrmlscript. Celui étant plus simple mais moins rapide, nous avons préféré utiliser le java, qui est assez proche du C++ étudié cette année. Nous aborderons plus en détail ce point dans la partie suivante.

Quelques rappels sur le VRML qui vous permettront de mieux comprendre le fichier virtualensi.wrl commenté qui est la base du projet.

  • Une balise est de la forme :
    OBJET {
         param1 valeur1
         param2 valeur2
         ....
    }
     
  • On définit une parenté à l'aide de :
    Children [
         OBJET1 {....}
         OBJET2 {....}
    ]
     
  • Notez la présence systématique des {} et [], car comme en C il faut délimiter tout bloc, mais par contre il n'y a pas de marque de fin de ligne (la visionneuse gère toute seule)
     
  • # Ceci est un commentaire
     
  • Le mot-clé DEF permet de désigner un objet par un nom, ce qui permet de le réutiliser plus tard avec USE.
     
  • Les types de variables utilisés ici sont (SF désigne une variable et MF désigne un tableau):
    SFInt32/MFInt32         Entier
    SFFloat/MFFloat         Flottant
    SFNode/MFNode           Objet
    SFTime/MFTime           Unité de temps
    SFRotation/MFRotation   Coordonnées de rotation
    SFVect3f/MFVect3f       Vecteur 3D

    Ils peuvent être déclarés comme field (variable globale), eventIn (variable d'entrée, cf ROUTE), eventOut (variable de sortie, cf ROUTE) et dynamiquement (avec new, dans un script java)
     
  • La balise inline permet d'inclure des scènes, ce qui est pratique lorsqu'on a un modèle qui est souvent modifié, cela permet de ne modifier que lui (en l'occurrence il s'agit de l'école)
     
  • La balise ROUTE est très importante pour transférer des variables et traiter des événements. La syntaxe est la suivante :

    ROUTE OBJET1.var1 TO OBJET2.var2


    var1 doit être déclarée en eventOut et var2 en eventIn. Notons que var1 et var2 doivent être du même type, sinon il faut utiliser un script de conversion.
     
  • Pour plus de détails, voir à la page Visiter
     

 

[Page d'accueil] [3D] [VRML] [Déplacement] [Exemple] [Cadeaux] [Visiter]