(retour à Tutoriel JAVA-VRML)

Java et VRML 2 : une introduction


Cette page propose une introduction à la création de mondes virtuels actifs et interactifs. Pour cela, nous proposons quelques pistes et reflexions fondées autour de l'utilisation de VRML 2 et des interfaces internes et externes en Java. Nous mettons aussi a votre disposition des références bibliographiques à consulter (des exemplaires des livres cités se trouvent dans le bureau D334) ainsi que des liens vers des exemples ou plus généralement des sources d'informations hypertextuelles.

Cette page reste evidemment sommaire et reste sujette à des modifications en fonctions de vos besoins et des commentaires que vous nous ferez.


Pour trouver des informations utiles :

  • sur l'intallation de Java, cliquer ici.
  • sur la programmation en Java, cliquer ici.
  • sur l'intallation d'un visualiseur VRML 2, cliquer ici.
  • 1 Rappel sur VRML 2 :

    VRML 2.0 est un langage pour construire et faire evoluer des scènes 3D. La spécification finale de ce langage date d'Aout 1996. Il s'agit donc d'un langage récent. Ce langage utilise des noeuds hierarchiques (NODE) décrivants à la fois une forme et un comportement pour cette forme. Un système d'évenements (clic de la souris, cascade entre évenements) permet de rendre effective les comportements définis pour chaque forme.

    Des exemples simples et de complexité croissante pour mieux comprendre :

  • Exemple de base : une chaise en VRML 2.0.
  • Exemple de avec plus de noeuds : un cycliste en VRML 2.0
  • Exemple utilisant les evenements et l'assemblage de plusieurs fichiers pour composer une scène : un cycliste sur le Paris-Roubaix en VRML 2.0.
  • Pour une présentation plus exhaustive, cliquez ici .

    2 Le NODE script en VRML 2 :

    En VRML 2.0 il existe un noeud qui revet une importance particulière : c'est le noeud Script. Il permet de définir un point de référence à un programme écrit dans un langage différent de VRML 2.0. Des instructions de routage permettent de diriger le flot d'information du fichier VRML 2.0 vers le programme et du programme vers le fichier VRML 2.0. L'intéret est évident : pouvoir bénéficier de la puissance de calcul et de la flexibilité d'un langage de programmation tout en disposant de la facilité mise à disposition par VRML 2.0 pour décrire des scènes 3D.

    Pour une définition formelle du noeud Script, voir ici.

    Comme le notent Lea & al. (1996) :

    For various reasons, the VRML community decided that VRML 2.0 would not require any particular language. This decision was based, in part,on a wish to avoid "language wars" and also on the belief that no one language was capable of answering all the requirements of the VRML community. The drawback of this approach is that there is no guarantee that all browsers support the language you want. This inevitably leads to situations where content written for one browser wont work in another popular browser. Although this may be an inconvenience at first, it was felt by many that, eventually, browsers would converge to support one or more popular languages. Most likely, these languages would be dictated by the content creators. The VRML 2.0 specification provides annexes that explain how to support two popular languages Java and Javascript.

    En pratique, les différents visualiseurs VRML 2.0 supportent les recommandations de la spécification et implémentent correctement le support de Java et de Javascript.

    Pour plus d'informations : un petit article bien fait ou le manuel VRML 2.0 du TECFA.

    Des exemples simples et de complexité croissante pour mieux comprendre :

  • Exemple minimal de scripting (accès aux evenements) : le clic sur une sphère (il faut ouvrir la console Java pour voir le résultat).
  • Exemple classique d'utilisation du routage de valeurs (accès aux champs): allumage d'objets grace aux fonctions logiques offertes par Java.
  • Exemple de modification d'un noeud (accès aux autres noeuds) : déplacement d'une sphère (uniquement avec Sony CP)
  • Exemple d'ajout dynamique de route (API du visualiseur) : affecte plusieurs objets à partir d'un clic. (uniquement avec Sony CP).
  • 3 L'interface externe en VRML 2 :

    A ne pas confondre avec l'utilisation du noeud script (: comme une interface interne au visualiseur VRML avec un langage de programmation), l'utilisation d'une interface externe a pour objectif de founir au fichier VRML l'accès à des ressources externes.

    Ainsi, pour Chris Marrin (voir ici) :

    For communication between a VRML world and its external environment an interface between the two is needed. This interface is called an External Authoring Interface and it defines the set of functions on the VRML browser that the external environment can perform to affect a VRML world.

    Il n'existe pas de spécification de l'interface externe dans les recommandations pour VRML 2.0. Toutefois, une tentative interessante de Silicon Graphics est à remarquer (ici). L'auteur met par ailleurs a disposition un article fort interessant pour illuster les differences avec le scripting (ici). En fait, lorsqu'on écrit un programme en Java et que l'on veut faire communiquer celui-ci avec une scène VRML par l'interface externe, tout se passe comme pour écrire une applet. C'est naturel dans la mesure ou nous somme effectivement en train de faire communiquer deux programmes qui s'exécutent pour ainsi dire indépendemment l'un de l'autre.

    Des exemples simples et de complexité croissante pour mieux comprendre :

  • Pointeur sur la page d'exemples du Cosmo Player : utile pour voir des exemples simples et vérifier que tout marche bien.
  • Pointeur sur la page d'exemples d'Oracle : des exemples plus complexes pour mettre votre machine a genoux.
  • 4 Exercices pratiques :

    VRML 2.0 et Java permettent d'écrire des mondes dynamiques et réactifs. La guerre fait toutefois rage entre les grands éditeurs de logiciels et les exemples ne fonctionnent généralement que pour le programme de visualisation VRML 2.0 pour lequel ils sont écrits. Vous ne vous ettonerez donc pas trop si vous avez des difficultés a les faire fonctionner.

    Au cours des semaines et des mois à venir, des exemples seront accessibles à partir d'ici. Pour l'instant toutefois, il existe peu de programmes interessants et fonctionnels utilisant le scripting en VRML, il faudra donc attendre un peu.

    Exemples mettant en oeuvre l'interface interne :

  • Voir la section ci-dessus.
  • Autres...
  • Exemples mettant en oeuvre l'interface externe :

  • Voir la section ci-dessus.
  • Autres...
  • 5 Par delà cette introduction :

    Nous l'avons dit, Java et VRML sont tous deux de très jeunes enfants. Il va donc falloir les laisser grandir un peu par eux même avant de savoir plus à quoi ils pourront bien être utiles. Les possibilités offertes sont toutefois prometteuses.

    Les grands constructeurs (Sony, Silicon Graphics, Netscape, Microsoft...) commencent à proposer des solutions, tant pour visualiser des fichiers VRML et Java que pour écrire des programmes dans ces deux langages. La concurrence entre ces éditeurs produira sans doute des conflits et des incompatibilité. C'est donc nous tous utilisateurs qui devons militer pour qu'un produit utilisant des spécifications puissantes et compatibles soit développé et soutenu par une communauté vivante.

    Par conséquent, nous vous conseillons vivement de rester régulièrement à l'écoute, sur le Web pour connaitre les dernières tendances et autres informations utiles. En particulier, une visite aux futures générations de JAVA/VRML s'impose (cliquer ici).

    6 Références utiles :

  • Ames, A. L. (1997). The VRML 2.0 Sourcebook. John Wiley & Sons, Inc, New York, pp. 571-601.
  • Le livre de référence pour apprendre le VRML 2.0. Introduction au noeud Script, essentiellement pour Javascript. Incomplet pour se former aux interfaces internes et a fortiori externes.

  • Lea, R., Matsuda, K. and Miyashita, K. (1996). Java for 3D and VRML Worlds. New Riders Publishing, Indianapolis, Indiana
  • Un livre très complet dans le domaine de la programmation avec l'interface interne. Ce livre et par ailleurs interessant pour se former à VRML 2.0 seul : il contient une présentation brève mais efficace des principaux concepts.


    (retour à Tutoriel JAVA-VRML)

    S.M.M.