
Le VRML (Virtual Reality Modeling Langage) est un langage de description de page au même titre que le HTML. Il gère les liens hypertextes comme le HTML mais l'interface graphique 2D du HTML est remplacé par un environnement en 3D appelé "Monde virtuel" dans lequel on évolue. Il permet l'exploration en temps réel et en ligne d'environnements réalistes en 3D. Ces mondes VRML peuvent être constitués de scènes familières, par exemple des boutiques, des villes ou être totalement imaginaires.
Imaginez une page HTML dans laquelle vous pouvez évoluer dans toutes les directions, manipuler des objets familiers pour effectuer une opération de recherche de sites ou de consultation de données en 3 dimensions, exécuter une animation dès que vous cliquez sur un objet ou sur un hyper lien ... bref surfer l'Internet en utilisant la "Réalité Virtuelle".
L'avantage pour l'utilisateur est que la valeur de la Réalité Virtuelle est directement liée à sa puissance en tant qu'outil de visualisation. Ainsi, avec des applications VRML, vous pouvez dans un cadre expérimental comme opérationnel :
| - visualiser les structures et les flux de vos données en 3 dimensions, | |
| - visualiser des inventaires, | |
| - représenter des phases de vos projets sous forme de régions dans un paysage, | |
| - expérimenter un flux de données. |
Quelques temps après, une Mailing List fut créer pour élaborer les spécifications de la première version du VRML. En moins d'une semaine le nombre de collaborateurs dépassa les 1000, et après une période d'initialisation, il fut décidé sous la direction de Mark PESCE (http://www.hyperreal.org/~mpesce), d'élaboré une Draft Version pour la conférence sur le World Wide Web de la fin de l'année 1994. La Liste fut d'accord sur cette décision et on commença à rechercher les technologies adaptable au VRML.
Après quelques délibérations, il fut décidé de choisir le format de fichier Inventor File Format développé par Silicon Graphics Inc. pour supporter la syntaxe du langage, celui-ci contenant un mode de description des mondes 3D (Objets calculés, lumière, texture, effets réalistes ...). Ce format de fichier fut adapté pour le VRML en fonction des spécifications développées par les membres de la Mailing List, puis SGI déclara le format de fichier du VRML comme faisant parti du domaine publique afin d'accélérer le développement des navigateurs VRML.
Le VRML Architecture Group
http://vag.vrml.org/
Le site des 8 experts qui ont organisé le developpement des spécifications du VRML.
Le NewsGroup du VRML
news:comp.lang.vrml
Le journal du VRML
http://www.tcp.ca/gsb/VRML/vrml-news.html
Toutes les infos sur le monde du VRML jour par jour.
The Moving Worlds proposal/working VRML97 specification :
http://www.vrml.org/Specifications/VRML97
http://cosmosoftware.com/developer/moving-worlds/
2 sites sur la présentation complète de la dernière
mouture VRML.
The Moving Worlds proposal/working VRML98 specification :
http://ece.uwaterloo.ca/vrml98
Un site sur la présentation de la prochaine mouture du VRML.

2 - Navigation VRML, de quoi a-t-on besoin ?
Comme le HTML, le VRML a besoin d'un logiciel appelé Navigateur,
pour interpréter son contenu et en calculer le résultat graphique.
Pour cela on trouve sur le Net des plug-in permettant de passer de la navigation
2D HTML à la navigation en 3 dimensions.
Parmi la quantité phénoménal de plug-in VRML existant, voici une présentation des plus utilisés :
CosmoPlayer 2.1 de SGI
(n'est plus téléchargeable depuis http://www.sgi.com/
pour cause d'abandon de la version pour PC)
http://www.altern.org/garstud/vrml/cosmo_win95nt_fr.exe (3.1 Mo)
Le plug-in de Silicon Graphics Inc. est le plus populaire. Il possède la
meilleure qualité d'image et une interface de navigation incluant
des touches de contrôles au clavier très pratique, et une gestion des 2
boutons de la souris qui confère à l'internaute une maniabilité
inégalée.
Blaxxun 4.0
http://virtuel.cplus.fr/visiteurs/blaxxun40.htm (3.9 Mo)
Le plug-in de Blaxxun est le plus abouti et semble etre le seule à tenir la route avec la disparition de la version PC de CosmoPlayer.
Il est notamment conseillé - même obligatoire - pour surfez dans le
"2eme monde de CANAL+" puisqu'il est le seul à gérer
le "Multi-user".
WorldView de Intervista
www.intervista.com
Un moteur VRML un peu désué qui a été longtemps la meilleure solution pour les
accros de Internet Explorer.
Microsoft VRML Add-on
www.microsoft.com/vrml
Le plug-in de Microsoft reste un moteur sobre avec tout de même une image de
qualité et une interface intuitive.
VRML reviews
http://www.tcp.ca/gsb/VRML/vrml-reviews.html
Présentation des plug-in et éditeurs VRML.

3 - Le langage VRML 1.0
Le VRML est un langage de description de mondes virtuels. Les fichiers .WRL sont des
fichiers ASCII (texte) comme le HTML, un simple éditeur de texte permet donc
de réaliser un monde virtuel.
| - Indépendance de plate-forme système, | |
| - Extensibilité, | |
| - Capacité à fonctionner sur des connections à bande passante faible, |
Les Nodes sont arrangés selon une structure hiérarchique ordonnée appelée Scene Graphs. Il faut bien noter que l'ordre de création des objets et de leur propriétés à un effet. Un objet fils peut être affecté par les propriétés de son père si celle-ci sont déclarées avant le fils lui-même.
Un Node a les caractéristiques suivantes :
| - un type : un node peut être un cube, une sphère, une couleur, une position, etc, | |
| - des propriétés qui le différencient d'un autre Node: une taille, couleur, rotation, etc, | |
| - un nom qui permet de définir un type d'objet générique, | |
| - des fils car un Node peut contenir 0 ou plusieurs autres Nodes qui hériteront de ses propriétés. |
#VRML V1.0 ascii
Les mondes VRML sont des espaces en 3 dimensions qui nécessitent des coordonnées en X (axe horizontal),Y (axe vertical) et Z (profondeur). Pour placer les objets dans leur espace virtuel, 3 méthodes dites de transformation sont proposées.
A titre d'indication, les distances son mesurées en mètre et les rotations en radians.
Quatre formes simples sont fournies pour concevoir des objets VRML :
- Le cube qui contient 3 propriétés : largeur, hauteur, profondeur
Cube { width 3 height 2.5 depth -3 }
- La sphère qui contient 1 propriété : rayon
Sphere { radius 6.2 }
- Le cône qui contient 2 propriétés : rayon au sol, hauteur
Cone { bottomRadius 2.5 height 3 }
- Le cylindre qui contient 2 propriétés : rayon, hauteur
Cylinder { radius 1.5 height 6 }
- La position (Translation) en X,Y et Z :
Transform{Translation 5 -2 1.5 }
- La rotation en X,Y,Z avec l'angle à affecter :
Transform { Rotation 0 1 0.8 1.57}
- La taille (Scale) en X,Y,Z :
Transform { scaleFactor 1 1.2 0.75 }
Propriété Material :
Chaque shape possèdent des propriétés qui permettent
de déterminer leur apparence. 6 propriétés de type
Material sont proposées :
- La couleur Diffuse en RVB (Rouge, Vert, Bleu) correspond à la couleur générale de l’objet :
Material { diffuseColor 1 0.8 1}
- La couleur Ambiente en RVB qui affecte la DiffuseColor pour les parties de l’objet qui ne sont pas éclairées :
Material { ambientColor 1 0.8 1}
- La couleur Specular en RVB qui défini la couleur des rayons lumineux réfléchis sur la surface de l’objet :
Material { specularColor 1 0.8 1}
- La couleur Emissive en RVB qui défini la couleur émise par l’objet s’il était luminescent :
Material { emissiveColor 1 0.8 1}
- La propriété Shininess défini le taux de brillance de l’objet (de 0 à 1):
Material { shininess 0.5 }
- La propriété Transparency défini la possibilité ou non de voir à travers l’objet (de 0 à 1):
Material { transparency 0 }
- Separator permet de limiter la portée des transformations et des propriétés
Material { diffuseColor 1 0 0 } #rouge
Separator { Material {diffuseColor 0 1 0 } #vert
Sphere { }
}
Cube { }
Résultat : la Sphere sera en vert alors que le cube gardera la couleur rouge
- L'objet AsciiText qui contient 4 propriétés : chaîne, espacement, justification, largeur
AsciiText { string "La Page du Developpeur" spacing 1
justification LEFT width 0 }
- Lumière ponctuelle défini une source de lumière en un point donné. Elle comprend 4 propriétés : on(TRUE,FALSE), intensité (de 0 à 1), couleur (RVB) et localisation(X, Y, Z) :
PointLight { on TRUE
intensity 1
color 1 0.9 1
location 0 0 -1 }
- Lumière spot produit une lumière de type projecteur (conique). Elle contient 7 propriétés : on, intensité, couleur, localisation, direction, baisse de puissance et netteté
SpotLight { on TRUE
intensity 1
color 1 0.9 1
location 0 2 1
direction 0 0 –1
dropOffRate 0
cutOffAngle 0.59 }
- Lumière directionnelle produit une lumière en rayons parallèles (pas de localisation) qui contient 4 propriétés : on, intensité, couleur et direction :
DirectionalLight { on TRUE
intensity 1
color 1 0.9 1
direction 0 0 -1 }
- Caméra Orthographique produit une vue normal sans déformation qui contient 4 propriétés : position, orientation, distance de focale et hauteur :
OrthographicCamera { position 0 2 5
orientation 5 3 -0.5 1.2
focalDistance 10.8
height 2 }
- Caméra perspective produit une vue grand angle avec déformation des objets se trouvant en périphérie. Elle possèdent 4 propriétés : position, orientation, distance de focale et hauteur d’angle :
PerspectiveCamera { position 0 2 5
orientation 5 3 -0.5 1.2
focalDistance 10.8
heightAngle 0.7 }
- L’objet Texture2 permet d'appliquer une image (GIF, JPEG ...) sur un objet VRML. Ce Node contient 1 propriété : nom de fichier
Texture2 { filename "images/vrml.gif" }
L'Ancre HTTP :
- Ancre Web permet d’affecter un hyperlien internet à un objet VRML.
Ce Node contient 4 propriétés : nom, cadre cible, libellé
et objet affecté
WWWAnchor { name "http://www.webdeveloper.com"
target "frame2"
description "La Page du Developpeur"
Cube { } }
Instance de Node :
- On souhaite parfois réutiliser des objets. Le Node DEF permet de
définir un Objet en le nommant afin de pouvoir le réutiliser
à différent endroits :
Déclaration : DEF nomNode cube { width 5 }
Affichage : USE nomNode