# Virtual Reality Markup Language

Le Virtual Reality Modeling Language (abrégé en VRML) ou Virtual Reality Markup Language est un langage de description d'univers virtuels en 3 dimensions mis au point en 1994. Ce langage interprété est une norme internationale de l'ISO et le CEI (ISO/CEI 14772-2) depuis 1995 et les fichiers VRML ont habituellement pour extension .wrl.
C’est à proprement parler un langage de présentation et non de programmation, puisque comme pour le langage HTML par exemple, un fichier VRML ne contient généralement pas une suite d'instructions mais plutôt les informations permettant au visionneur d'afficher ensuite les éléments (formes, senseurs, lumières, etc).
Le but premier de ce langage est de permettre la représentation d'univers interactifs 3D virtuels. Les fichiers .wrl sont des fichiers texte décrivant les scènes virtuelles à l'aide du langage VRML. Les fichiers .wrl, qui peuvent être stockés localement sur un ordinateur ou téléchargés depuis un serveur web, sont visualisés à l'aide d'un visionneur, qui est soit un plugin ajouté au navigateur web ou encore un logiciel autonome indépendant du navigateur web, qui est installé sur l'ordinateur de l'utilisateur.
Les programmes VRML peuvent décrire des formes simples (points, lignes, polygones) ou complexes (sphères, cubes, cônes, cylindres...), du texte, des images, des animations, des éclairages, des sons, des hyperliens, ainsi que leur agencement dans l'espace, leur texture, leur couleur, leur matériau (en format .bmp).

## Historique

Présenté lors de la World Wide Web Conference de 1994, VRML n'est pas l'œuvre d'un unique programmeur, mais plutôt le résultat de la collaboration de plusieurs professionnels de la 3D, dont entre autres Mark Pesce, Tony Parisi, Gavin Bell (Silicon Graphics) et Paul Strauss. En 1995, un format de Silicon Graphics est créé pour VRML ; l'Open Inventor.
À l'époque, il y avait encore des problèmes de compatibilité entre la 3D et le Web car la taille des fichiers qui atteignait plusieurs mégaoctets était trop volumineuse pour des connexions de 30 Kbps et les téléchargements de fichiers 3D étaient donc trop longues. Le VRML a lui été conçu pour un usage en ligne. Concrètement, le VRML n'a pu servir que pour des applications industrielles et était mal adapté à la communication.
Les applications concernaient essentiellement l'architecture, les modélisations techniques et, plus rarement, certains sites web. Mais dans de tels cas le navigateur, à l'époque, ne suffisait pas. Il fallait aussi un plug-in. Un visualiseur.
Du coup, en août 1996, Silicon Graphics sort une version 2 baptisée VRML.97. Le logiciel que vend Silicon Graphics pour développer avec ce langage s'appelle Cosmo.
Il y a davantage d'options pour les déplacements et les animations 3D. On peut dorénavant insérer des scripts et en plus il y a une meilleure prise en charge des sons (il y a un partenariat entre Sony, Mitra et Silicon Graphics).
Mais là encore, il y a des problèmes : si le débit est correct pour certaines sociétés industrielles pour le téléchargement (ils ont besoin de compresser avec WinZip ou autre...), c'est la mémoire vive de l'ordinateur qui n'est pas suffisante. On ne peut alors pas développer avec ce langage autrement qu'en téléchargeant les fichiers, puis en développant en local, ce qui est un comble pour un langage censé être dédié à l'Internet.
Par ailleurs, des partenariats entre Silicon Graphics et Apple, mais aussi Microsoft ou encore IBM n'aboutissent pas. L'effet est une mauvaise adaptation des scripts par les développeurs de ces sociétés pour le VRML.
Il faudra donc attendre l'abandon du logiciel Cosmo par Silicon Graphics ainsi qu'un nouveau partenariat avec les sociétés Apple, IBM et Paragraph pour aboutir à une nouvelle version binaire et compressée du langage VRML en laissant tomber le mode texte. La vitesse de téléchargement est alors multipliée par 50. Nous sommes alors en 2000 à ce moment-là.

## Exemple de description de forme en langage VRML

Une fois le programme interprété par le visionneur, le monde virtuel s'affiche à l'écran, en 3D; la caméra (c'est-à-dire le point de vue) se positionne à l'endroit prévu de la scène, et l'utilisateur est alors libre de se déplacer dans ce monde (généralement à l'aide du clavier, de la souris ou du trackball) et d'interagir avec les différents objets présents. Les "sensors" de proximité permettent de lancer une action lors du passage à proximité d'un objet, les "sensors" de touché permettent de déclencher, par exemple, avec un clique sur l'objet l'ouverture d'un autre monde virtuel...
En 1996, une nouvelle mouture du langage fut présentée : VRML 2.0 (par la suite rebaptisée VRML97). Parmi les améliorations par rapport à la version 1.0, on peut citer :
* animation des objets: les mondes créés ne sont plus condamnés à demeurer statiques
* interaction avec les objets : chaque objet du monde peut réagir à des signaux, ces signaux pouvant être générés par l'utilisateur (clavier, souris...) ou par d'autres objets du même monde.
* création de scripts d'animation (en JavaScript/ecmascript) inclus aux fichiers .wrl
* gestion des sons en 3D
* extrusions d'objets
* effets de brouillard
* utilisation d'une séquence vidéo en tant que texture d'un objet
* création de prototypes d'objets
En complément des informations de base concernant les différents objets de la scène 3D, le VRML v2 possède un véritable langage de programmation interne appelé VrmlScript, dont la syntaxe est similaire au JavaScript. Il permet notamment de manipuler les objets (nœuds) de la scène VRML (de type SFNode), ou d'autres types de données propres au VRML comme les SFTime, SFColor, ou encore SFRotation. Un script écrit en VrmlScript est exécuté à l'intérieur d'un objet (ou nœud) de type Script, comme ceci :
Ce langage ouvert et accessible à tous, est bien documenté sur le web et est souvent utilisé pour :
* représenter des objets réels numérisés.
* créer des jeux vidéo 2D/3D.
* représenter des objets dans des documentations techniques (la NASA avait par exemple publié un fichier VRML qui permettait d'observer le module Mars Pathfinder dans ses moindres détails)
* des sites Internet de rencontre et de discussion, où chaque visiteur choisit un avatar pour le représenter, avant de s'aventurer dans le monde virtuel à la rencontre des avatars des autres visiteurs.
* des simulations d'intérieurs (pour l'étude de l'agencement et de l'éclairage des pièces)
* des graphiques statistiques en 3D (cartographie, histogrammes 3D...)

## Logiciels exportant en VRML

* 3ds Max
* Abaqus
* ArcGis (ArcScene)
* Archicad
* Architecte 3D de Avanquest/Encore
* Art Of Illusion
* Blender
* CATIA V5
* Cinema 4D
* Cortona3D
* GPure (partiellement)
* Rhinoceros
* SketchUp
* Solid Edge
* TopStation de JSInfo
* GLview Inova
* ZW3D