VRMLworks

Réponses de la FAQ comp.lang.vrml
4. Créez vos propres mondes

  1. Devrais-je créer mes mondes VRML en VRML 1.0 ou en VRML 97?

    Absolument. Vous devez construire des mondes VRML. Beaucoup de mondes.

    Oh. Vous vouliez savoir dans lequel des deux formats construire vos mondes. Une page du VRMLworks couvre des facteurs pouvant influencer votre choix. L'opinion générale dans comp.lang.vrml est que vous ne devriez pas construire de nouveaux mondes VRML 1.0 avec l'extension Live3D, puisque certains navigateurs VRML 97 ne le supportent pas, et que la plupart des mondes généralement rencontrés sont construits en VRML 97.

  2. De quel environnement de développement ai-je besoin pour programmer dans VRML?

    VRML n'est pas un langage de programmation, c'est un langage de description de scène. Vous pouvez construire des mondes VRML en utilisant rien de plus qu'un simple éditeur de texte. La réponse à une autre question aborde ceci de façon plus détaillée.

    Mais beaucoup de gens ne veulent pas utiliser un éditeur de texte et devoir travailler avec la syntaxe de VRML. Et de toute manière, du moins au début, ils n'ont pas à le faire. La réponse à une autre question aborde ceci de façon plus détaillée.

  3. Je ne suis pas un programmeur. Est-ce que je peut créer des mondes VRML?

    Oui vous le pouvez. La réponse à une autre question vous donnera de bons points de départs.

  4. Qu'est-ce qu'un bon compilateur VRML?

    Il n'y en a pas. VRML n'est que du texte, et un navigateur VRML lira ce texte et construira une scène à partir des instructions qu'il trouvera dans votre(vos) fichier(s) texte.

  5. Est-ce qu'il y a des logiciels qui permettent de voir le code source VRML?

    N'importe quel éditeur de texte vous permettra de voir le code source VRML. Si le code semble être en format binaire, voyez la réponse à une autre question.

    Certains modélisateurs VRML enregistreront les fichiers en format Unix, qui peuvent être difficiles à lire pour certains éditeurs de texte Windows. Voici une façon rapide pour la conversion d'un fichier tirant parti du fait que la plupart des pourvoyeurs de services Internet (en anglais, ISP, pour Internet Services Provider) utilisent des systèmes Unix:

    1. Copiez le fichier sur votre disque.
    2. Utilisez un programme FTP, et transférez le fichier en mode binaire dans votre dossier personnel chez votre ISP.
    3. Changez le mode de transfert à ASCII et re-transférez le fichier sur votre propre ordinateur.

    Vous pouvez aussi utiliser Vorlon de Trapezium pour l'enregistrement des mondes (merci à Joh Johannsen pour cette réponse):

    vorlon http://www.quelquepart.com/fichier.wrl -fetch

    ira chercher le URL et

    vorlon fichier.wrl -import

    créera une version non gzipped du fichier et le nommera "imported".

  6. Est-ce qu'il existe des façons d'empêcher les utilisateurs de voir mon code source VRML?

    VRML se distribue sur Internet tout comme HTML, et a le même degré de sécurité contre la lecture du code source que HTML peut avoir, c'est à dire, très peu.

    Une façon de contrer les éventuels pilleurs est de générer le code VRML dynamiquement à partir d'un script CGI (voir la réponse à la question suivante). Il est aussi possible d'utiliser Browser.createVrmlFromURL() pour charger un fichier qui disparaîtra ensuite, mais ce genre de trucs peut souvent causer des problèmes pour ceux qui visitent votre monde depuis une connexion instable ou derrière un mur coupe-feu.

    Ceci étant dit, la véritable réponse est non.

  7. Peut-on générer dynamiquement du code VRML à partir d'un script CGI?

    La plupart des serveurs web sont installés sur des systèmes Unix, et la réponse à cette question dépend de certaines fonctions propre à Unix. Des lecteurs ont-ils des solutions similaires pour NT et d'autres systèmes?

    Ce qui suit est un script de shell permettant de faire voler un missile contre une cible se déplaçant selon une trajectoire pré-établie. L'usager utilise un formulaire pour y entrer les paramètres d'azimut et d'élévation et appelle ensuite le script CGI. Si vous ne savez pas comment appeler un script CGI à partir d'un formulaire, voir une introduction à ce sujet au site de la NCSA.

         #!/bin/sh
         fly_the_missile $WWW_azimuth $WWW_elevation > missile$$.tmp
         turn_it_into_vrml <missile$$.tmp >missile$$.wrl
         echo "Content-type: model/vrml"
         echo "Pragma: no-cache"
         echo
         cat missile$$.wrl
    

    Examinons en détail. La première ligne indique un shell Bourne. À la seconde ligne, on trouve un programme qui s'appelle fly_the_missile. Ses deux arguments, $WWW_azimuth et $WWW_elevation, proviennent de Un-CGI. Vous pouvez obtenir Un-CGI à Sunsite. Si vous n'utilisez pas Un-CGI, vous aurez à utiliser une autre méthode pour extraire les paramètres d'azimut et d'élévation du flux de données d'entrée; vous en trouverez une description dans le tutoriel CGI de la NCSA.

    Pourvoir le code de fly_the_missile dans cette FAQ serait hors propos, mais on peut tout de même dire qu'on y trouvera un paquet de valeurs X, Y et Z pour le missile et la cible, et peut-être une dernière ligne disant si le missile a atteint la cible ou s'il est passé tout droit.

    Le résultat du vol du missile s'inscrit dans un fichier qu'on nomme missile$$.tmp. La session Bourne traduira le "$$" au PID actuel. Ceci assure que deux usagers appelant ce script en même temps n'entreront pas en conflit l'un avec l'autre.

    Ensuite, on appelle turn_it_into_vrml. Encore une fois, le contenu de ce programme serait hors propos dans cette FAQ, il suffit de savoir qu'on retrouvera du code VRML 1.0 ou 2.0 valide à la sortie. À noter qu'encore une fois on inscrit la sortie dans un fichier unique. Procéder de cette façon étape par étape prend très peu de temps supplémentaire, et est d'un grand secours pour le déboguage.

    Ensuite, on envoie à la sortie le très important identificateur Content-type: model/vrml et un Pragma: no-cache qui est un peu moins important: il assure que si l'usager utilise le script une seconde fois, il n'utilisera pas ses résutats précédents.

    Finalement, on envoie à la sortie le contenu de notre fichier temporaire contenant le code VRML, et c'est tout, excepté pour le nettoyage final: vous aurez besoin d'un "cron job" pour vous débarrasser des fichiers temporaires, ou vous pouvez remplacer ces fichiers par des "pipes", ou vous pouvez effacer les fichiers temporaires dans le même script du shell -- mais soyez prudent: certaines variétés de Unix utilisent des chaînes d'exécutions (thread) et vous pourriez arriver à effacer les fichiers avant même qu'ils ne soient livrés à la sortie.

  8. Quel est le meilleur logiciel de modélisation VRML?

    Celui que vous utilisez est le meilleur et tout le monde est d'accord avec vous. Les discussions sur ce qui est meilleur sont généralement moins productives que celle ayant trait à des fonctionnalités spécifiques des modélisateurs qui sont plus ou moins faciles à utiliser. De plus, les développeurs de ces modélisateurs jettent quelquefois un coup d’œil sur cette liste, et pourraient prendre en considération vos idées et les introduire dans une prochaine version.

    Le VRML Repository a une liste de modélisateurs pouvant vous aider à démarrer. Parce que la construction de mondes est un processus de création personnel, vous aurez besoin de faire vos propres recherches, un peu à tâtons, avant de trouver l'outil qui vous conviendra le mieux.

  9. Quel est le meilleur livre sur VRML?

    Celui que vous aimez le mieux est le meilleur, et tout le monde est d'accord avec vous. Il est de loin préférable sur le groupe de discussion, de parler de choses plus spécifiques qui vous plaisent ou non à propos de livres particuliers. Il peut être utile aussi que vous vous décriviez un peu ("Je ne me souviens plus de la géométrie 3D apprise au collège" ou "Je suis un programmeur C").

    Le VRML Repository a une liste de livres, et le VRMLworks possède quelques critères pour la sélection d'un livre VRML ainsi qu'une revue des livres courants. Les revues procèdent, bien sûr, d'une point de vue purement personnel.

  10. Est-ce que je peux utiliser des modèles de [logiciel X] dans mon monde VRML?

    Si le logiciel X est un outil de CAO 3D, de modélisation, ou d'animation, les chances sont bonnes pour qu'il exporte déjà VRML, et de plus en plus de ces applications exportent maintenant VRML 97. Pour les quelques-unes qui ne le font pas, voyez la réponse à la prochaine question.

  11. Comment faire pour convertir un [fichier de type X] à VRML?

    Le VRMLworks a une liste de convertisseurs qui peuvent créer du code VRML à partir de toutes sortes de formats de fichiers différents.  Les gens participant au groupe de discussion peuvent en connaître d'autres, alors demandez SVP, et si je vois la réponse, je l'ajouterai sur la liste.

  12. Mon application de [CAO/Animation] n'exporte que des fichiers VRML 1.0. Comment puis-je utiliser ces fichiers?

    Convertissez le fichier VRML 1 en un fichier VRML 2. Voyez la liste de convertisseurs au VRMLworks pour savoir où trouver un convertisseur VRML 1 à VRML 2. Notez que Lodestar, un outil de réduction de maillage gratuit fort populaire, ne fonctionne qu'avec VRML 1, vous voudrez donc sans doute réduire la grosseur de votre fichier VRML 1 avant de le convertir en VRML 2.

  13. Où peut-on trouver des modèles et des textures?

    Le VRMLworks a une liste de modèles et textures ainsi qu'un moteur de recherche de modèles. Assurez-vous de mentionner vos sources, et n'utilisez que des modèles et textures provenant d'archives publiques ou en obtenant la permission de l'auteur ou du titulaire des droits.

  14. Est-ce qu'il y a des tutoriaux gratuits sur VRML?

    Le VRMLworks a une liste de tutoriaux. Réponse courte: il en existe une profusion. Il n'y a aucune excuse pour ne pas apprendre VRML.

  15. Comment faire pour gzip/gunzip un fichier VRML? Est-ce que PKZip convient?

    Utilisez le programme gratuit gzip. Certains programme standard tel WinZip vont "dézipper" un fichier gzip, mais ne créeront que des fichiers en format PKZip, qui ne seront pas décodés correctement par la plupart des navigateurs VRML.

    Parce qu'on retrouve un bug dans certains navigateur web, il vaut mieux suivre la procédure suivante:

    1. Compressez votre monde avec gzip. Ceci changera votre fichier foo.wrl en un fichier nommé foo.wrl.gz.
    2. Renommez le fichier foo.wrl.

    Lorsque vous voudrez modifier le fichier:

    1. Renommez le fichier foo.wrl.gz
    2. Utilisez gunzip pour le décompresser en foo.wrl, résultant en un fichier texte que vous pourrez modifier.

    Un logiciel gratuit pour Win9x/NT/2k au VRMLworks qui se nomme Win-GZ prend en charge ces deux opérations à la fois. Mettez-le sur votre menu du bouton droit de la souris, et vous pourrez faire tout le travail avec deux clics de la souris seulement.

  16. Existe-t-il un utilitaire pour valider la syntaxe VRML?

    Il y a deux excellents vérificateurs de syntaxe VRML: Vorlon de Trapezium et Viper du National Institute of Standards and Technology (NIST). Ces deux vérificateurs ont aussi d'autres fonctions bien utiles, assurez-vous donc de lire la documentation à ce sujet.

    Au moins la moitié des questions posées sur comp.lang.vrml ne le seraient jamais si les gens utilisaient ces vérificateurs de syntaxe.

  17. Qu'est-ce que VRMLScript?

    VRMLScript est un artéfact historique. Brendan Eich de Netscape Communications Inc. a créé un langage de script orienté objet appelé JavaScript qui était librement basé sur Java. Parce qu'il était exécuté à l'intérieur du profil de sécurité de Netscape Navigator, il était idéal pour le scriptage de VRML, là où la sécurité est une source d'inquiétude (après tout, vous demandez aux visiteurs de votre monde d'exécuter une application non contrôlée sur leur machine). Mais JavaScript amenait un problème: Netscape était propriétaire du langage et ce n'était pas un standard.

    Alors Chris Marrin et Jim Kent de Silicon Graphics créèrent VRMLScript, une implémentation propre d'un sous-ensemble de JavaScript à être utilisée dans les navigateurs VRML. Cosmo Player de SGI et beaucoup d'autres navigateurs VRML l'adoptèrent comme langage de script.

    VRMLScript fut pris de cours par les évènements. En 1997, l'European Computer Manufacturers Association (ECMA) publia les spécifications de ECMAScript établissant ce que Netscape appela le "noyau JavaScript" comme un standard.

    Les gens en charge des spécifications VRML révisèrent rapidement leurs spécifications afin de référer à ECMAScript, ce qui en passant, leur épargna d'avoir à développer les spécifications de VRMLScript à un niveau où il aurait pu devenir un standard.

    Si votre navigateur n'accepte pas "vrmlscript:" dans le champ url d'un nœud Script, vous pouvez simplement substituer "javascript:" et ça devrait fonctionner, avec une exception toutefois: VRMLScript permettait de continuer les chaînes de caractères d'une ligne à la suivante. ECMAScript ne le permet pas. Si vous avez:

        Browser.createVrmlFromString('Group { children [
          Shape { appearance
          Appearance {
          material Material { diffuseColor 1 0 0 } }
          Geometry { Sphere } } ] }');
    

    Vous devrez remplacer par:

        Browser.createVrmlFromString('Group { children [ ' +
          'Shape { appearance ' +
          'Appearance { ' +
          'material Material { diffuseColor 1 0 0 } } ' +
          'Geometry { Sphere } } ] }');


    Notez l'espace additionnel avant le guillemet simple à la fin de la ligne. C'est pour empêcher que la concaténation de la seconde et de la troisième ligne ne produise "appearanceAppearance".

    Actuellement, on trouve encore quelques navigateurs qui n'acceptent que VRMLScript. Si vous voulez que les gens utilisant ces navigateurs soient en mesure de visiter votre monde, vous devriez avoir deux chaînes dans le champ url de votre nœud Script :

        Script {
          ...
    	  url ["javascript:
          ...
          ",
          "vrmlscript:
          "]
        }

    À l'exception de la continuation des chaînes tel que mentionné et de certaines fonctionnalités supporté dans ECMAScript mais non dans VRMLScript (qui de toutes manières n'apparaissent pas si souvent dans la pratique courante) vous devriez pouvoir utiliser du code identique pour chaque script.

  18. Qu'est-ce qui est mieux, Java ou JavaScript/ECMAScript?

    Je ne connais aucune mesure indiquant que Java s'exécute plus rapidement que ECMAScript, mais je crois que oui. Je serais enchanté de remplacer cette dernière phrase par une déclaration basée sur des mesures dûment validées.

    Il a toujours été prévu que ECMAScript soit utilisé pour les tâches légères, alors que Java serait destiné aux tâches lourdes.

    Les deux langages seront probablement requis pour les navigateurs VRML dans un avenir rapproché. D'ici là, si vous voulez que vos mondes soient visibles pour le plus grand nombre de visiteurs possible vous devriez écrire vos scripts comme ceci:

        Script {
          ...
          url [ "foo.class",
          "javascript:
          ...
          ",
          "vrmlscript:
          ...
          "]
        }

    Souvenez-vous que la première chaîne apparaissant dans le champ url sera essayée en premier, un ordre différent peut donc être préférable dans votre cas.

    Notez aussi que vous pourrez faire des choses avec Java que vous ne pourrez faire avec ECMAScript et que vous pourrez faire des choses avec ECMAScript que vous ne pourrez faire avec VRMLScript (même si ce dernier cas est peu commun). Jusqu'à ce que la communauté VRML fasse de Java et ECMAScript des éléments requis du langage, vous pourriez avoir besoin, par exemple, d'un script Java faisant quelque chose de spectaculaire et d'un script ECMAScript qui le fera de façon moins spectaculaire.

  19. Savez-vous quelque chose au sujet de la création de mondes VRML multi-usagers (multi-user shared worlds)?

    Non. Mais heureusement, beaucoup d'autres gens s'y connaissent. Regroupons-les par technologie.

    Si cette liste ne répond pas à votre questions, peut-être voudrez-vous une introduction au sujet des mondes partagés multi-usagers, telle la section sur le cyberespace à VRMLworks.


[line]

Ai-je oublié quelque chose qui vous serait utile dans ces questions? Si c'est le cas, faites-le moi savoir.

-- Bob Crispen
-- Vendredi, 10 mars, 2000

Notes du traducteur:
Si vous avez des suggestions, corrections ou commentaires à apporter,
n'hésitez pas à me contacter

-- Sylvain Carette
-- Dimanche, 17 juin 2001