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 juste.... Interminables.
Mais le VRML a bien été conçu pour la toile.
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

 #VRML V2.0 utf8
 Shape {
   appearance Appearance {
     material Material {
       diffuseColor  .8 0 .2
       shininess .7
     }
   }
   geometry Cylinder {
     radius 1
     height 8
     side FALSE
     top TRUE
     bottom FALSE
   }
 }

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 :

 #VRML V2.0 utf8
 Script {
   field SFInt32 unNombre 123456
   field SVec3f  unVecteur 1 3 2
   url "vrmlscript:
     function maFonction() {
       print('Hello world !');
       print('Voici un vecteur : '+unVecteur);
     }
   "
 }

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

Voir aussi
X3D
U3D
O3D
3DML
Metastream
SCOL

Liens externes
  Web3D Consortium
  Specifications du format
 Web-3D : un site explicatif avec de nombreux tutoriaux
 Page du projet Php-Vrml permettant de créer des fichiers vrml à l'aide de php
 Open-source R software pour créer des fichiers vrml
 Annuaire de plus de mille mondes virtuels VRML, ordre alphabétique + screenshots

Langage de programmation
Norme ISO
Format de données numériques
3D
Standard du web