Procédé de codage de paramètres d'animation d'un avatar, procédé de décodage, signal et dispositifs correspondants
La présente invention concerne de manière générale le domaine de la réalité virtuelle, et plus précisément le codage de paramètres d'animation d'avatars. Actuellement deux grands standards proposent une structure permettant d'animer un personnage en trois dimensions, ou avatar.
Le premier est la norme HAnim, d'après l'anglais Humanoid Animation, elle-même issue de la norme VRML, d'après l'anglais "Virtual Reality Modelling Language". Cette norme définit pour les avatars une structure articulaire hiérarchique appelée squelette, composée de segments. A chaque segment du squelette d'un avatar est associé une partie de l'enveloppe géométrique de l'avatar. Cette association correspond en fait à une segmentation de l'avatar en éléments amovibles, ce qui permet d'animer l'avatar en appliquant des transformations du type translation, rotation ou mise à l'échelle sur ces différents éléments d'un même squelette, ou chaîne articulée. La partie de l'enveloppe géométrique de l'avatar rattachée à un segment suit alors le mouvement de ce segment, de façon soit rigide, soit élastique grâce à une technique appelée "skinning". Aujourd'hui la plupart des outils d'infographie permettant de créer des avatars implémentent le squelette type défini par la norme HAnim.
Le second standard est la norme MPEG4 BBA, d'après l'anglais "Motion Picture Expert Group 4 Bone Based Animation", qui reprend les fondements de la norme HAnim, en particulier la segmentation des avatars en éléments amovibles. Mais la norme MPEG4 BBA ne définit pas de squelette type, elle offre plus de souplesse car elle permet de construire, en respectant le principe
de la norme HAnim, n'importe quel squelette, par exemple un squelette d'animal.
La norme MPEG4 BBA comprend elle-même une norme dérivée, la norme MPEG4 BAP, d'après l'anglais "Motion Picture Expert Group 4 Body Animation Parameter", qui définit des paramètres d'animation figés associés au squelette type de la norme HAnim. Cette norme dérivée est donc à nouveau moins souple que la norme MPEG4 BBA, qui ne se limite pas à un seul squelette et permet de définir différents paramètres d'animation pour un squelette donné. Pour assurer la compatibilité d'une animation entre des avatars différents, la norme HAnim a mis en place des contraintes sur la topologie du squelette type, et a défini une pose de repos des avatars avant animation. Ce principe est également repris par la norme MPEG4 BBA.
Ainsi, pour que l'échange de données d'animation entre plusieurs squelettes types définis par la norme HAnim soit possible, des niveaux d'articulation sont définis entre les segments des squelettes types. Ces niveaux d'articulation ont un dimensionnement et un positionnement très précis dans l'espace, ce qui permet de définir pour chaque squelette une position de repos. Dans cette position de repos, tous les paramètres d'animation tels que définis dans les normes HAnim, MPEG4 BAP ou MPEG4 BBA, ont une valeur de référence. Ainsi par exemple la valeur de translation d'un segment du squelette type dans sa position de repos est initialisée au vecteur nul.
L'animation d'un avatar se traduit alors par une succession de transformations effectuées à partir de cette position de repos du squelette type de l'avatar. Les paramètres d'animation des différents segments du squelette type sont exprimés dans des repères locaux à ces segments. Ainsi les paramètres de mise à l'échelle du squelette, ainsi que les paramètres de rotation liés au squelette, sont exprimés indépendamment du repère cartésien global en trois dimensions dans lequel la géométrie de l'avatar est définie.
Cependant, les paramètres de translation du squelette, même exprimés dans les repères locaux aux segments du squelette, ne sont pas totalement indépendants de la scène dans laquelle évolue l'avatar. En effet les longueurs des vecteurs de translation ne sont pas exprimées relativement au squelette, mais dans un système d'unités de mesure absolues. Elles sont en effet exprimées en mètres dans la norme HAnim, en millimètre dans la norme MPEG4 BAP, et dans la norme MPEG4 BBA aucune unité de mesure n'est préconisée pour les paramètres de translation. Cette disparité des définitions des unités des vecteurs de translation dans les différentes normes n'est pas pratique pour le concepteur d'animations de personnages en trois dimensions.
En outre, l'utilisation des niveaux d'articulation de la norme HAnim permet, pour tous les avatars construits en respectant les règles de ces niveaux, d'être animés avec le même flux d'animation compatible avec cette norme. Cependant, les flux d'animation contenant les paramètres d'animation sont souvent codés de manière séparée des données morphologiques des personnages. Ainsi dans la norme MPEG4 les données morphologiques des avatars et les paramètres d'animation sont dissociés, afin de pouvoir être codés et mis en flux séparément, ce qui soulève de nombreuses difficultés en terme d'implémentation. En effet, les paramètres d'animation ne sont pas totalement indépendants de la morphologie du personnage à animer. Notamment les mouvements de translations sont en général plus faibles lorsqu'ils sont effectués par un personnage de petite taille, que lorsqu'ils sont effectués par un personnage de plus grande taille.
La présente invention a pour but de résoudre les inconvénients de la technique antérieure en fournissant des procédés et des dispositifs de codage et de décodage, permettant d'exprimer les données d'animation d'un avatar indépendamment des dimensions de la scène dans laquelle il se trouve.
A cette fin, l'invention propose un procédé de codage de paramètres d'animation d'un personnage auquel sont associées des valeurs morphologiques, lesdits paramètres d'animation comprenant un paramètre de translation associé à au moins une partie dudit personnage, caractérisé en ce que pour coder une translation intrinsèque de ladite partie dudit personnage par un vecteur de translation, ledit paramètre de translation contient une valeur qui est fonction dudit vecteur et d'une desdites valeurs morphologiques.
Dans le procédé de codage selon l'invention, on différencie les translations intrinsèques au personnage à animer, comme par exemple une translation du bassin du personnage lorsqu'il marche, de celles qui lui sont extrinsèques, comme par exemple une translation due à un déplacement dans un ascenseur. Les paramètres de translation codant des translations intrinsèques sont exprimés, par ce procédé, relativement au squelette du personnage, en se basant sur des mesures anthropomorphiques calculées sur le squelette. Cela permet de coder des flux d'animation séparément des données de morphologie des avatars tout en respectant, dans la mise en œuvre de l'animation, la morphologie du personnage à animer. En effet, le codage selon l'invention permet de garder, pour un même flux d'animation, lorsqu'on change le personnage à animer, des translations réalistes par rapport aux dimensions du nouveau personnage, puisque l'on tient compte du caractère intrinsèque des translations qui sont relatives à ce nouveau personnage.
Il est de plus à noter que le procédé selon l'invention n'est pas limité au codage de personnages humains, mais est utilisable sur n'importe quel type d'objet animé pour lequel des paramètres de translation sont associés à des parties de cet objet. Le mot "personnage" est en effet utilisé dans cette demande au sens de tout objet articulé soumis à une animation.
Selon une caractéristique préférée du procédé de codage selon l'invention, un paramètre parmi lesdits paramètres d'animation permet de déterminer si ledit paramètre de translation code une translation intrinsèque audit personnage ou une translation extrinsèque audit personnage.
Ceci permet de coder dans le même flux d'animation, les mouvements relatifs à la scène en trois dimensions dans laquelle évolue le personnage, ou mouvements extrinsèques, et les mouvements relatifs au personnage, ou mouvements intrinsèques. Selon une caractéristique préférée du procédé de codage selon l'invention, lesdites valeurs morphologiques sont des longueurs de segments du squelette dudit personnage, ledit paramètre de translation est associé à un segment du squelette dudit personnage, et pour coder une translation intrinsèque dudit segment par un vecteur de translation, ledit paramètre de translation contient une valeur qui est proportionnelle audit vecteur et inversement proportionnelle à la longueur dudit segment.
Dans cette caractéristique du procédé de codage, le vecteur de translation associé à un segment du personnage est normalisé par la longueur de ce segment. Ceci permet de coder de manière fine les translations intrinsèques au personnage à animer, en utilisant une pluralité de ses paramètres morphologiques.
L'invention concerne aussi un procédé de décodage de paramètres d'animation d'un personnage auquel sont associées des valeurs morphologiques, lesdits paramètres d'animation comprenant un paramètre de translation associé à au moins une partie dudit personnage, caractérisé en ce que pour décoder une translation intrinsèque de ladite partie dudit personnage, la valeur dudit paramètre de translation est multipliée par un facteur d'une desdites valeurs morphologiques.
Selon une caractéristique préférée du procédé de décodage selon l'invention, lesdites valeurs morphologiques sont des longueurs de segments du squelette dudit personnage, ledit paramètre de translation étant associé à un segment du squelette dudit personnage, et pour décoder une translation intrinsèque d'un segment du squelette dudit personnage, ledit procédé comprend les étapes de: - Calcul de la longueur dudit segment,
- Obtention d'une estimation de la valeur de ladite translation dans un système d'unités de mesure absolues, par multiplication de la valeur dudit paramètre de translation par un facteur proportionnel à la longueur dudit segment précédemment calculée. L'invention concerne encore un signal véhiculant des paramètres d'animation d'un personnage auquel sont associées des valeurs morphologiques, lesdits paramètres d'animation comprenant un paramètre de translation contenant une information de translation de ladite partie dudit personnage sous la forme d'une valeur incluse dans ledit paramètre de translation, caractérisé en ce que ladite valeur a été évaluée en fonction d'une desdites valeurs morphologiques lorsque ladite translation est intrinsèque au personnage.
Selon une caractéristique préférée du signal selon l'invention, ledit signal véhicule un paramètre permettant de déterminer si ladite translation est une translation intrinsèque au personnage ou une translation extrinsèque au personnage.
L'invention concerne également un dispositif de codage de paramètres d'animation d'un personnage auquel sont associées des valeurs morphologiques, caractérisé en ce qu'il comporte des moyens adaptés à mettre en œuvre le procédé de codage selon l'invention.
L'invention concerne de plus un dispositif de décodage de paramètres d'animation d'un personnage auquel sont associées des valeurs morphologiques, caractérisé en ce qu'il comporte des moyens adaptés à mettre en œuvre le procédé de décodage selon l'invention. Le procédé de décodage, ainsi que le signal et les dispositifs, présentent des avantages analogues à ceux du procédé de codage selon l'invention.
L'invention concerne encore un programme d'ordinateur comportant des instructions de mise en œuvre des procédés précédemment présentés, lorsque ceux-ci sont exécutés sur un ordinateur.
D'autres caractéristiques et avantages apparaîtront à la lecture d'un mode de réalisation préféré décrit en référence aux figures dans lesquelles :
- la figure 1 représente un avatar sur lequel est appliqué un squelette type de la norme HAnim, - la figure 2 est un diagramme illustrant les utilisations du procédé de codage et du procédé de décodage suivant l'invention sur un flux de transformations successives,
- la figure 3 illustre des étapes du procédé de codage selon l'invention,
- la figure 4 illustre des étapes du procédé de décodage selon l'invention.
Selon un mode de réalisation de l'invention, le procédé de codage et le procédé de décodage selon l'invention utilisent la norme MPEG 4 BBA pour le codage et le décodage de paramètres d'animation déterminés à partir d'un avatar A représenté à la figure 1. Il est à noter que bien que ces paramètres d'animation soient déterminés à partir de l'avatar A, ils sont ensuite réutilisés pour animer d'autres avatars ayant le même squelette type que l'avatar A, comme décrit ci-après.
Ce mode de réalisation a l'avantage d'utiliser sans modifications de paramètres une norme existante, mais d'autres de modes de réalisation, par exemple intégrant des paramètres supplémentaires à une norme existante de codage de paramètres d'animation, sont envisageables. De plus l'utilisation des procédés selon l'invention n'est pas limitée à des personnages ayant le squelette type défini par la norme HAnim. En effet les procédés selon l'invention sont utilisables sur tout type d'avatar, avec des critères morphologiques potentiellement différents des longueurs de segment du squelette type, par exemple la hauteur ou la largeur de l'avatar.
On associe à l'avatar A à animer un squelette type défini par la norme HAnim. Ce squelette est représenté à la figure 1 dans la position de repos définie par cette norme. Il est composé de segments et de niveaux d'articulation, qui permettent l'animation de la géométrie de l'avatar. Ainsi les mouvements de l'avant-bras gauche de l'avatar A sont calculés à partir des
transformations appliquées sur le segment Bk, et les mouvements de la jambe droite de l'avatar A sont calculés à partir des transformations appliquées sur le segment Bi. Aux niveaux d'articulation Nk et Ni correspondants respectivement au coude gauche et au genou droit de l'avatar, sont associés les paramètres de rotation correspondant respectivement à l'avant-bras gauche et à la jambe droite de l'avatar.
Le codage et le décodage de l'animation de l'avatar A, ou d'autres avatars ayant le même squelette type, sont effectués par les procédés de codage et de décodage selon l'invention suivant les étapes E1 à E4 représentées à la figure 2.
L'avatar A subit une succession de transformations TR0 à TRn au cours du temps.
Dans une première étape E1 du procédé de codage suivant l'invention, les transformations successives TRj de l'avatar sont codées dans un flux d'animation composé de structures "SBBone" successives pour chaque segment B1 du squelette de l'avatar A. Chaque structure "SBBone", dont la nomenclature est définie par la norme MPEG4 BBA et reproduite à l'Annexe 1 , code les transformations d'un segment identifié par le numéro "bonelD" par rapport à sa position de repos spécifiée par la norme HAnim.
Les valeurs des paramètres d'animation de la structure "SBBone" de l'Annexe 1 correspondent aux valeurs initiales des paramètres de transformation par rapport à la position de repos de l'avatar. Ces paramètres d'animation sont exprimés dans le repère local au segment B1, l'origine de ce repère local étant défini par le paramètre "center". Cette origine correspond en fait à un niveau d'articulation du squelette type. Le paramètre "rotation" par exemple vaut (0 0 1 0) se qui indique une rotation d'angle nul par rapport à l'axe (0 0 1 ) dans ce repère local.
Il est à noter que dans ce mode de réalisation selon l'invention, le flux d'animation traité par le procédé de codage selon l'invention ne contient que des transformations intrinsèques à l'avatar, les transformations extrinsèques
au personnage étant codées séparément dans un fichier au format BIFS, d'après l'anglais "Blnary Format for Scènes", qui code les paramètres globaux de la scène MPEG4 à animer.
Dans une variante de réalisation de l'invention, un paramètre supplémentaire est par exemple ajouté aux structures "SBBone" d'un flux d'animation, permettant de déterminer si le paramètre "translation" d'une structure "SBBone" code une translation intrinsèque ou extrinsèque à l'avatar A. Dans cette variante, un seul flux d'animation est ainsi utilisé pour coder des transformations extrinsèques et intrinsèques à l'avatar A, le paramètre "translation" n'étant alors modifié de la manière décrite à l'étape E2 que pour les translations intrinsèques à l'avatar.
Ainsi qu'indiqué plus haut, dans le mode de réalisation principal de l'invention décrit ici, aucun paramètre supplémentaire n'est ajouté à la norme MPEG4 BBA. Dans cette première étape E1 donc, le codage des paramètres d'animation dans le flux d'animation est effectué en respectant la norme MPEG4 BBA dans la signification de chacun des paramètres d'animation.
Dans une seconde étape E2 du procédé de codage selon l'invention, les valeurs des paramètres de translation du flux d'animation obtenu à l'étape E1 sont modifiées afin de tenir compte de la nature relative des translations intrinsèques de l'avatar A. Pour cela, chaque structure "SBBone" du flux d'animation est traitée suivant les étapes ai à a3 de la figure 3:
- L'étape ai est la lecture du paramètre "endpoint" de la structure "SBBone" considérée, codant les paramètres d'animation d'un segment B1. Ce paramètre "endpoint" contient les coordonnées de l'extrémité du segment B1 qui n'est pas l'origine du repère local au segment B1.
- L'étape suivante a2 est le calcul de la longueur L1 du segment B1. Cette longueur est déterminée en calculant la norme du vecteur contenu dans le paramètre "endpoint" précédemment lu.
- L'étape suivante a3 est la modification de la valeur de translation T1 contenue dans le paramètre "translation", qui exprime une translation dans un système d'unités de mesure absolues, pour la remplacer par une valeur de translation TN1 relative à l'avatar A, et plus précisément au segment B1. La valeur de translation relative TN1 correspond en fait à la normalisation de la valeur de translation absolue T1 par la longueur du segment B1, selon l'équation suivante:
où K est un facteur de normalisation. Le facteur de normalisation K permet simplement d'exprimer TN1 sur une échelle comprise entre 0 et 10 par exemple. Il est le même pour tous les segments B1 et est fixé à l'avance par les utilisateurs des procédés selon l'invention. De cette manière aucun paramètre spécifique n'est nécessaire pour coder le facteur de normalisation K dans le flux d'animation. Le codage des paramètres d'animation de l'avatar A selon les étapes
E1 et E2 est effectué dans un dispositif de codage, par exemple dans un module logiciel d'un moteur d'animation. Ce dispositif de codage code ensuite binairement les paramètres d'animation ainsi modifiés dans un flux au format BIFS, afin de compresser les données d'animation de façon standard. Afin de pouvoir réutiliser ces paramètres d'animation pour d'autres avatars de même squelette type que l'avatar A, le concepteur de l'animation adapte les champs "endpoint" des structures "SBBone" de l'avatar A au squelette d'autres avatars ayant le même squelette type. En effet, les paramètres de translation étant codés de manière relative, seuls les champs "endpoint" codant la longueur des segments des nouveaux avatars sont à modifier. Le dispositif de codage crée alors d'autres flux BIFS correspondant aux paramètres d'animation de ces autres avatars.
Les flux d'animations ainsi obtenus sous forme de fichiers BIFS à la fin de l'étape E2 sont transmis sur un réseau de communication, à un moteur d'animation distant du précédent, de manière séparée des données
morphologiques de l'avatar A, et éventuellement d'autres avatars. Les signaux d'information correspondant à ces flux d'animation véhiculent donc des paramètres d'animation, pour lesquels les paramètres de translation tiennent compte des valeurs morphologiques des personnages à animer. Dans ce mode de réalisation de l'invention, ces signaux d'information ne transmettent que des paramètres d'animation intrinsèques aux avatars et les valeurs morphologiques prises en compte sont les longueurs des segments du squelette type de ces avatars.
En variante, les signaux d'information transmettent à la fois des paramètres d'animation intrinsèques aux avatars, et des paramètres d'animation extrinsèques aux avatars. Dans ce cas les signaux d'information véhiculent également chacun un paramètre indiquant la nature intrinsèque ou extrinsèque des paramètres de translation transmis.
Dans une troisième étape E3, on suppose que le moteur d'animation distant reçoit des données morphologiques d'un nouvel avatar différent de l'avatar A, mais présentant le même squelette type, ainsi que le flux d'animation BIFS associé. Il est à noter que les étapes E3 et E4 décrites ci- après sont toutefois transposables au cas où le moteur d'animation reçoit des données morphologiques de l'avatar A et le flux d'animation correspondant à l'avatar A. En effet le flux d'animation BIFS reçu dans les deux cas est le même, seul les valeurs des champs "endpoint" sont différentes, puisqu'elles dépendent de l'avatar à animer.
Le flux d'animation BIFS reçu à l'étape E3 est décompressé par le client distant. Le procédé de décodage selon l'invention est alors utilisé pour effectuer une animation du nouvel avatar, à partir des données qui ont été décompressées à partir du fichier BIFS transmis précédemment. Le procédé de décodage selon l'invention est implémenté dans un module spécifique du moteur d'animation distant.
Pour cela chaque structure "SBBone" correspondant à un segment B', du squelette type du nouvel avatar dans le fichier, est traitée suivant les étapes de décodage b1 à b3 de la figure 4:
- L'étape b1 est la lecture du paramètre "endpoint" de la structure "SBBone" considérée, codant les paramètres d'animation du segment B',.
- L'étape suivante b2 est le calcul de la longueur L', du segment B',. Cette longueur est déterminée en calculant la norme du vecteur contenu dans le paramètre "endpoint" précédemment lu. - L'étape suivante b3 est la modification de la valeur de translation relative TN1 contenue dans le paramètre "translation", pour la remplacer par une valeur de translation T', correspondante exprimée dans un système d'unités de mesure absolues. La valeur de translation T', est calculée selon l'équation suivante: T1 =JZiUU
K où K est le facteur de normalisation utilisé à l'étape E2. Les données ainsi décodées à la fin de l'étape E3 respectent la norme MPEG4 BBA pour le codage des paramètres d'animation du nouvel avatar.
L'étape E4 est la lecture des données décodées à l'étape E3 par le moteur d'animation distant, et l'animation du nouvel avatar avec les paramètres d'animation contenus dans ces données. Ces paramètres d'animation respectent la morphologie du nouvel avatar, tout en ayant été conçus à partir d'un avatar initial A différent. Ainsi les paramètres de translation du bassin du nouvel avatar lorsqu'il marche sont adaptés à ses dimensions.
ANNEXE 1
SBBonej #%NDT=SFSBBoneNode, SF3DNode, SF2DNode eventIN MF3DNode addChildren eventIN MF3DNode removeChildren exposedField SFInt32 bonelD 0 exposedField MFInt32 skinCoordlndex [] exposedField MFFIoat skinCoordWeight [] exposedField SFVec3f endpoint 001 exposedField SFInt32 falloff 1 exposedField MFFIoat sectionPosition [] exposedField MFFIoat sectionlnner [] exposedField MFFIoat sectionOuter [] exposedField SFInt32 rotationOrderO exposedField MFNode children [] exposedField SFVec3f center 000 exposedField SFRotation rotation 0010 exposedField SFVec3f translation 000 exposedField SFVec3f scale 111 exposedField SFRotation scaleOrientation 0010 exposedField SFInt32 ikChainPosition 0 exposedField MFFIoat ikYawLimit [] exposedField MFFIoat ikPitchLimit [] exposedField MFFIoat ikrollLimit [] exposedField MFFIoat ikTxLimit [] exposedField MFFIoat ikTyLimit [] exposedField MFFIoat ikTzLimit []