Brevet FR2851716A1 — publié le 20040827

PROCEDE POUR LA GESTION DE DESCRIPTIONS D'ANIMATIONS GRAPHIQUES DESTINEES A ETRE AFFICHEES, RECEPTEUR ET SYSTEME METTANT EN OEUVRE CE PROCEDE DOMAINE TECHNIQUE GENERAL - ART ANTERIEUR La présente invention est relative aux techniques de descriptions d'animations graphiques. Plus particulièrement, l'invention propose un procédé pour la gestion de scènes graphiques, ainsi qu'un système de stockage et un récepteur pour la mise en oeuvre de ce procédé. Actuellement, plusieurs formats de représentation d'animations graphiques existent. On peut distinguer principalement deux types d'approches : l'une est basée sur une représentation sous forme d'arbre de l'agencement spatio-temporel des objets graphiques qui permet une interaction fine entre les objets et les sous- objets graphiques mais nécessite un traitement intermédiaire avant l'affichage proprement dit (i.e., tramage ou rasterization selon la terminologie anglo-saxonne généralement utilisée) ; l'autre approche est basée sur un mode de rendu par trame de formes polygonales, et utilise des primitives simples qui assurent un rendu rapide. La première approche correspond par exemple à des formats de description graphique comme ceux utilisés par W3C/SVG et MPEG- 4/System/BIFS. Cette première approche ne permet toutefois pas un rendu graphique optimal. Elle induit en outre un surcoût de calcul pour certaines animations qui ne nécessiteraient pas l'utilisation de cette technique. La seconde approche permet un rendu efficace des animations graphiques ; elle ne permet cependant pas d'avoir une interaction fine avec les sous-objets graphiques composant l'animation graphique et le rendu dépend des caractéristiques de visualisation du récepteur. Cette deuxième approche correspond par exemple à des formats graphiques comme SWF de Macromedia ou les display list couramment utilisées en visualisation 3D par des outils comme Openlnventor. PRESENTATION GENERALE DE L'INVENTION Un but de l'invention est de proposer une technique qui permet de pallier les inconvénients des techniques de représentations graphiques actuelles, lesquelles souffrent soit d'un manque d'interactivité, soit d'un manque d'efficacité dans le rendu graphique. Elle propose à cet effet un procédé pour la gestion de descriptions d'animations graphiques destinées à être affichées, caractérisé en ce qu'une animation graphique est définie par des données décrivant un contenu d'agencement spatio-temporel d'objets graphiques à afficher, ainsi que par des données décrivant des primitives correspondant à au moins un de ces objets graphiques, les données décrivant un contenu d'agencement spatio-temporel et les données décrivant des primitives d'objets graphiques étant mémorisées indépendamment. On notera que la technique proposée permet en particulier, en mixant plusieurs niveaux de représentation graphique vectorielle, de gagner de la place mémoire en permettant l'utilisation de la représentation graphique la plus adaptée à une animation donnée. De nombreuses représentations ou animations graphiques ne nécessitent en effet pas d'être décrites sous forme de composition de primitives vectorielles simples, mais peuvent bénéficier d'une représentation sous forme d'une liste de primitives de rendu graphique plus bas-niveau. Des primitives bas niveau sont par exemple du type {action, polygone, durée} où l'action est l'ajout, le remplacement ou la destruction d'une forme décrite par un polygone avec des coordonnées entières et non vectorielles. Cette technique a en outre l'avantage, en jouant sur différents modes de représentation, de permettre une maîtrise des performances du moteur de rendu graphique et ce en particulier grâce à une utilisation non systématique de l'agencement spatio-temporel. La technique proposée peut en outre facilement être intégrée dans la plupart des dispositifs de rendu graphique qui permettent le rendu de formes vectorielles. Ce procédé est en oeutre avantageusement complété par les différentes caractéristiques suivantes prises seules ou selon toutes leurs combinaisons techniquement possibles : - les moyens de mémorisation comportent des moyens formant serveur aptes à transmettre à un client à distance des données décrivant un contenu d'agencement spatio-temporel d'objets graphiques à afficher et/ou des données décrivant des primitives ; - un contenu d'agencement spatio-temporel qui contient un objet défini par des primitives mémorisées indépendamment,comporte des données identifiant lesdites données et/ou les moyens dans lesquels ellses sont mémorisées ; - pour afficher une animation graphique, on reçoit des données qui correspondent à un contenu d'agencement spatio-temporel d'objets graphiques à afficher, on décode les données ainsi reçues desdits moyens et, lorsque l'agencement qui correspond à ces données comporte un objet graphique destiné à être défini par des primitives mémorisées indépendamment, on reçoit et décode des données correspondant à ces primitives ; - les primitives correspondant aux données reçues pour ledit objet graphique sont directement affichées et en ce qu'on met en oeuvre sur le contenu d'agencement spatio-temporel un traitement de pré-rendu avant affichage ; - les primitives correspondant aux données reçues pour ledit objet graphique sont transmises à une pile de primitives de rendu, avec les primitives obtenues, pour le contenu d'agencement spatio-temporel, en sortie du traitement de pré-rendu. L'invention concerne en outre un récepteur comportant des moyens d'affichage, ainsi que des moyens pour recevoir et décoder des données décrivant un contenu d'agencement spatio-temporel d'objets graphiques à afficher, caractérisé en ce qu'il comporte des moyens pour recevoir et décoder des données mémorisées indépendamment et correspondant à des primitives définissant au moins un objet graphique dans le contenu d'agencement spatio-temporel pour ledit objet, des moyens de traitement mettant en oeuvre sur l'ensemble de ces données un traitement permettant d'afficher le contenu d'agencement spatio-temporel et lesdites primitives. Elle propose également un système pour la mise en oeuvre du procédé de gestion de descriptions d'animations graphiques destinées à être affichées selon l'une des revendications précédentes, caractérisé en ce qu'il comporte des moyens dans lesquels les données décrivant un contenu d'agencement spatio-temporel et les données décrivant des primitives d'objets graphiques sont mémorisées indépendamment. Elle propose également un signal portant un ensemble de données définissant un agencement spatio-temporel d'objets et de sous-objets graphiques destinés à être affichés, caractérisé en ce que cet ensemble comporte pour au moins un objet graphique des données identifiant des primitives mémorisées indsépendamment e/ou des données identifiant les moyens dans lesquels elles sont mémorisées. L'invention a en outre également pour objet un procédé pour la décomposition d'images d'animations graphiques destinées à être affichées, caractérisé en ce qu'on décompose ces images en un ensemble de données décrivant un contenu d'agencement spatio-temporel d'objets graphiques à afficher et, pour au moins un des objets graphiques, en un ensemble de données définissant des primitives correspondant à celui-ci, le contenu d'agencement spatio-temporel comportant, pour ledit objet graphique, des données désignant les moyens de mémorisation dans lesquels les données définissant ces primitives dudit objet sont destinées à être mémorisées. DESCRIPTION DES FIGURES D'autres caractéristiques et avantages de l'invention ressortiront encore de la description qui suit laquelle est illustrative et non limitative et doit être lue en regard des dessins annexés sur lesquels : la figure 1 est une représentation schématique illustrant la réception d'une scène initiale ; la figure 2 est une représentation schématique illustrant le traitement de rendu mis en oeuvre au niveau du récepteur représenté sur la figure 1 ; la figure 3 est une représentation schématique illustrant l'encodage d'une image. DESCRIPTION D'UN OU PLUSIEURS MODES DE REALISATION OU DE MISE EN OEUVRE Sur la figure 1, on a représenté un récepteur R qui est par exemple un téléphone portable qui échange avec au moins deux sources externes de données (serveurs A et B), dont il reçoit des flux de données binaires décrivant les scènes et objets graphiques destinés à être affichés par ledit récepteur R. Le déroulement du chargement des animations graphiques se fait de la façon suivante. Le récepteur R demande un contenu d'animations graphiques à la source que constitue le serveur A Ce serveur A transmet audit récepteur R un contenu S (la scène graphique) qui décrit l'agencement spatio-temporel des objets graphiques. C'est ce qu'illustrent les flèches 1 et 2 qui symbolisent une demande de contenu formulée par le récepteur R auprès de la source A et l'envoi de ce contenu au récepteur R par ladite source A. Lorsque la scène graphique qui est décrite contient un objet graphique composite OC, le récepteur R interroge le serveur B qui, dans les informations que ledit récepteur R vient de recevoir du serveur A, est désigné comme étant le serveur particulier dans lequel sont référencées les primitives graphiques P qui correspondent à l'objet composite OC en question. Ces primitives graphiques sont par exemple avantageusement des primitives graphiques bas niveau de type actions, polygones, durée . Les flèches 3 et 4 sur la figure 1 illustrent la demande de transmission des primitives graphiques formulée par le serveur B auprès du récepteur R, ainsi que la transmission de ces primitives par le serveur B audit récepteur R. On se réfère maintenant à la figure 2 qui illustre le traitement de rendu qui est mis en #uvre au niveau du récepteur R. Ainsi qu'on le comprend sur cette figure, le récepteur R comporte des moyens 5 pour le décodage de la scène initiale S, ainsi que des moyens 6 pour le décodage des primitives P qui lui sont transmises par le serveur B qu'il interroge. Le récepteur R comporte en outre un module de traitement MT qui comprend d'une part un module de pré-rendu PR et, d'autre part un moteur de rendu MOT. Le module de pré-rendu PR reçoit les données qui correspondent à l'image de la scène S et met en #uvre sur celle-ci un traitement de prérendu destiné à transformer celles-ci en primitives de rendu, par exemple du type de celles qui sont accessibles sous "open GL. Le module de pré-rendu PR a notamment pour objet de transformer une représentation graphique commune pour l'adapter au dispositif spécifique sur laquelle elle doit être affichée. Notamment, à partir de cette représentation graphique commune, le module PR détermine avec précision les coordonnées des objets à afficher sur l'écran. Il définit en particulier les coordonnées du centre de l'image, les coordonnées des axes x et y, ainsi que les dimensions de la zone de rendu, etc.. Pour des exemples de traitements de pré-rendu, on pourra avantageusement se référer aux publications suivantes : - Computer Graphics - Principles and Practice - Foley - Van Dam Feiner - Hugues - Objects Hierarchy and Simple PHIGS - Geometrice modeling - p286 à 302 - La réalisation de logiciels graphiques interactifs - Collection de la Direction des Etudes et Recheches d'EDF ; Travaux dirigés de l'Ecole d'été d'informatique du 7 au 27 juillet 1979 ; p15 à 23. A l'issue du traitement de pré-rendu, les primitives obtenues sont transmises et mémorisées dans une pile de primitives qui est traitée par le moteur de rendu graphique MOT. Le rôle de ce moteur de rendu MOT est de commander l'affichage des objets, en utilisant pour eux les éléments de positionnement et de dimensionnement qui ont été déterminés par le module PR de pré-rendu. Les objets graphiques dont le moteur de rendu MOT commande l'affichage sont par par exemple codés sous un format similaire à celui décrit dans le document "ISO/IEC 14496-1 :2002- Information technology - Coding of audio- visual objects, Part 1 : dans lequel on pourra notamment se référer par exemple au passage décrivant la couche 2D et les noeuds de transfrormatrion, l'invention pouvant bien entendu également s'appliquer pour des scènes 3D. Le traitement de commande d'affichage que réalise le moteur de rendu MOT permet en particulier de gérer les conflits d'affichage entre différents objets et est par exemple du type de ce qui est décrit dans le document "ISO/IEC 14772-1:1998, Information technology - Computer graphies and image processing - The Virtual Reality Modeling Language" Au moment où le module de traitement MT doit préparer l'objet graphique composite OC, les primitives P qui correspondent à celui-ci sont directement envoyées dans la pile de traitement du moteur de rendu, sans traitement de pré-rendu. Ces primitives sont en effet propres à être directement affichées sur l'écran, sans nécessiter et ne nécessite pas de traitement de pré-rendu et notamment d'adaptation de dimensions. Ainsi, le rendu de l'objet LowGraphics s'effectue par l'affichage directement à l'écran des primitives graphiques reçues par le serveur B. A titre d'exemple, le moteur MOT met en oeuvre sur la pile de primitives constituées par l'empilement des primitives issues du traitement de pré-rendu et des primitives reçues par le récepteur pour le ou les objets graphiques composites un traitement qui est par exemple du type de ceux qui sont décrits dans les publications suivantes : # Computer Graphics Principles and Practice by J. D. Foley, A. van Dam, S. Feiner, and J. F. Hughes (Addison-Wesley, 1990) # OpenGL Programming Guide by Mason Woo, Jackie Neider, and Tom Davis (Addison-Wesley, 1997) # The Inventor Mentor by Josie Wernecke (Addison-Wesley, 1994) On donne ci-après deux exemples de programmation pour un même objet graphique : le premier exemple correspond à une représentation classique de cet objet ; le second exemple correspond à une représentation composite, combinant une représentation classique et une représentation avec des primitives bas niveau. Représentation classique Transform { children [ Shape{ geometry IndexedLineSet { point [0100,000,2000, -1 5 0.21 50] colorlndex [ 0 1 2-1 # axes 34] # centerline color Coor { cotor [ 0 0 O..2 . 2 .2 ] colorlndex [ 0 1] # black for axes, gray for centerline cotorPerVertex FALSE # cotor per polyline Shape{ geometry IndexedLineSet { point [ 21 0, 5 2 0, 81.50, 11 90, 1470, 17 10 0] coordlndex [ 0 1 2 3 4 5 ] # connect the dots color Color { color [ .1 . 1 . 1, .2 .2 .2, .15 .15 .15, .9.9.9,.7.7.7,111 ] } ]} Représentation composite Transform { children [ Shape{ geometry IndexedLineSet { point [0100,000,2000,-1 50,2150 ) coordlndex [01 2-1 # axes 3 4] # centerline color Color { color [ 0 0 0,.2 . 2 .2 )} colorlndex [01) # black for axes, gray for centreline colorPerVertex FALSE # color per polyline LowGraphics { startTime 10.8//La visualisation de 1 objet se fera à 10. 8 secondes Source " http://www.myserver.com/LowGraphics" ]} On comprend que dans la deuxième représentation, le programme appelle les primitives d'objets dénommées "LowGraphics" auprès d'un serveur qui est à l'adresse "http://www.myserver.com/LowGraphics". On se réfère maintenant à la Figure 3 qui illustre quant à elle le traitement de décomposition d'une image en vue de la mémorisation des différents éléments qui la compose dans différents serveurs. L'image initiale se décompose en un agencement spatio-temporel d'objets et de sous-objets graphiques. Une partie de ces objets graphiques peuvent être représentés sous forme de primitives de bas niveau, par exemple des primitives de type {action, polygone, durée}. Ces objets composites, référencés par OC sur la figure 3, sont encodés (étape Eoc) pour être mémorisés dans la source B sous forme de primitives de rendu P. Le reste de la scène, et notamment les différents autres objets graphiques, ainsi que l'agencement général spatio-temporel des différents objets graphiques de la scène, est encodé de façon classique (étape Es) pour être mémorisé dans la source A. On va maintenant décrire des exemples primitives graphiques. Un objet graphique est généralement représenté par une forme polygonale. Des primitives graphiques peuvent décrire des polygones sous forme de listes de points (les sommets du polygone) en les associant éventuellement à des couleurs et textures. En variante, il peut être prévu que les primitives ne définissent les objets qu'à partir de formes triangulaires ou trapézoidales. Les primitives donnent alors uniquement les définitions de ces triangles ou trapèzes et éventuellement des couleurs et textures qui leur sont sont associées. Le programme ci-dessous donne un exemple d'encodage en primitives bas niveau pour un polygone de type dodécaèdre à 12 faces de 5 points. #VRML V2.0 utf8 Viewpoint { description "Initial view" position 0 0 9} #A dodecahedron : vertices, 12 faces. # 6 colors (primaries: RGB and complements:CMY) mapped to the faces. Transform { translation -1. 5 0 0 children Shape { appearance DEF A Appearance { material Material {}}geometry DEF IFS IndexedFaoeSet { coord Coordinate { point [ # Coords/indices derived from " Jim Blinn's Corner" 111,11-1, 1-11, 1-1 -1, -111, -11 -1, -1 -11, -1-1 -1, .6181.6180, -. 6181.6180, .618 -1.618 0, -.618 -1.6180, 1. 6180.618,1.6180 - . 618, -1. 6180.618, -1. 6180 -. 618, 0. 6181.618,0 -.6181.618,0.618 -1.618, 0 - .618-1.618 coordlndex [ 1801213 -1, 4951514 -1, 21031312 -1, 71161415-1,21201617-1,11331918- 1, 41461716 -1, 71551819 -1,416089 -1, 21761110-1,118598-1,71931011- 1, color Color { # Six colors: color [001,01 0,01 1,100,101,110] colorPerVertex FALSE # Applied to faces, not vertices # This indexing gives a nice symmetric appearance: colorlndex [0,1, 1,0, 2,3, 3, 2, 4, 5,5, 4] # Five texture coordinates, for the rIVe verti#s on each face. # These will be re-used by indexing into them appropriately. texCoord TextureCoordinate { point [ # These are the coordinates of a regular pentagon : 0.6545080.0244717, 0.09549150.206107 0. 09549150.793893, 0.6545080.975528,1 0. 5, # And this particular indexing makes a nice image: texCoordlndex [ 01234 -1, 23401 -1, 40123 -1, 12340-1, 23401-1,01234-1,12340-1,40123-1, 40123-1, 12340 -1, 01234 -1, 23401 -1 En MPEG-4/BIFS (ISO/14496-1), la taille du contenu d'un tel dodécaèdre est de 1050 bytes. Chaque face est décomposable en 3 triangles, chaque triangle possède 3 points de coordonnées (X, Y). Après compilation, on doit donc envoyer 12*3*3*2 entiers qui correspondent aux arêtes des triangles (le rendu d'un triangle est une primitive de base en OpenGL). Pour des écrans de téléphone mobile, un pixel (X, Y) peut être codé sur 2 bytes (taille d'écran maximum de 255*255). Ce qui fait 12*3*3*2= 216 bytes. On doit ajouter la composante couleur (3 bytes) de chaque point, ce qui fait : 324 bytes, soit un total de 540 bytes. On comprend par conséquent que le traitement proposé permet un gain en taille de mémorisation important. Il est à noter que les techniques qui viennent d'être décrites s'appliquent de façon très générale à pratiquement toutes les descriptions d'animations graphiques actuelles: MPEG-4/BIFS, SVG, etc... On notera que l'on s'est placé, dans la description qui précède, dans le cas où les données d'animations (contenu d'agencement spatiotemporel, primitives) sont stockées dans des serveurs interrogés à distance. D'autres moyens de mémorisation (stockage sur CD ROM, par exemple) pourraient bien entendu être utilisés. Egalement, au lieu d'être interrogés et d'utiliser une technologie de Pull , les serveurs peuvent transmettre les données au client en utilisant une technologie de type pousser ( push ). REVENDICATIONS 1. Procédé pour la gestion de descriptions d'animations graphiques destinées à être affichées, caractérisé en ce qu'une animation graphique est définie par des données décrivant un contenu d'agencement spatio-temporel d'objets graphiques à afficher, ainsi que par des données décrivant des primitives correspondant à au moins un de ces objets graphiques, les données décrivant un contenu d'agencement spatio- temporel et les données décrivant des primitives d'objets graphiques étant mémorisées indépendamment. 2. Procédé selon la revendication 1, caractérisé en ce que les moyens de mémorisation comportent des moyens formant serveur aptes à transmettre à un client à distance des données décrivant un contenu d'agencement spatio-temporel d'objets graphiques à afficher et/ou des données décrivant des primitives. 3. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce qu'un contenu d'agencement spatio-temporel qui contient un objet défini par des primitives mémorisées indépendamment.comporte des données identifiant lesdites données et/ou les moyens dans lesquels elles sont mémorisées. 4. Procédé selon l'une des revendications précédentes, caractérisé en ce que lesdites primitives sont de type {action, polygone, durée}. 5. Procédé selon l'une des revendications précédentes, caractérisé en ce que pour afficher une animation graphique, on reçoit des données qui correspondent à un contenu d'agencement spatio-temporel d'objets graphiques à afficher, on décode les données ainsi reçues desdits moyens et, lorsque l'agencement qui correspond à ces données comporte un objet graphique destiné à être défini par des primitives mémorisées indépendamment, on reçoit et décode des données correspondant à ces primitives. 6. Procédé selon la revendication 5, caractérisé en ce que les primitives correspondant aux données reçues pour ledit objet graphique sont directement affichées et en ce qu'on met en #uvre sur le contenu d'agencement spatio-temporel un traitement de pré-rendu avant affichage. 7. Procédé selon la revendication 6, caractérisé en ce que les primitives correspondant aux données reçues pour ledit objet graphique sont transmises à une pile de primitives de rendu, avec les primitives obtenues, pour le contenu d'agencement spatio-temporel, en sortie du traitement de pré-rendu. 8. Récepteur comportant des moyens d'affichage, ainsi que des moyens pour recevoir et décoder des données décrivant un contenu d'agencement spatio-temporel d'objets graphiques à afficher, caractérisé en ce qu'il comporte des moyens pour recevoir et décoder des données mémorisées indépendamment et correspondant à des primitives définissant au moins un objet graphique dans le contenu d'agencement spatio-temporel pour ledit objet, des moyens de traitement mettant en #uvre sur l'ensemble de ces données un traitement permettant d'afficher le contenu d'agencement spatio-temporel et lesdites primitives. 9. Récepteur selon la revendication 8, caractérisé en ce que les moyens de traitement affichent directement les primitives correspondant aux données reçues pour ledit objet graphique et mettent en #uvre sur le reste du contenu d'agencement spatio- temporel un traitement de pré-rendu de positionnement et/ou de dimensionnement avant affichage. 10. Récepteur selon la revendication 9, caractérisé en ce que lesdits moyens de traitement comportent une pile de primitives, ainsi qu'un moteur de rendu qui commande et gère l'affichage des objets graphiques mémorisés dans ladite pile, les primitives correspondant aux données reçues pour ledit objet graphique sont transmises à une pile de primitives de rendu avec les primitives obtenues, pour le contenu d'agencement spatio-temporel, en sortie du traitement de pré-rendu. 11. Système pour la mise en #uvre du procédé de gestion de descriptions d'animations graphiques destinées à être affichées selon l'une des revendications 1 à 7, caractérisé en ce qu'il comporte des moyens dans lesquels les données décrivant un contenu d'agencement spatio-temporel et les données décrivant des primitives d'objets graphiques sont mémorisées indépendamment. 12. Signal portant un ensemble de données définissant un agencement spatio-temporel d'objets et de sous-objets graphiques destinés à être affichés, caractérisé en ce que cet ensemble comporte pour au moins un objet graphique des données identifiant des primitives mémorisées indépendamment et/ou des données identifiant les moyens dans lesquels elles sont mémorisées. 13. Procédé pour la décomposition d'images d'animations graphiques destinées à être affichées, caractérisé en ce qu'on décompose ces images en un ensemble de données décrivant un contenu d'agencement spatio-temporel d'objets graphiques à afficher et, pour au moins un des objets graphiques, en un ensemble de données définissant des primitives correspondant à celui-ci, le contenu d'agencement spatio-temporel comportant, pour ledit objet graphique, des données désignant les moyens de mémorisation dans lesquels les données définissant ces primitives dudit objet sont destinées à être mémorisées. 14. Procédé selon la revendication 13, caractérisé en ce que les données qui définissent des primitives comportent une pluralité de coordonnées de points qui définissent ensemble un ou plusieurs polygones. 15. Procédé selon la revendication 13, caractérisé en ce que les données qui définissent des primitives comportent une pluralité de données qui définissent ensemble une ou plusieurs formes triangulaires et/ou trapézoïdales. 16. Procédé selon l'une des revendications 14 ou 15, caractérisé en ce que ces données comportent en outre des données caractérisant des couleurs et/ou textures-!