FR 2861933 A1 20050506 FR 0312956 A 20031030 - 1 - La présente invention concerne les systèmes informatiques qui fournissent des environnements virtuels tridimensionnels interactifs permettant à des utilisateurs éloignés d'interagir simultanément avec des objets interactifs et d'autres utilisateurs. Un Environnement Collaboratif Virtuel (ECV) est un monde virtuel généré par ordinateur. C'est un système multi-utilisateurs qui permet à plus d'un utilisateur de se déplacer dans le monde virtuel d'une façon immersive ou non immersive. L'ECV peut inclure du contenu multimédia, c'est-à-dire des images, du texte, des objets géométriques et du son, dans l'environnement virtuel, pour améliorer la présentation de l'information du monde virtuel aux utilisateurs. L'objectif d'un système collaboratif est de faciliter le travail de groupe et en particulier de permettre la manipulation d'objets partagés par les membres d'une équipe tout en faisant évoluer ces objets de façon cohérente. En général, un objet partagé impliqué dans une -activité collaborative (édition de texte partagée, conférence électronique, etc.) est sujet à des accès concurrents et à des contraintes de temps réel. L'aspect temps réel nécessite que chaque utilisateur voie les effets de ses propres actions et des actions des autres utilisateurs sur l'objet partagé dés que possible. Dans un système distribué avec un délai de latence important induit par le réseau informatique employé, ce taux de réactivité élevé ne peut être obtenu qu'en copiant chaque objet partagé sur chacun des sites d'utilisation. En conséquence, le problème est de concilier à la fois la contrainte de temps réel et la préservation de la cohérence des copies des objets partagés, étant donné qu'ils peuvent être modifiés de façon concurrente par plusieurs utilisateurs. Dans ce contexte, plusieurs algorithmes existent, comme adOPTed (Ressel, NitscheRuhland, Gunzenhàuser. An Integrating, Transformation-oriented Approach to Concurrency Control and Undo in Group Editors , 1996, pp. 288-297) et GOT (Sun, Jia, Yang, Zhang: A generic operation transformation schema for consistency maintenance in real-time cooperative editing systems , 1997, pp. 425-434), mais même s'ils fonctionnent, leur réalisation est complexe. La durée de leur - 2 - réalisation n'est donc pas toujours compatible avec les délais de développement d'un programme. La solution selon l'invention se veut d'une réalisation plus simple et donc relativement plus rapide à réaliser. La solution selon l'invention applique ces techniques à un monde virtuel tridimensionnel partagé composé d'une arborescence d'objets. La présente invention est un système d'environnement collaboratif virtuel comprenant un monde virtuel tridimensionnel composé d'objets informatiques partagés, au moins un programme d'ordinateur client et un programme d'ordinateur serveur qui communiquent à travers un réseau de transmission d'informations; caractérisé en ce qu'il comporte des moyens de gestion de la cohérence du monde virtuel et en ce que ces moyens comprennent: - la réplication du monde virtuel sur tous les programmes clients et le programme serveur; - la récupération des fichiers de données du monde virtuel par les programmes clients lors de leur connexion au programme serveur; - l'envoi de demandes de modification du monde virtuel au programme serveur par les programmes clients sans exécuter la modification en local; - le traitement des demandes de modification du monde virtuel par le programme serveur et la transmission des modifications effectuées à tous les programmes clients; - l'application par les programmes clients des modifications du monde virtuel indiquées par le programme serveur; l'attribution par le programme serveur d'un identifiant unique à chaque objet partagé ; - l'attribution aux objets partagés dépendants d'autres objets partagés d'identifiants comportant l'identifiant de l'objet dont ils dépendent et un identifiant spécifique. Dans ce système les objets partagés possèdent un moyen d'envoyer des messages à leurs copies. Ce système possède un moyen de créer un objet partagé contenant d'autres objets partagés et d'affecter à tous ces objets un identifiant unique en un seul échange d'informations. - 3 - Le maintien de la cohérence des objets partagés se fait par échange de messages à travers un réseau informatique et le programme serveur sert de référence pour les données du monde virtuel. L'ECV tridimensionnel permet de recréer des environnements de travail réalistes comme des salles de réunions ou de formation et son contenu est identique pour tous les utilisateurs. Les utilisateurs sont représentés dans le monde virtuel par des personnages virtuels en trois dimensions (avatars). La description de l'invention ne comporte pas de figures. Le système est basé sur l'architecture clients/serveur. Les ordinateurs clients exécutent des programmes d'ordinateur, dits programmes clients, qui communiquent à travers un réseau informatique (Internet, réseau local, etc.) avec un programme d'ordinateur, dit programme serveur, exécuté sur l'ordinateur serveur. Un même ordinateur peut être à la fois client et serveur. Les programmes clients et le programme serveur communiquent en échangeant des messages utilisant les protocoles de communication TCP et UDP. Chaque utilisateur se connecte à l'ECV, hébergé par le 25 programme serveur, en utilisant un programme client. Chaque programme client possède un numéro d'identification unique qui correspond à l'ordre dans lequel il s'est connecté au programme serveur. Pour le premier programme client connecté, ce numéro sera 1, pour le deuxième programme client connecté ce sera 2, etc. Chaque programme client télécharge les fichiers de données du monde virtuel à partir du programme serveur lorsqu'il se connecte. Chacun possède alors une copie locale du monde virtuel. Le monde virtuel est composé d'objets informatiques organisés en une structure arborescente et est converti en fichiers de données par sérialisation de ces objets. Ces objets informatiques peuvent être des objets non interactifs, qui constituent le décor, ou des objets interactifs - 4 - avec lesquels les utilisateurs peuvent interagir, comme les avatars des utilisateurs. Les objets partagés sont répliqués sur chacun des sites d'utilisation, dans la mémoire des ordinateurs clients et serveur. Chaque objet informatique partagé est identifié de façon unique par un code alphanumérique, dit identifiant de l'objet (OID). Cet identifiant peut être constitué, par exemple, par le nom de la classe de l'objet plus un numéro incrémenté à chaque création d'objet, tel que EditeurDeTextel . L'OID est identique pour toutes les copies d'un objet. Ceci permet d'identifier une copie d'un objet partagé comme correspondant à l'objet partagé identifié par l'OID. Le monde virtuel étant constitué d'objets informatiques organisés en une structure arborescente, ces objets peuvent avoir des objets enfants . Chaque OID d'un enfant peut être généré à partir du nom de la classe de cet objet ou bien être constitué de l'OID de son parent plus un séparateur indiquant qu'il s'agit d'un enfant et un numéro d'enfant, le premier enfant ayant le numéro 1, le deuxième le numéro 2, etc.. Par exemple, si l'OID de l'objet parent est EditeurDeTextel et que le séparateur indiquant qu'il s'agit d'un objet enfant est , l'OID du troisième objet enfant sera EditeurDeTextel 3 . Ainsi si l'OID du parent est unique, les OID générés à partir de celui-ci de cette façon sont uniques et sont dits OID hiérarchiques. Pour effectuer une modification dans le monde virtuel, un programme client envoie une demande de modification au programme 30 serveur à travers un message. Le programme serveur reçoit les messages qui lui sont envoyés et les traite dans l'ordre de leur réception. Le programme serveur reçoit la demande et vérifie sa validité en fonction des informations présentes dans chaque type de message. Si la demande est valide, le programme serveur modifie sa copie du monde virtuel en conséquence puis envoie un message indiquant que la modification a été acceptée à tous les programmes clients connectés, chaque programme client interprète alors ce message et modifie sa copie du monde virtuel en conséquence. - 5 - Si la demande est invalide, le programme serveur renvoie un message d'erreur au demandeur de la modification. Ainsi, toutes les modifications du monde virtuel sont transmises à tous les programmes clients dans l'ordre ou le programme serveur les applique au monde virtuel. Tous les programmes appliquent donc les modifications dans le même ordre. Ce qui maintient la cohérence des copies du monde virtuel. Les messages échangés entre les programmes clients et le programme serveur contiennent un type de message et éventuellement des sous types puis le contenu du message. Le protocole utilisé est conçu pour être compréhensible par un être humain tout en restant concis. Le type d'un message, ainsi que ses éventuels sous-types, est donc représenté par un caractère affichable. Par exemple, les sous-types représentés par les caractères A et R indiquent respectivement qu'une demande de modification a été acceptée ou refusée. Les modifications possibles dans le monde virtuel se résument à l'ajout d'un objet, la modification d'un attribut d'un objet, l'invocation d'une méthode d'un objet et la suppression d'un objet. L'ajout d'un objet dans le monde virtuel commence par une demande d'un programme client. Cette demande se fait par un message adressé au programme serveur du type C pour Create et contenant le nom de la classe de l'objet à créer et la position dans l'espace du nouvel objet. Le programme serveur tente de créer l'objet et lui attribue un OID unique. S'il réussit, il transmet le message à tous les programmes clients en y rajoutant l'OID du nouvel objet créé. Les programmes clients créent alors le nouvel objet et lui affectent l'OID indiqué par le programme serveur. Par exemple, lorsqu'un programme client se connecte à l'ECV il crée son avatar de cette façon. Des objets partagés peuvent être composés d'autres objets partagés. Lors de la création de tels objets, une seule demande de création est effectuée et le programme serveur y répond avec un seul message contenant l'OID de l'objet de plus haut niveau. Le - 6 - programme serveur et chacun des programmes clients créent cet objet, qui à son tour crée les objets qui le composent et leur affecte un OID hiérarchique basé sur son propre OID et le numéro de chaque objet enfant. L'ordre de création des enfants étant le même pour toutes les copies de l'objet, chaque objet enfant aura le même OID chez le programme serveur et chez tous les programmes clients. De cette façon, des objets partagés complexes peuvent être créés en une seule opération, ce qui limite le trafic sur le réseau informatique servant à échanger les messages. Les messages de modification d'un attribut d'un objet du monde virtuel sont du type U pour Update et contiennent l'OID de l'objet concerné, le nom de l'attribut ayant changé et la nouvelle valeur de cet attribut. Par exemple, lorsqu'un utilisateur fait effectuer une action à son avatar dans le monde virtuel ceci ce traduit en modifications de la valeur d'un ou plusieurs attributs de l'avatar (position, animation, etc.). L'avatar est un objet du monde virtuel, ses modifications sont donc transmises grâce à un ou des messages de modification des attributs de cet objet. Les messages d'invocation de méthodes d'un objet du monde virtuel sont du type E pour Execute et contiennent l'OID de l'objet concerné, le nom de la méthode à invoquer et les paramètres de cette méthode. Le résultat de l'appel d'une méthode d'un objet partagé ne transite pas par le réseau d'informations, mais est appliqué par chaque programme exécutant la méthode, ce qui permet de réduire la quantité d'informations transitant par ce réseau. Pour maintenir la cohérence de l'ECV, seules les méthodes des objets partagés dont l'exécution à partir de contextes initiaux identiques donne des résultats identiques doivent être invoquées. La méthode de demande de modification au serveur décrite précédemment assurant que les contextes de tous les programmes sont identiques lorsqu'ils appliquent une modification au monde virtuel partagé. Par exemple, une méthode déplaçant un objet par rapport à une position initiale en augmentant sa coordonnée X de 5 donne toujours le même résultat si le contexte initial, qui est la position initiale de l'objet, est identique. Cette méthode peut - 7 - donc être invoquée à travers un message d'invocation de méthode. Dans le cas de méthodes dont le résultat est aléatoire, seul le programme serveur peut les exécuter puis transmettre les résultats aux programmes clients. Les messages de destruction d'un objet du monde virtuel sont du type D pour Drop et contiennent l'OID de l'objet à détruire. Les objets partagés peuvent envoyer des messages spéciaux dits messages privés à leurs copies situées chez le programme serveur ou chez les programmes clients. Ces messages permettent aux objets partagés de communiquer directement avec leurs copies sans utiliser le protocole servant à la gestion de la cohérence du monde virtuel. Ceci leur permet d'utiliser un protocole de communication propre pour réaliser des fonctions non prévues dans le protocole de base. Ces messages sont du type P pour Private et contiennent l'OID de l'objet émetteur, des données facultatives et des informations facultatives indiquant les destinataires du message. Un tel message peut être envoyé par une copie d'un objet partagé située chez des programmes clients ou chez le programme serveur. Si le message est envoyé à partir d'un programme client, il contiendra en plus un champ Destination indiquant les destinataires du message. Le tableau suivant indique les valeurs possibles du champ Destination et les significations correspondantes. Valeur Signification 1 Envoyer à tous les programmes clients 2 Envoyer à tous les programmes clients sauf l'émetteur du message 3 Envoyer seulement au programme serveur 4 Envoyer seulement à un programme client Envoyer à une liste de programmes clients Dans le cas où la valeur du champ destination est supérieure à 3, le message contient également les numéros identifiant les programmes clients destinataires du message. Lorsqu'un tel message parvient au programme serveur, celui-ci vérifie que l'OID présent dans le message correspond à un objet partagé puis transmet le message aux destinataires restants en omettant les informations sur les destinataires contenues dans le message initial. Lorsqu'un tel message est envoyé à partir du programme serveur, il ne contient pas les destinataires du message, au lieu de cela un message sans cette information est envoyé à chaque destinataire. L'omission de cette information permet de diminuer la taille des messages transitant par le réseau informatique et donc de réduire le temps de transmission de ces messages. Le système selon l'invention est particulièrement destiné à la réalisation d'environnements virtuels permettant à des personnes de réaliser un travail collaboratif. - 9 - REVENDICATIONS 1. Système d'environnement collaboratif virtuel comprenant un monde virtuel tridimensionnel composé d'objets informatiques partagés, au moins un programme d'ordinateur client et un programme d'ordinateur serveur qui communiquent à travers un réseau de transmission d'informations; caractérisé en ce qu'il comporte des moyens de gestion de la cohérence du monde virtuel et en ce que ces moyens comprennent: la réplication du monde virtuel sur tous les programmes clients et le programme serveur; - la récupération des fichiers de données du monde virtuel par les programmes clients lors de leur connexion au programme serveur; l'envoi de demandes de modification du monde virtuel au programme serveur par les programmes clients sans exécuter la modification en local; - le traitement des demandes de modification du monde virtuel par le programme serveur et la transmission des modifications effectuées à tous les programmes clients; l'application par les programmes clients des modifications du monde virtuel indiquées par le programme serveur; - l'attribution par le programme serveur d'un identifiant unique à chaque objet partagé ; l'attribution aux objets partagés dépendants d'autres objets partagés d'identifiants comportant l'identifiant de l'objet dont ils dépendent et un identifiant spécifique. 2. Système d'environnement collaboratif virtuel suivant la 30 revendication 1 caractérisé en ce que les objets partagés possèdent un moyen d'envoyer des messages à leurs copies. 3. Système d'environnement collaboratif virtuel suivant l'une des revendications 1 ou 2 caractérisé en ce qu'il possède un moyen 35 de créer un objet partagé contenant d'autres objets partagés et 20 25 - 10 d'affecter à tous ces objets un identifiant unique en un seul échange d'informations.