Besoins des CVE


Les environnements virtuels collaboratifs requièrent des ressources importantes. Nous allons voir que ces besoins se posent sur plusieurs niveaux, et n'ont pas toujours de solution idéale. Posons d'abord le problème suivant: le calcul d'une image de synthèse en utilisant un algorithme quelconque.

Les ressources nécessaires pour résoudre ce calcul vont être plus ou moins importantes suivant le modèle, mais la plupart des micro-ordinateurs actuels sont capables de fournir une qualité de rendu très acceptable. La différence va se jouer au niveau du temps de rendu, un facteur crucial pour la réactivité des environnements virtuels ou immersifs (temps de latence), notamment dans le cadre de l'usage d'interacteurs.

Si maintenant on essaie de voir les contraintes impliquées par un environnement collaboratif, on va voir que les difficultés se posent d'elles même au niveau du réseau, les protocoles utilisés et utilisables suivant les cas allant engendrer des coûts pouvant devenir rapidement prohibitifs.

On va donc pouvoir partager les besoins des environnements virtuels collaboratifs en deux catégories:

Les ressources utilisées pour la synthèse d'image sont bien connues, le but est donc de voir quelles difficultés impliquent la collaboration dans des applications au niveau du réseau. Ce survol des problèmes sera suivi d'un rappel des bibliothèques graphiques couramment utilisées et d'un comparatif des performances des différentes architectures.


  1. Les ressources nécessaires pour la collaboration sur un réseau.
  2. En premier lieu, il est nécessaire de voir les besoins inhérents aux systèmes collaboratifs. On va donc voir une brève chronologie des protocoles et matériels mis en jeu lors du développement de telles applications.

    1. Utilisation de la diffusion. [1]
    2. La diffusion n'est pas réellement un protocole, il s'agit plus d'une technique utilisée quelque soit le protocole sous-jacent.

      En effet lorsque l'environnement est modifié par une des simulations, celle-ci doit diffuser à toutes les autres les modifications effectuées. De cette façon, les autres simulations sont alors responsables de l'utilisation des données qu'elles ont reçu. Le problème inhérent à cette technique est la saturation du réseau qui risque de survenir dès qu'un certain nombre de simulations ont lieu.

      Le modèle DIS a donc été défini afin de permettre une extension du modèle de la diffusion.

    3. Le protocole DIS (Distributed Interactive Simulation). [2, 3]
    4. L'idée de ce protocole est d'utiliser au mieux la bande passante disponible: au lieu d'envoyer un message à toutes les simulations, on envoie un message à chaque domaine (cf. figure 1). Car en fait les simulations ne sont pas toutes sur le même réseau (e.g Ethernet), mais sont quand même regroupées dans un nombre restreint de domaines. Cette définition correspond au protocole UDP Multicast dont la plus importante implémentation est la DIS (Distributed Interactive Simulation). Elle a été longtemps utilisées comme standard pour les réseaux de simulateurs employés par l'armée.

      Le second principe de ce protocole est l'indépendance des noeuds utilisant une interface DIS: en effet, les évènements sont standardisés, mais chaque simulateur est libre d'utiliser les informations qu'il reçoit. Le but est de pouvoir mettre en relation un grand nombre de simulateurs hétérogènes, qui à l'origine n'étaient pas conçus pour être connectés.

      Le dernier principe réside dans le fait qu'il faut limiter les informations transitant sur le réseau, chaque simulateur ayant en fait la partie de la base de donnée qui lui est nécessaire, et ensuite seules sont envoyées les modifications effectuées dans la base. De cette façon, tous les simulateurs ont toujours toutes les données dont ils ont besoin sans avoir une duplication complète de la base de données.

      Cependant, ce protocole pose de nombreux problèmes : On peut voir que le dernier problème découle de la non-fiabilité du protocole choisi, car pendant un moment des solutions ont été envisagées au niveau de messages d'acquittement. Cependant, quand une simulation effectue beaucoup de modifications, le réseau et la simulation sont rapidement surchargés de paquets d'acquittement.

      Une nouvelle solution a donc été envisagée, indépendante des protocoles de bas niveau, et permettant plus de liberté.

    5. Le protocole HLA (High Level Architecture).
    6. Il y a un grand nombre de différences entre DIS et HLA, tout d'abord, HLA est une architecture de haut niveau, elle ne dépend pas d'un unique protocole de communication. On va retrouver de cette façon le même type de couches que pour le développement basé sur Open-Inventor, lui même basé sur OpenGL: on peut modifier la façon dont OpenGL va permettre de stocker un élément sans rien modifier d'autre.

      Cette architecture a été largement utilisée. Elle gère le multicast mais ajoute en plus la condition de fiabilité nécessaire aux applications collaboratives. Cette architecture normalise une interface, ce qui fait que le développement d'applications est plus simple alors qu'auparavant la couche DIS restait difficile à utiliser. Cette architecture peut être utilisée sur un réseau hétérogène, et permet le fonctionnement d'applications avec ou sans temps réel, la communication n'étant plus seulement entre simulateurs, mais aussi avec des applications pilotées.

      Le principal problème qui se présente est que lorsque l'on introduit les environnements virtuels ou immersifs, les volumes de messages induits par ces applications sont beaucoup plus importants. Cela implique l'utilisation de réseaux trés performants. Toujours est-il que cette architecture a été développée par le département de la DMSO (U.S. Defense Modeling and Simulation Office) et est actuellement en train de devenir un standard normalisé par IEEE. L'implémentation RTI (HLA's Runtime Infrastructure) est développée sur un certain nombre de systèmes, et fourni un ensemble d'outils respectant les services précédemment définis.

    7. Implémentations et autres protocoles. [4]
    8. On peut citer le protocole Living Worlds (LW): il sagit de réflexions menées par un groupe de travail du consortium VRML qui visait à définir des normes et standards pour le VRML 2.0 permettant la gestion d'environnements collaboratifs. Ce n'est pas vraiment un protocole de communication, mais c'est la première réflexion pour rechercher un standard dans le domaine des environnements virtuels collaboratifs.

      Au niveau des implémentations, l'une des plus importantes, est l'ensemble d'outils fournis par l'API CAVERNsoft (CAVE Research Network). Il s'agit d'un ensemble de fonctionnalités permettant de mettre en relation des applications basées sur les CAVEs.
      Les fonctions sont réparties suivant le modèle suivant :

      On peut voir qu'il y a une partie concernant des fonctions non graphiques: il s'agit des possibilités permettant la compression audio ou video pour les transferts. Le noyau IRB est la partie responsable des protocoles de transfert et de la gestion de base de données. L'avantage de cette implémentation est qu'elle est indépendante des protocoles de bas niveau: elle peut se servir indifféremment de TCP, UDP et du Multicast. L'espace de fonction LIMBO permet de fournir un ensemble de fonctionalités pour tous les besoins de la télé-immersion, audio-conférence ou importation de modèles et rendu d'avatars.

      L'Open Community a proposé un standard pour la collaboration utilisant des technologies de Mitsubishi Electric Research Laboratories. L'implémentation qui a suivi, SPLINE (Scalable Platform for Large Interactive Networked Environments) a été réalisée en ANSI C et sous forme d'une API Java. Cette API est la seule permettant de paramètrer le temps entre les différentes mises à jour.

      La dernière que l'on peut siter est une API Java, JSDT (Java Shared Data Toolkit), elle n'a pas été créée spécifiquement pour les environnements 3D, mais fourni de nombreux outils pour la réalisation d'applications collaboratives et multimédia.


  3. Les ressources standards utilisées en synthèse d'image et comparatifs. [5]
  4. Dans le domaine des bibliothèques graphiques, les standards du marché sont mieux connus par le grand public. Pour le comparatif de performances, les produits utilisés sont OpenGL, VRML, DirectX et Java 3D. Toutes ces bibliothèques sont disponibles sur de multiples plateformes (excepté DirectX, sous Windows).

    Toutes ces bibliothèques n'ont plus besoins d'être présentées en détail, mais on va examiner une comparaison des performances entres les différents protocoles réseau et les bibliothèques graphiques pour mettre en valeur les temps de latence (un temps de latence est convenable lorsqu'il se situe autour des 200ms, ou vers les 100ms lorsque ce sont des applications critiques temps-réel).

    L'évaluation des performances s'effectue sur quatre niveaux : L'évaluation a été effectuée sur un Pentium II tournant sous Windows NT 4.0 et connecté à un réseau Ethernet à 100 Mbps. La configuration graphique utilisé est 1280x1024 24bits par pixel avec des cartes accélératrices 3D. Toute les machines avaient des processus classiques de gestion de système et de réseau.


      RTI & VRML; RTI & Java3D; JSDT SPLINE & VRML (MAJ 100ms); SPLINE & VRML (MAJ 1ms);
    CC 184 152 - 129 68
    Communication 103 103 60 85 12
    OT 235 204 5 217 78

    Tableau des résultats (Tous les temps sont en ms)

    On peut voir dans les colonnes concernant le protocole SPLINE que le temps entre les mises à jour va avoir un impact important, ce qui permet d'avoir une trés bonne gestion du temps suivant les applications.


    En conclusion, on peut constater que SPLINE et RTI sont des protocoles satisfaisants qui permettent de bons compromis. Par exemple, lorsque l'on veut modifier un objet, il y a d'abord un envoi de message pour vérifier si l'objet est en train d'être modifié ailleurs: cette demande prend du temps mais ajoute une sécurité absente des autres protocoles réseau, d'où une grande différence de latence.

    JSDT parait trés rapide. Cependant, cette API ne contient aucune fonctionalité 3D, nous obligeant à tout réimplémenter. Java3D introduit une latence de 50 à 80 ms, car il y a une interface entre le langage interprété et le langage natif, ce qui peut être évité si l'API est associée à l'API JSTD. Cette association est une bonne solution pour les application demandant un temps de réponse très court et ne nécessitant pas de vérification trop importante des interblocages.

    Ces différents tests ont été effectués dans des conditions idéales, avec un nombre restreint d'utilisateurs; si on veut utiliser ce type d'application via Internet, les temps deviendrait trop important pour permettre une bonne utilisation d'un tel environnement. Aussi, si le nombre d'intervenants devient important, il faut disposer d'un réseau capable de supporter les fortes charges qui en résulteront.