La réalisation d'un monde VRML


1. La réalisation d'un projet

2. Les outils informatiques

3. Comment organiser son environnement de travail ?

4. Ne pas oublier

5. Exemples

6. Trucs et astuces


1. La réalisation d'un projet

La conception d'une scène, si petite soit elle necessite une planification. Cette demi-heure perdue avant de commencer proprement dit vous permettra de gagner plusieurs dizaines d'heures lors de la réalisation. Apprenez donc à penser votre scène VRML comme un projet complet en soit :

2. Les outils informatiques

Dans tous les cas, il vous faudra un PC ou une station Silicon Graphics car les outils n'ont pas encore été développés sur Macintosh ou Unix. De plus, même sur PC il n'existe pas d'outil permettant de réaliser une scène VRML de a à z. L'emploi de plusieurs outils est une nécessité de fait. En fait, vu l'état actuel des outils de construction VRML (bugs, support incomplet...) il peut même être utile d'utiliser conjointement des produits concurrents. Une autre solution consiste à utiliser un moteur de recherche WWW pour récuperer des ressources (images, sons...) mises à disposition gratuitement par certains développeurs.

Il vous faudra donc considerer l'emploi de :

3. Comment organiser son environnement de travail ?

Puisque d'autres que vous vont profiter de votre travail, vous vous devez d'être aussi propre et précis que possible :

4. Ne pas oublier

5. Exemples

Nous avons réalisé différents avatars et autres mondes virtuels en utilisant les recommandations ci-dessus. Ceux-ci sont disponibles sur le site du TECFA à http://tecfa.unige.ch/guides/vrml/examples/worlds/README.html. Pour plus d'informations sur chaque monde, aller à http://tecfa.unige.ch/guides/vrml/examples/worlds/docs/worlds.html.

6. Trucs et astuces

D'une manière générale, la solution choisie pour l'implémentation d'un monde VRML doit être aussi simple, adaptée et minimaliste que possible. En effet, d'une part certaines choses sont tout bonnement irréalisables en VRML (: par exemple le vent dans un arbre virtuel), et d'autre part, bien qu'il y ait plusieures manières théoriques de décrire un même objet en VRML une seule est bien souvant la bonne.

Prenons un exemple : dans le monde "Stairway to heaven", on utilise massivement des DEF et des USE pour les différents objets de la scène. On aurait tout aussi bien pu faire des PROTO. Dans les deux cas, le code pouvait être mis dans des fichiers indépendants (inline ou externproto) ou au contraire faire partie intégrante de la scène. Si l'on souhaite la lisibilité, il vaudrait mieux avoir des protos dans des fichiers séparés, mais si l'on souhaite l'efficacité à l'exécution, l'utilisation de DEF au sein d'un même fichier s'impose. En fait, pour être tout a fait efficace, on pourrait même éviter les DEF et recopier le code manuellement puis zipper le fichier (gzip) pour qu'il prenne moins de place.

Pour les mêmes raisons, si c'est possible, il vaut mieux éviter de faire un script et se contenter d'un routage entre senseurs (voir par exemple "Hellpit"). Toutefois, lorsque le script s'avère nécessaire, il faut savoir que, contrairement à l'intuition, un script Java peut-être 20 fois plus lent qu'un Javascript (voir "Moving sands").

L'emploi de niveaux de détail pour les objets (LOD) peut-être lui aussi un avantage comme un inconvéniant : l'accélération théorique de l'affichage peut être compensée par l'augmentation de la mémoire utilisée (obligeant votre disque dur a faire du rodéo). En fait, lorsque le monde devient suffisamment gros (c'est à dire plus d'un méga sur le disque) ou gourmand en calcul, des objets avec un grand nombre de niveaux de détail peuvent être un sérieux handicap. D'une manière générale, il vaut mieux alors se contenter du niveau le plus détaillé ou, mieux encore, ne garder qu'un niveau de détail inférieur. Généralement, les gens ne sont pas le nez collé sur vos objets et ils ne remarqueront pas la différence. Typiquement, je réduit ainsi sans aucun problème le nombre de face d'un objet par deux avec une perte visuelle négligeable. Le gain réalisé peut donc être énorme puisque dans ce cas vous n'encombrez ni la mémoire (niveaux multiples) ni le processeur (nombre de faces faible).

L'attention des gens qui visualisent un monde VRML est généralement portée sur un nombre très restreint d'objets. Lors de la conception du monde les efforts doivent donc être portés sur ces objets plutot que sur les autres. Dans "Island" ou "Zooisland" par exemple, il y a un vol de mouettes au dessus de l'ile. Ces mouettes ne sont pas visibles au premier coup d'oeuil et ne représentent pas un élément critique du monde. Aussi, une animation détaillée ou une géométrie poussée sont inutiles. Seules quelques valeurs ont été définies pour les interpolateurs de position et c'est bien suffisant. De plus, le vol des mouettes les unes par rapport aux autres (les six mouettes volent en formation) n'est absolument pas réalise. Une simple translation du prototype de mouette a été suffisante pour donner l'illusion d'une formation de mouettes mais personne ne passera assez de temps sur cette scène pour se rendre compte qu'il s'agit de 6 mouettes indépendantes suivant des chemins similaires. Dans la même lignée, les "Bubbles" ne sont sujettes ni à la gravité, ni aux frottements mais cela ne fait aucune différence.

Dans "Strange hills" on reéutilise le même prototype une centaine de fois pour donner l'illusion d'un sol mobile. Ce prototype contient un senseur de proximité et un script. Il y a un problème avec ce genre d'approche : lorsque le monde s'exécute, il y a une centaine de senseurs et une centaine de scripts actifs simultanément. Tout ordinateur normallement constitué a du mal à gérer ce genre de chose (car il faut un processeur très rapide avec beaucoup de mémoire). L'emploi d'un seul script central serait certainement plus efficace même si l'écriture et la relecture du script seraient alors rendus bien plus compliqués. Ce qui rend la solution choisie acceptable pour une centaine de prototypes est aussi ce qui la proscrit dans le cas d'un millier de prototypes.

C'est à vous seul qu'il appartient d'avoir une idée de la complexité de votre scène et du public cible. Dans tous les cas, ne soyez pas trop ambiteux et ne perdez pas de vue votre objectif : que le public aime ce qui lui est présenté.