[home] [work] [mail] [Retour au projet de mémoire]

Galerie de la navigation en VRML


Cette page présente les différents outils de navigation réalisés (ou plutôt adaptés) dans le cadre de mon mémoire de diplôme STAF à Tecfa.


Scène de base

Dans cette page d'exemple, j'ai utilisé comme scène de base une de celles fournie avec la version d'évaluation du logiciel CosmoWorld. Cette scène s'appelle "city".

L’événement qui rentre dans le script (eventIn) est la position actuelle récupérée grâce au ProximitySensor. Les 3 événements sortant (eventOut) sont les chaînes de textes des 3 axes (x, y et z).L’événement qui rentre dans le script (eventIn) est la position actuelle récupérée grâce au ProximitySensor. Les 3 événements sortant (eventOut) sont les chaînes de textes des 3 axes (x, y et z).

Les exemples suivants n'utilisent pas les possibilités du navigateurs vrml mais disposent d'outils de navigation intégrés dans la scène.

[up]

Coordonnées polaires + Orientation

Le fait de savoir où l'on se trouve dans une scène VRML est important pour la navigation, mais ça l'est encore plus lors de la phase de programmation.

Deux versions sont proposées, la première première affiche uniquement les coordonnées polaires de l'utilisateur (X, Y et Z).

La deuxième, propose en plus l'orientation de l'utililisateur et "crache" ces informations dans la console sous la forme d'un viewpoint qu'il est facile ensuite de copier-coller dans la scène.

[up]

Boussole

Pour diminuer l'impression que peut avoir un utilisateur d'être perdu dans le mondes en trois dimensions, on peut imaginer que la présence d'une boussole est apréciable. Cet exemple est repris intégralement des travaux de David Ott pour le Campus Virtuel de Tecfa.

Comme dans l’exemple précédent, nous avons besoin de la position actuelle enregistrée par le “ProximitySensor” (PS). De plus, et toujours par le PS, nous obtenons l’orientation actuelle. Ce qui sorts du script (les deux eventOut) sont respectivement les orientations des deux éléments qui composent la boussole, la tige et la pointe.

[up]

Fil d'Ariadne

Un fil d'Ariadne vous suit et vous indique les endroits déjà parcourus en laissant traîner un fil rouge derrière votre passage. Cet exemple est aussi issu des travaux de David Ott pour Tecfa.

De part l’utilisation des prototypes et autres stratégies de réduction de la taille des fichiers vrml, certaines parties d’une scène sont souvent reproduites (par exemple, les immeubles ou les arbres sont souvent réutilisés à plusieurs endroits). La navigation souffre de cette uniformité, cela rend plus difficile la mémorisation puisque chaque élément n’est pas unique, mais susceptible d’être reproduits x fois. Une manière de limiter la confusion que peut entraîner ces répétions, est l’utilisation d’un fil d’Ariadne. Un fil d'Ariadne indique les endroits déjà parcourus en dessinant une ligne derrière le passage de l’utilisateur. Sa fonction se rapproche donc de la couleur violette utilisée de manière conventionnelle dans les navigateurs web pour signifier qu’une page a déjà été visitée.

[up]

Carte dynamique (1)

Le plus facile pour cummuler les avantages des coordonnées polaires et de la boussole, la carte dynamique (un pointeur indique sur la carte à la fois la position et l'orientation du point de vue de la caméra) semble le plus efficace. Cette version présente dans un HUD une représentation 2D de la scène avec un pointeur qui indique la position actuelle de l'utilisateur.

Le script principal de cet exemple s’attache à animer le pointeur de la carte de manière à reproduire les déplacements et les changements d’orientation du point de vue de l’utilisateur. De plus, il renvoie sous forme de string les valeur de X et d’Y (comme le fait déjà l’exemple des coordonnées polaires).

[up]

Carte dynamique (2)

Cet version ressemble beaucoup au précédent, mais cette fois la carte est constituée de la scène visitée, réduite et à laquelle on fait subir une rotation. Pour permettre une localisation de l’utilisateur sur la carte miniature, on cummule cette représentation 3D avec un fil d’Ariadne décris plus haut.

La mécanique de cet exemple se révèle beaucoup plus simple malgré son aspect plus sophistiqué. Elle consiste regrouper la scène et son fil d’Ariadne dans un objet que l’on projette, en réduisant sa taille, dans le “Hud”.

[up]

TouchPad

Un petit exemple de TouchPad permettant de se déplacer de manière originale dans la scène.

[up]

Balle d'aide

Cet exemple propose une balle d'aide qui, dès qu’elle se trouve dans le champs de vision de l’utilisateur, se rapproche de lui en rebondissant. L’intérêt, sous l’angle de la navigation, est par exemple de permettre à l’utlilisateur de cliquer sur cette balle d’aide pour retrouver le “viewpoint” d’origine de la scène. Il suffit pour cela de rajouter un lien sur la balle (une ancre).

Un “VisibilitySensor” détecte lorsque l’utilisateur regarde la balle et active un TimeSensor Ce “TimeSensor” conduit le “PositionInterpolator” qui crée les rebonds de la balle en la bougeant sur l’axe des Z. Ce script modifie la sortie de cet interpolateur avant son envoi au “Transform” qui entoure la balle d’aide. Il détecte la position de l’utilisateur par un grand “ProximitySensor” et utilise cette information pour changer les valeurs de X et de Y de la position envoyée depuis le “PositionInterpolator”. Les positions en X et Y de la balle sont changées presque à chaque frame de manière à bouger la balle devant l’utilisateur. La position modifiée est ensuite envoyée au “Transform”, qui bouge la balle.

 

[up]

Véhicule

Encore une scène, cette fois-ci vous êtes à bord d'un véhicule. Vous ne voyez que le cockpit du véhicule, vous pouvez tourner le volant et jouer de l'acélérateur en déplaçant le carré sur la droite.

[up]

Viewpoints externes (javascript) *

Le plus instable de ces exemples... Permet de lier un lien hypertexte vers un viewpoints. Le changement de viewpoint est extrêmement lent (environ 10 à 15 secondes...). Cet exemple utilise une fonction "javascript" pour envoyer les informations à l'applet Java. Il semble que ce soit cette interaction entre javascript et java qui soit à l'origine de cette lenteur.

[up]

Viewpoints externes (java) *

Une scène qui permet de sélectionner les viewpoints par un applet java en dehors de la scène VRML. Le déplacement est très rapide, mais l'on perd le côté "fun" des transitions entre les viewpoints.

[up]

Commandes de direction externes *

Applet java qui reproduit les flèches du clavier et permet le déplacement dans la scène.

[up]

* Ne fonctionne qu'aléatoirement avec MSIE, je vous conseille d'utiliser Netscape (mais pas la version 6 !!!). Evitez de cliquez sur les contrôles Java avant que la scène soit complétement chargée.


Bertrand Resin - Tecfa - Juillet 2001