LE STANDARD VRML + EXTENSIONS
Ce format a été à l'initiative de plusieurs industriels dont SGI.
Puis il est devenu standardisé et ouvert.
Il y a eu jusqu'à ce jour 2 versions du standard,
mais aussi différents projets d'extensions à VRML (dont l'EAI ).
Historique de VRML
VRML est réellement né à Genève au printemps 1994, à l'occasion de la première conférence mondiale sur le World Wide Web. Il est le produit d'un groupe de réflexion dirigé par Berners-Lee. Le projet a vraiment été lancé quelques mois auparavant par Mark Pesce et Toni Parisi. Ceux-ci avaient en effet déjà développé un "prototype" (Labyrinth) , puis décidèrent de prendre contact avec Berners-Lee afin de valoriser leurs travaux.
Le but est de développer les spécifications de VRML, qui sera un langage indépendant des plates-formes en liaison avec le World Wide Web, destiné à décrire les scènes 3D, et utilisable dans les browsers (visualiseurs), les logiciels de création et autres outils, autorisant ainsi la réalité virtuelle sur le Web.
Devant le potentiel succès de VRML, Mark Pesce se chargea d'organiser ce développement collectif, afin de concrétiser le projet dans les plus courts délais.
Enfin en 1995, la norme VRML 1.0 voit le jour, ainsi les développeurs ont put
commencer à créer des mondes 3D statiques.
Trés vite le besoin de dynamisme s'est fait sentir, certains plugin ont géré
des noeuds d'animation.
Mais deux ans aprés en 1997, la deuxieme version majeure
(la compatibilité déscendante n'est plus assurée) de VRML apparait
sous le nom de VRML97 ou VRML2.
Parmis les nombreuses amélioration on citera :
- Structure hiéarchique plus pratique pour l'application des propriétées
- Gestion des évenements et sensors
- une varité d'effets atmospherique (brouillard, fumée)
- Surfaces irrégulières
- son spacial (stéréo...)
Esprit de VRML
VRML est avant tout un langage de description et non un programme,
(VRML est à la scène 3D ce que HTML est au document texte)
Qui dit format dit interpréteur, en effet le script VRML doit être parsé
pour afficher une scène 3D (une vue 2D de la scène) il faut donc un Navigateur VRML.
Dans un soucis d'uniformisation les navigateurs VRML sont intégrés
dans les navigateurs Web sous forme de Plug'ins :
Programmes externes ayant l'interface dans un programme hôte.
La description géométrique de la scène est stockée sous forme de structure arborescente (graphe acyclique direct).
Propagation des propriétés (i.e. : Une translation d'un groupe Table entraîne la propagation des 4 pieds)
VRML97 a quelques primitives intéressantes permettant de gérer les animations et gestion d'événements utilisateur / comportement des objets a l'aide de scripts.
Mais ce format et les plug'ins ont des limitations :
Par exemple , on ne peut avoir une session de communication entre un client et un serveur.
Exemple de source VRML
#VRML V2.0 utf8
DEF Camera Viewpoint {
orientation 0 1 0 1
position 5 0 2
}
DEF _TR Transform {
translation 0 10 0
rotation 1 0 1 .6
children Shape {
geometry Box { }
appearance Appearance {
texture ImageTexture {
url "http://www.jwz.org/webcollage/collage.jpg"
}
}
}
}
Extensions de VRML
-
DIS-Java-VRML Working Group
-
IEEE DIS : Distributed Interactive Simulation
Infrastructure pour Réalité virtuelle distribuée
But du projet : Implantation du protocole DIS en Java & VRML
Web3D Consorsium / Distribution GPL
- X3D
-
Unification de VRML & XML :
http://www.web3d.org/TaskGroups/x3d/index.html
-
EAI : External Authoring Interface
-
Dialogue entre le browser vrml et un programe externe
EAI : External Authoring Interface
L'interface permet le controle du plugin VRML,
à l'aide d'un langage externe à VRML, soit en java (applet)
ou un simple script (javascript).
Ce contrôle permet entre autre :
- D'accéder aux fonctionalités du browser VRML (ex : créer un nouvel objet)
- D'envoyer des évènements et donc modifier les nœuds
(position ; aspect d'un objet)
- D'avoir un retour sur les caractéristiques d'un objet, d'un évènement
Dans un premier temps, il faut accéder à l'objet Browser.
Ensuite on crée un évement.
Et par cet évenement on modifie les primitives et propriétés.
Source Java : Exemple EAI
import vrml.external.*;
import vrml.external.field.*;
/**
* Exemple d'acces a un noeud VRML par l'EAI
**/
// Reference le navigateur VRML
Browser _browser = (Browser) Browser.getBrowser(this);
// Reference le noeud Vrml nomé par la directive vrml DEF/USE
Node n = (Node) _browser.getNode("_anynodename");
// Evenement
EventInSFVec3f _v3f_trans = null;
_v3f_trans=(EventInSFVec3f) n.getEventIn("set_translation");
float[] v3f_values = {0f , 0f , 0f } ;
// affecte la composante "translation" du noeud vrml "Transform"
for (i=0;i<9;i++) {
v3f_values[0]=i;
_v3f_trans.setValue(v3f_values);
}
RESSOURCES VRML
- Specs
- Repository :
http://www.web3d.org/vrml/vrml.htm
- Faq (comp.lang.vrml) :
http://home.hiwaay.net/~crispen/vrmlworks/faq/index.html
- EAI : External Authoring Interface
-
Specs : http://www.vrml.org/WorkingGroups/vrml-eai/ExternalInterface.html
Faq : http://www.frontiernet.net/~imaging/eaifaq.html
Exemples :
http://tecfa.unige.ch/guides/vrml/examples/eai/navigate/navigate-dyn.html
http://www.cai.com/cosmo/html/faq.htm#java
http://eureka.lucia.it/vrml/tutorial/eai/sgi/index.html
-
Browsers VRML :
-
Blaxxun Contact (Win32) :
http://www.blaxxun.com
-
Cosmoplayer (obsolete, Win32, Irix) :
http://www.cosmosoftware.com
,
http://www.sgi.com/software/cosmo/player.html
-
VRWare (Unix : SGI, Sun Solaris, DecAlpha, HPUX, Linux/ELF )
http://www.iicm.edu/vrwave
- WorldView - Intervista (obsolete, ie, win32)
:
http://www.platinium.com
- Cortona - ParallelGraphics :
(Win32)
http://www.parallelgraphics.com/products/cortona
-
Live3D - Netscape (obsolete) :
http://home.netscape.com/eng/live3d/live3d_overview.html
-
FreeWRL (Linux) :
http://www.crc.ca/FreeWRL/
- libVRML97 (Linux, EAI non fiable)
- Dimension X - Liquid Réality (obsolete, ie)
- Editeurs VRML
- Cosmoworld - SGI
- 3DS Max - Kinetix :
http://www.ktx.com/
- Internet 3D Space Builder - Paragraph
http://www.paragraph.com/
- VRealm Builder - IDS
http://www.ids-net.com/
- Webgraphics Suite - Corel
http://www.corel.com/
- 3D Website builder - Virtus
http://www.virtus.com/