Procédé d'animation temporelle d'un avatar à partir d'un signal source comprenant des informations d'aiguillage, dispositif, programme d'ordinateur, moyen de stockage et signal source correspondants.
1. Domaine de l'invention Le domaine de l'invention est celui de la réalité virtuelle, et notamment de l'animation d'avatars dans un environnement virtuel.
De manière générale, on utilise un métalangage (aussi appelé par la suite langage d'animation) pour animer un avatar, par exemple de type humanoïde, d'une posture de départ vers une posture d'arrivée, un humanoïde correspondant à une représentation tridimensionnelle (2D) ou tridimensionnelle (3D) d'un être humain dans un environnement virtuel.
Par métalangage, on entend, selon une définition communément admise, tout type de langages de programmation permettant de structurer d'autres langages. L'invention concerne plus précisément une technique d'animation temporelle d'avatars, mettant en œuvre un ensemble de métalangages différents destiné à animer un avatar, par exemple de type humanoïde ou personnage virtuel (2D ou 3D), indépendamment de la base temporelle utilisée.
L'invention s'applique notamment, mais non exclusivement, dans des systèmes de réalité virtuelle dans le cadre de services, de jeux, de forums de discussion, ou encore pour des personnes utilisant le langage des signes pour communiquer.
2. L'art antérieur
Généralement, les comportements et les mouvements d'un avatar sont pilotés par des stimuli comme le langage (voix) ou l'environnement sonore.
De làçon plus précise et comme illustré sur la figure 1, la chaîne fonctionnelle classique d'animation d'un avatar 10 comprend un signal source 11 représentant le ou les stimuli. Ces stimuli sont par exemple des phrases, sous forme de texte ou bien de son, destinées à être prononcées par l'avatar. Par exemple dans le cas particulier d'un langage d'animation de type AML (Avatar
Markup Langage, en anglais), le stimulus est un script AML comprenant du texte et/ou du son et des données de type FAPs (Facial Animation Parameters) et BAPs (Body Animation Parameters).
Un module de traitement 12 reçoit en entrée le signal source 11 et génère en sortie un flux de données 120 comprenant : des données bas niveau 121 (généralement il s'agit d'informations du type phonèmes et durées) destinées à l'animation labiale (dans le cas particulier du langage AML, les données de bas niveaux sont les données de bases FAPs et BAPs) ; et - des données haut niveau 122 (aussi appelées par la suite marqueurs de comportement) estampillées temporellement, et destinées à l'animation des autres parties de l'avatar (les yeux, les bras, les jambes...). On rappelle que la connaissance du contexte au sens large est nécessaire pour produire des comportements non verbaux. Il est donc classique que ces comportements non verbaux soient localisés temporellement en amont du traitement de la parole pour être ensuite présents sous forme de marqueurs dans le flux de données 120 obtenu en sortie du module de traitement 12.
Il convient de préciser que par marqueur on entend une balise (« tag » en anglais) d'un langage quelconque et notamment, mais non exclusivement, une balise au sens XML (définissant notamment un temps de début, un nom d'un comportement haut niveau prédéfini).
Il est classique que le module de traitement 12 soit spécifique à un langage donné. Plus particulièrement le module de traitement 12 utilise un langage adapté pour traiter les données bas niveau comprises dans le stimulus source 11. Dans le cas particulier du langage AML, le module de traitement 12 comprend un processeur AML, un moteur de synthèse et un générateur de FAPs et de BAPs aux normes MPEG-4.
Les données bas niveau 121 et les données haut niveau 122 sont ensuite transmises vers un module d'animation 13 capable d'interpréter à la fois les
informations pour l'animation labiale et les marqueurs de comportement non verbaux. Dans le cas particulier du langage AML, le module d'animation 13 est un module d'animation du type MPEG-4 pouvant interpréter les FAPs au format MPEG-4. II est bien connu de l'art antérieur qu'un utilisateur a la possibilité d'utiliser une donnée haut niveau pour envoyer une méta-donnée, par exemple, dans le but de déclencher un son (par exemple dans le cas particulier du langage SSML).
Le module d'animation 13 coopère avec un module de rendu 14 (2D ou 3D) permettant la visualisation des comportements et des mouvements de l'avatar, par exemple sur un écran (non représenté).
Il convient de préciser que les marqueurs de comportement non verbaux sont écrits dans un format spécifique au langage d'animation utilisé par le module d'animation 13. Ainsi depuis quelques années, de nombreux langages d'animation et de synchronisation ont été développés pour animer de manière naturelle un avatar en temps réel. Les langages d'animations permettent de contrôler le visage (sourire, hochement de tête...), le corps (signe de la main, flexion des jambes...) et la voix de l'avatar, parmi ces langages, on trouve par exemple l'AML (Avatar Markup Langage, en anglais), le MRUML (Multimodal Représentation Utterance Markup Langage, en anglais) ou encore l'EML (Emotion Markup Langage, en anglais) regroupant le FAML (Facial Animation Markup Language, en anglais), le BAML (Body Animation Markup Language, en anglais) et le SML (Speech Markup Language, en anglais). Les langages d'animation de type « story board » (aussi appelés langages de synchronisation), quant à eux, permettent de synchroniser des événements (visages, corps, voix...) avec des médias classiquement utilisés dans le cadre d'interactions humaines tels que le son, le texte, etc.... Parmi ces langages, on trouve par exemple le SMIL (Synchronisation Markup Langage, en anglais) qui est un langage formel de synchronisation multimédia ou le SSML
(Speech Synthesis Markup Language, en anglais) qui est un langage formel dédié à la synthèse vocale.
Ces langages d'animation ont représenté un progrès important dans le mécanisme de distinction et de synchronisation entre les comportements verbaux et non verbaux d'un avatar. Cependant, ils présentent un certain nombre d'inconvénients.
Tout d'abord, de tels langages ne permettent pas toujours une grande flexibilité dans le comportement de l'avatar ni ne reflètent la dépendance entre différentes informations, par exemple, l'association d'une information d'émotion avec des gestes communicatifs.
Un autre inconvénient majeur de ces langages d'animation, réside dans le fait que la majorité de ces langages ont été développés pour des applications spécifiques : langue des signes (SiGML), reproduction de la cinématique des gestes (MURML), présentation d'information multimodale (MPML), information sémantique (RRL), comportement communicatif (APML, AML et CML), synchronisation verbal et non-verbal (BEAT). Ainsi, un grand nombre de langages d'animation ne prennent en charge qu'une partie de l'avatar soit la tête soit le corps mais pas nécessairement les deux.
Par ailleurs, le développement éparpillé de ces différents langages ne favorise pas forcément leurs compatibilités.
En outre, et en particulier pour les raisons exposées ci-dessus, la multiplication de ces langages ne facilite pas la mise en place d'un consensus et la mise au point d'un langage universel qui serait utilisé par la majorité des acteurs de la réalité virtuelle et du multimédia. Bien qu'il y ait actuellement une volonté de créer des langages d'animation de très large envergure (HumanML et VHML) incluant plusieurs sous-langages pour chaque modalité (parole, visage, geste...), ces nouveaux langages présentent néanmoins les désavantages d'être complexes à mettre en œuvre, et coûteux, notamment en terme de mémoire. 3. Objectifs de l'invention
L'invention a notamment pour objectif de pallier ces inconvénients de l'art antérieur. Plus précisément, un objectif de l'invention est de fournir une technique d'animation d'un avatar en temps réel qui soit efficace et simple à mettre en œuvre, sans devoir développer de nouveaux métalangages coûteux, notamment en terme de mémoire.
Un autre objectif de l'invention est de proposer une telle technique permettant d'exploiter en parallèle un ou plusieurs métalangages existants, indépendamment de la base temporelle utilisée.
L'invention a encore pour objectif de fournir, dans un mode de réalisation particulier, une telle technique d'animation présentant des mouvements réalistes et fluides de l'avatar, pouvant s'appliquer aux humanoïdes.
Un autre objectif de l'invention est de proposer une telle technique qui soit compatible avec les applications existantes, notamment en terme d'environnement virtuel collaboratif. 4. Caractéristiques essentielles de l'invention
Ces objectifs, ainsi que d'autres qui apparaîtront par la suite, sont atteints à l'aide d'un procédé d'animation temporelle d'un avatar dans un environnement virtuel. Un tel procédé selon l'invention comprend avantageusement les étapes suivantes : - réception d'un signal source comprenant des marqueurs de comportement et des informations d'aiguillage associées auxdits marqueurs ; aiguillage, permettant de diriger chacun des marqueurs vers un module d'animation choisi, parmi une pluralité de modules d'animation, en fonction desdites informations d'aiguillage, chaque module d'animation utilisant un langage d'animation, de façon que lesdits au moins deux modules d'animation fonctionnent en parallèle pour animer ensemble l'avatar.
Ainsi, on prévoit avantageusement d'utiliser des marqueurs de comportements et des informations d'aiguillages spécifiques aux langages
d'animations utilisés par les modules d'animations.
L'invention propose donc une parallèlisation des traitements sur plusieurs modules d'animation. Cette parallèlisation permet ainsi au mouvement global de l'avatar, par exemple un humanoïde, d'être beaucoup plus fluide, et par conséquent plus réaliste, du fait que la chaîne d'animation de l'avatar dispose d'une grande souplesse de fonctionnement.
La présente invention couvre un premier cas dans lequel au moins deux modules d'animation utilisent des langages d'animation distincts, de façon à cumuler les avantages de chacun de ces langages. L'invention couvre également un second cas dans lequel au moins deux modules d'animation utilisent le même langage d'animation.
Selon un aspect avantageux de l'invention, chacun des modules d'animation utilise un langage d'animation distinct.
Ainsi, il est possible d'avoir une configuration optimale dans laquelle on cumule les avantages de chacun des langages d'animation utilisés.
De façon préférentielle, le procédé de l'invention comprend en outre une étape de combinaison pondérée de données d'animation générées par au moins deux modules d'animation animant une même partie de l'avatar.
Dans un cas particulier de pondération, les données d'animation générées par un premier module d'animation peuvent être prioritaires (pondération égale à 1) par rapport à celles générées par un second module d'animation (pondération égale à 0).
Dans un mode de réalisation préférentiel de l'invention, une information d'aiguillage relative à un marqueur donné comprend un identifiant de langage d'animation, et ladite étape d'aiguillage consiste à transmettre ledit marqueur donné à chaque module d'animation utilisant le langage identifié par ledit identifiant de langage.
Dans une variante du mode de réalisation préférentiel de l'invention, une information d'aiguillage relative à un marqueur donné comprend un identifiant de module d'animation, et ladite étape d'aiguillage consiste à transmettre ledit
marqueur donné au module d'animation identifié par ledit identifiant de module d'animation.
De façon avantageuse, chaque marqueur comprend une information d'aiguillage dudit marqueur. Préférentiellement, l'information d'aiguillage est un préfixe d'une commande contenue dans ledit marqueur ou d'une référence à un fichier qui contient une description détaillée d'une action associée audit marqueur.
L'invention concerne également un procédé de génération d'un signal source, destiné à être utilisé dans un procédé d'animation temporelle d'un avatar dans un environnement virtuel, comprenant une étape d'insertion dans ledit signal source de marqueurs de comportement et d'informations d'aiguillage associées auxdits marqueurs.
Avantageusement, chaque marqueur comprend une information d'aiguillage dudit marqueur. D'une façon générale, le signal source de l'invention comporte toutes les caractéristiques relatives aux marqueurs et aux informations d'aiguillage, notamment celles qui apparaissent ci-dessus, qui permettent la mise en œuvre du procédé précité d'animation temporelle d'un avatar dans un environnement virtuel.
L'invention concerne également un dispositif d'animation temporelle d'un avatar dans un environnement virtuel, à partir d'un signal source, comprenant : des moyens de réception d'un signal source comprenant des marqueurs de comportement et des informations d'aiguillage associées auxdits marqueurs ;
- une pluralité de modules d'animation utilisant chacun un langage d'animation ; des moyens d'aiguillage, permettant de diriger chacun des marqueurs vers un module d'animation choisi, parmi ladite pluralité de modules d'animation, en fonction desdites informations d'aiguillage, de façon que lesdits au moins deux modules d'animation fonctionnent en parallèle pour animer ensemble l'avatar.
L'invention concerne en outre un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé précité, lorsque ledit programme est exécuté sur un ordinateur.
L'invention concerne aussi un moyen de stockage, éventuellement totalement ou partiellement amovible, lisible par un ordinateur, stockant un jeu d'instructions exécutables par ledit ordinateur pour mettre en œuvre le procédé précité.
L'invention concerne encore un signal source destiné à être utilisé dans un procédé d'animation temporelle d'un avatar dans un environnement virtuel, ledit signal source comprenant des marqueurs de comportement, et comprenant en outre des informations d'aiguillage permettant la mise en œuvre d'une étape d'aiguillage de chacun des marqueurs vers un module d'animation choisi, parmi une pluralité de modules d'animation, en fonction desdites informations d'aiguillage, chaque module d'animation utilisant un langage d'animation, de façon que lesdits au moins deux modules d'animation fonctionnent en parallèle pour animer ensemble l'avatar.
L'invention concerne également un moyen de stockage, éventuellement totalement ou partiellement amovible, lisible par un ordinateur, stockant un signal source. 5. Liste des figures
D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1, déjà commentée en relation avec l'art antérieur, présente la chaîne fonctionnelle classique d'animation d'un avatar ; la figure 2 présente une chaîne fonctionnelle d'animation d'un avatar d'un mode de réalisation particulier du procédé d'animation de l'invention ; - la figure 3 représente un organigramme d'un mode de réalisation
particulier du procédé d'animation de l'invention ; et la figure 4 présente la structure d'un mode de réalisation particulier d'un dispositif d'animation temporelle d'un avatar selon l'invention. 6. Description d'un mode de réalisation de l'invention Le principe général de l'invention repose sur une technique d'aiguillage de données, entre un module de traitement d'un signal source et des modules d'animation, permettant d'animer de manière réaliste et fluide un avatar en temps réel, chaque module d'animation pouvant notamment contrôler une partie spécifique d'un tel avatar. La technique d'aiguillage de données selon l'invention peut notamment faire cohabiter différents langages d'animation. Une telle technique peut notamment utiliser en parallèle plusieurs modules d'animation mettant en œuvre des langages d'animation identiques et/ou distincts.
Ce procédé d'animation temporelle selon l'invention fait notamment intervenir un module d'aiguillage placé entre le module de traitement d'un signal source et les modules d'animation.
Cette approche est notamment illustrée en figure 2. Un module de traitement 22 reçoit en entrée un signal source 21 comprenant des informations bas niveau, des marqueurs de comportement non verbaux et des informations d'aiguillage.
Ce module de traitement 22 génère en sortie un flux de données 220 comprenant : des données bas niveau 221 (généralement il s'agit d'informations du type phonèmes et durées) destinées à l'animation labiale ; et - des marqueurs de comportement non verbaux 222 estampillés temporellement et associés à des informations d'aiguillage 223. De telles données sont destinées à l'animation des autres parties de l'avatar (les yeux, les bras, les jambes...).
Les données bas niveau 221 et les marqueurs de comportement 222 sont ensuite transmis vers un module d'aiguillage 23. De façon avantageuse, le
procédé selon l'invention comprend une étape préalable de configuration du module d'aiguillage 23. Cette étape de configuration permet de définir dans le module d'aiguillage 23 une table de correspondance (non représentée). Une telle table contient des triplets d'informations associant chacun un langage d'animation, un module d'animation et une information d'aiguillage (aussi appelée par la suite préfixe). Cette étape de configuration consiste par exemple en la lecture d'un fichier de type XML se présentant par exemple sous la forme suivante :
<AnimationFilterDescription> <AnimationLanguage id="l" name="LanguageX" prefix="MarkerX :">
<AnimationLanguage id="2" name="LanguageY" prefix="MarkerY :">
<AnimationLanguage id="0" name="DefaultLanguage" prefix=""> </AnimationFilterDescription> où, dans chaque triplet d'informations :
« id » est un identifiant d'un langage d'animation ; et « name » est le nom de ce langage d'animation ; et
« prefix » est une information d'aiguillage pour les marqueurs écrits dans ce langage. On notera que les champs « id » et « prefix » sont obligatoires pour configurer correctement le module d'aiguillage 23, tandis que, le champ « name » est optionnel.
Grâce à cette étape préalable de configuration, le module d'aiguillage 23 est en mesure de repérer l'information d'aiguillage associée à chaque marqueur de comportement 222 et de diriger chaque marqueur vers le module d'animation correspondant.
Dans ce mode de réalisation particulier, l'aiguillage est donc tel que chaque marqueur est dirigé vers le module d'animation utilisant le langage dont l'identifiant « id » et éventuellement le nom « name », sont compris dans le même triplet d'informations que celui comprenant le préfixe de ce marqueur.
La figure 3 illustre l'enchaînement successif de ces différentes étapes d'aiguillage.
Une phase de configuration comprend une première étape 30, au cours de laquelle le module d'aiguillage lit un fichier de type XML définissant une table de correspondance.
Une phase de réception comprend une étape 31, au cours de laquelle on reçoit un signal source comprenant des marqueurs de comportement non verbaux et des informations d'aiguillage associées aux marqueurs.
Lors de l'étape 32, le module de traitement sépare les données bas niveaux des marqueurs, et estampille temporellement chaque marqueur.
Une phase d'identification comprend une étape 33, au cours de laquelle le module d'aiguillage distingue les deux types de données compris dans le flux de données entrant, de sorte qu'en présence de données bas niveau on passe à une étape 34, en revanche, en présence de marqueurs on passe à une étape 35. Lors de l'étape 34, les données bas niveau sont transmises à un moteur d'animation labiale 24.
Les étapes suivantes sont relatives à une phase d'aiguillage des marqueurs vers les modules d'animation correspondants 25 à N.
Lors de l'étape 35, le module d'aiguillage lit la table de correspondance de façon à extraire, en fonction du préfixe associé à chaque marqueur, les informations préenregistrées relatives à l'identifiant d'au moins l'un des langages d'animation et donc implicitement au module d'animation qui utilise ce langage d'animation.
Enfin lors de l'étape 36, chaque marqueur est transmis vers le module d'animation précédemment identifié (étape 35).
Dans un mode de réalisation préférentiel de l'invention, chaque module d'animation agit sur une partie différente de l'avatar. En outre, chaque module d'animation change la valeur d'un ou plusieurs paramètres, par exemple des angles, contenus dans un graphique de scène utilisé par le module de rendu 26.
Dans un mode de réalisation préférentiel de l'invention, tous les modules d'animation (24, 25, N) coopèrent avec un seul module de rendu 26 permettant la visualisation des comportements et des mouvements de l'avatar, par exemple sur un écran (non représenté). Un tel procédé selon l'invention permet ainsi d'animer de manière réaliste et fluide un avatar en temps réel.
Lors de ces étapes d'aiguillage, le module d'aiguillage 23 peut traiter un signal source tel qu'un fichier SSML, par exemple sous la forme :
<speak > Go from <mark name=" MarkerX : CommandLanguageX"/> hère, to
<mark name=" MarkerY : CommandLanguageY "/> there! </speak>
De façon avantageuse, le procédé selon l'invention peut par exemple utiliser simultanément le langage haut niveau BAML pour animer le corps du personnage et les paramètres bas niveau FAPs issus de la norme MPEG4 pour la tête du personnage :
Go from <mark name=" AML : <left-arm-front amount^"medium" duration="500ms'7>
"/> hère, to <mark name=" MPEG4 : FAP2="8" 7> there! Dans une variante du mode de réalisation préférentiel précité, le module d'aiguillage 23 peut traiter un fichier SMIL, par exemple sous la forme : <smil> <body> <seq> <par>
<audio title="Go_fom_here_to_there" src=" Speech.wav" begin="Os"/> <video title=" CommandLanguageXDescription" id="MarkerX : CommandLanguageX" begin="ls"/>
<video title=" CommandLanguageYDescription" id="MarkerY : CommandLanguageY" begin="4s"/>
</par> </seq> </body> </smil> Dans les deux modes de réalisation de l'invention précités,
CommandLanguageX ou CommandLanguageY spécifie soit une commande explicite soit une référence à un fichier qui contient une description détaillée en languageX ou languageY de l'action associée à la donnée haut niveau.
À l'instar du langage SSML on peut utiliser simultanément le langage haut niveau BAML et les FAPs comme dans l'exemple suivant: <smil> <body> <seq> <par> <audio title="Go_fom_here_to_there" src=" Speech.wav" begin="0s"/>
<video title- ' Animation AML " id=" AML : <left-arm-front amount="medium" duration="500ms"/> " begin="ls"/>
<video title=" Animation MPEG4 " id=" MPEG4 : FAP2="8" " begin="4s"/> </par>
</seq> </body> </smil>
La figure 4 présente enfin la structure d'un dispositif d'animation temporelle d'un avatar 42 selon l'invention, qui comprend une mémoire 422, et une unité de traitement 421 équipée d'un microprocesseur μP, qui est piloté par un programme d'ordinateur (ou application) 423. L'unité de traitement 421 reçoit en entrée un signal source 41 comprenant des informations bas niveau, des marqueurs de comportement non verbaux et des informations d'aiguillage. Le microprocesseur μP traite ce signal source, selon les instructions du programme
423, pour générer des résultats représentatifs du comportement et des mouvements de l'avatar, qui sont transmis vers un écran d'affichage 43.
En résumé, l'invention propose un procédé d'animation temporelle d'un avatar à partir d'un signal source comprenant des marqueurs de comportement non verbaux (marqueurs de haut niveau) et des informations d'aiguillage. Ce procédé présente de nombreux avantages, dont celui d'utiliser efficacement en parallèle plusieurs métalangages, de façon à donner plus de vie et de réalisme à un avatar, notamment un humanoïde, au cours de son animation. L'invention s'applique notamment à tout type d'environnement virtuel, quelle que soit la finalité de l'environnement virtuel : services, jeux, forums de discussion, réalité augmentée, personnes utilisant le langage des signes pour communiquer...