Brevet FR2788153A1 — publié le 20000707

PROCEDE DE CODAGE/DECODAGE D'UN TREILLIS TRIDIMENSIONNEL ARRIERE-PLAN DE L'INVENTION 1. Domaine de l'invention La présente invention se rapporte à un procédé de codage/décodage progressif de données de treillis tridimensionnel (3D) utilisé dans les domaines du codage hybride synthétique et naturel du groupe 4 des experts en image animée (PMPEG-4-SNHC), du langage de modélisation de réalité virtuelle (VRML) et analogue. 2. Description de la technique apparentée En transmettant des objets tridimensionnels composés de données de treillis tridimensionnel, il est très important de rétablir progressivement les données transmises de même que de coder efficacement les données du treillis tridimensionnel. Dans le cas où une erreur de données est générée en raison d'une erreur de la voie de transmission, un rétablissement progressif permettrait aux données transmises d'être partiellement rétablies et de minimiser la quantité de données de treillis à retransmettre. Le procédé de rétablissement progressif qui est robuste vis-à-vis de telles erreurs de voies de communication peut être utilisé efficacement dans des communications sans fil ou des communications à faible débit de transmission. Les buts de la présente invention sont de construire la connectivité, la géométrie et la photométrie nécessaires pour coder progressivement des données de treillis tridimensionnel et fournir de la tolérance vis-à-vis des erreurs des données, ainsi que de proposer un procédé de codage/décodage de celles-ci. Les définitions des termes utilisés dans la technique associée à l'invention seront tout d'abord décrites comme suit. # Treillis polygonal : un treillis polygonal est défini par des coordonnées (géométrie) sur un espace tridimensionnel de sommets, la relation (connectivité) entre les faces et les sommets respectifs formant celui-ci, et la photométrie telle que les informations de couleur, normale ou en texture, qui n'affectent pas la géométrie d'un treillis mais affectent l'aspect du treillis. # Face : une face est un ensemble d'index de sommets et un coin constitue une paire d'ensembles (face, sommet). Une face simple est un ensemble d'index de sommets dans lequel différents index forment une face. Dans cette invention, seul un treillis polygonal constitué de faces simples sera traité. # Arête : une arête est une paire d'index de sommets. Si une arête apparaît sur une seule face dans un treillis polygonal, l'arête est définie comme étant une arête "limite". Si une seule et même arête apparaît sur plusieurs faces, l'arête est définie comme étant une arête "singulière". Si une arête apparaît uniquement sur deux faces voisines, l'arête est définie comme étant une arête "interne". L'arête limite et l'arête interne sont définies comme étant "normales". # Graphe de treillis et graphe double : un premier point est défini à l'intérieur de chaque face d'un treillis et ensuite des points définis au-dessus et passant au travers de l'arête interne entre les faces voisines sont reliés pour être définis comme un graphe double. La figure 5A représente un graphe de treillis et la figure 5B représente un graphe double. # Composant connecté : un chemin dans un treillis polygonal est une série de sommets non récurrents telle que des paires de sommets consécutifs connectés par une arête. Le premier et le dernier sommet sur un chemin sont définis comme étant connectés par le chemin. Si toutes les paires des sommets d'un treillis triangulaire sont connectées par un chemin, le treillis triangulaire est défini comme étant connecté. Si un treillis triangulaire n'est pas connecté, le treillis triangulaire peut être séparé en au moins deux composants connectés. Chaque composant connecté est un treillis triangulaire connecté constitué d'un sous-ensemble de sommets, d'arêtes et de triangles du treillis triangulaire d'origine. Si deux sommets du treillis triangulaire sont connectés par un chemin, ils appartiennent au même composant connecté. # Langage de modélisation de réalité virtuelle (VRML) le langage VRML constitue un format standard graphique préparé pour décrire et transmettre un espace virtuel sur le réseau Internet. # Groupe d'experts en image animée (MPEG) : le groupe MPEG est un groupe destiné à effectuer des activités de standardisation internationales destinées à standardiser un format de compression en vue de transmettre une diversité de supports tels que la vidéo. # Treillis : un treillis est une représentation d'un objet constituée de plusieurs polygones. # Noeud : un noeud est un sommet dans un graphe dérivé de sommets ou bien une unité de description minimum utilisée dans le langage VRML. # Chirurgie topologique : une chirurgie topologique est un procédé de codage de treillis proposé par la IBM Corp, dans lequel un treillis est découpé suivant un chemin donné de manière à donner au treillis la forme de bandes. # Graphe englobant des sommets : un graphe dérivé des sommets est un chemin destiné à découper un treillis en chirurgie topologique. # Arbre dérivé des triangles : l'arbre dérivé des triangles est un arbre binaire sous forme d'une bande de triangles produite en découpant un treillis suivant le graphe dérivé des sommets. # vrun : un élément vrun représente un ensemble de sommets connectés et se termine par une branche ou un élément vleaf. # vlast : un élément vlast indique si la suite en cours constitue la dernière branche ou non. Si la suite en cours est la dernière branche, la valeur de l'élément vlast est 1, et sinon 0. # vleaf : un élément vleaf indique si la suite de sommets en cours s'achève par une feuille ou une branche. Si la suite de sommets en cours s'achève par une feuille, la valeur de vleaf est 1 et sinon, 0. vlength représente la longueur d'une suite de sommets. loopstart : la feuille d'une suite de sommets peut rencontrer une autre suite de sommets pour former une boucle. Dans un tel cas, le début de la boucle est indiqué par l'élément loopstart (début de boucle). # loopend : dans le cas où la feuille d'une suite de sommets forme une boucle, la fin de la boucle est indiquée par l'élément loopend (fin de boucle). # loopmap : un élément loopmap indique la connectivité entre les éléments loopstart et loopend et constitue un ensemble d'index connectant des arêtes depuis l'élément loopend jusqu'à l'élément loopstart. # trun : un élément trun est un ensemble de triangles consécutifs et la fin de celui-ci est un triangle de feuille ou un triangle de branchement. # tleaf : un élément tleaf indique si la suite d'un triangle se termine par un triangle de feuille ou un triangle de branchement. Si la suite d'un triangle se termine par un triangle de feuille, la valeur de tleaf est 1, et sinon 0. # tmarching : un élément tmarching décrit l'aspect de la progression des triangles. Si une bande comporte une arête à sa limite droite, la valeur de tmarching est 1. Si une bande comporte une arête à sa limite gauche, la valeur de tmarching est 0. # polygonedge : un élément polygonedge (arête de polygone) indique si une arête en cours est fournie à partir du modèle en treillis d'origine ou est insérée pour représenter le polygone sous forme d'un ensemble de triangles. Si une arête en cours est fournie à partir du modèle du treillis d'origine, la valeur de l'élément polygonedge est 1, et sinon 0. # Torientation : un élément Torientation indique si le côté gauche ou droit du triangle de branchement est visité en premier. Si le côté gauche est visité en premier, la valeur 1 est attribuée à l'élément Torientation. Si le côté droit est visité en premier, la valeur 0 est attribuée. Dans le procédé de codage classique de données de treillis tridimensionnel, comme les données du treillis sont complètement codées, il est presque impossible de rétablir partiellement les données avant qu'un flux binaire entier soit reçu. De même, en raison des erreurs de la voie de transmission générées durant la transmission, même si seulement une partie des données est endommagée, le flux binaire entier des données doit être à nouveau reçu. Par exemple, ISO/IEC JTCl/SC29/WG11 MPEG98/W2301, "MPEG-4 SNHC Vérification Model 9. 0" proposé par la IBM Corp est actuellement adopté en tant que technologie de codage de treillis tridimensionnel du codage MPEG-4 SNHC. Dans le codage MPEG-4 SNHC, le codage du treillis est conçu sur la base du langage VRML. Dans le langage VRML, un treillis est décrit sous une forme nodale appelée IndexedFaceSet. L'une des technologies principales pour le codage des données de treillis est une chirurgie topologique proposée par la IBM Corp. Conformément à cette technologie, il est supposé qu'un treillis donné est identique à une sphère au point de vue topologique. Ensuite, le treillis est découpé suivant une arête de découpe afin de générer un graphe dérivé des triangles présentant une structure d'arbre binaire. Dans ce cas, l'arête de découpe définie pour découper le treillis est configurée de telle manière qu'elle connecte des sommets, c'est-à-dire qu'elle soit donnée en tant que structure d'arbre comportant une boucle. L'arête de découpe est appelée graphe dérivé des sommets. Ainsi, deux structures d'arbre, c'est-à-dire le graphe dérivé des triangles et le graphe dérivé des sommets, sont codées/décodées, en rétablissant ainsi le treillis d'origine sans perte. Conformément au codage MPEG-4 SNHC, bien qu'il puisse y avoir de multiples éléments IndexedFaceSets dans un fichier du fichier VRML, la compression est réalisée fondamentalement sur l'unité d'un élément IndexedFaceSet. Cependant, il est autorisé de constituer un seul élément IndexedFaceSet avec plusieurs composants connectés. En général, pour un traitement graphique rapide, une modélisation doit être exécutée par unités de triangles. Ces triangles ne sont pas formés au hasard mais sont de préférence connectés les uns aux autres sous forme de bandes ou d'éventails. De même, plus il y a de symboles qui sont représentés de façon répétitive, meilleure est la compressibilité. A cette fin, un treillis formé d'une seule longue bande de triangle est proposé par la IBM Corp au vue des traitements graphiques rapides et de la meilleure compressibilité. La figure 1 illustre un exemple d'un graphe dérivé des sommets comportant une boucle dans laquelle une suite de sommets revient à l'un des sommets franchi. Les figures 2A à 2F illustrent un procédé classique de génération d'un graphe dérivé des sommets et d'un graphe dérivé des triangles dans un exemple de treillis à triangles. Sur les figures 2A, 2B, 2C et 2D, le graphe dérivé des sommets est tracé grâce à une ligne épaisse, qui peut se ramifier en plusieurs branches à partir d'une branche. Un treillis est découpé le long du graphe dérivé des sommets pour obtenir une longue bande de triangles connectée, qui est appelée graphe dérivé des triangles, comme indiqué sur la figure 2C. La figure 2E représente une procédure destinée à générer une boucle de délimitation formée par le graphe dérivé des sommets, et la figure 2F représente un graphe double. Le graphe double représenté sur la figure 2F est obtenu en connectant un point quelconque à l'intérieur d'un triangle et un point à l'intérieur d'un autre triangle voisin du triangle par l'intermédiaire de l'arête du triangle. Dans le cas d'un graphe dérivé des triangles, le graphe double présente une structure d'arbre binaire. Du fait qu'un treillis peut être constitué de plusieurs composants connectés, chaque composant connecté formant le treillis génère une paire constituée d'un graphe dérivé des sommets représenté sur la figure 2B et d'un graphe dérivé des triangles représenté sur la figure 2C. De ce fait, si un seul élément IndexedFaceSet est codé, plusieurs graphes dérivé des triangles et graphes dérivé des sommets peuvent être obtenus. Le procédé destiné à rétablir les données codées grâce au procédé décrit ci-dessus est le suivant : 1. Une boucle de délimitation représentée sur la figure 3 est générée en utilisant un graphe dérivé des sommets. 2. Lorsque le troisième sommet d'un triangle se ramifiant dans un arbre dérivé des triangles est appelé sommet en Y, le sommet en Y est calculé en utilisant les flux binaires de l'arbre dérivé des triangles. 3. Des triangles ou des polygones sont générés en utilisant un bit de progression de triangle du graphe dérivé des triangles. Une compression sans perte utilisant un codage arithmétique du graphe dérivé des sommets et du graphe dérivé des triangles a été proposée par IBM Corp. Cependant, conformément à ce procédé, pour pouvoir reconstituer la structure d'origine tous les flux binaires doivent être reçus en entrée et les problèmes suivants se posent : 1. Du fait que tous les flux binaires sont nécessairement reçus en entrée pour décoder les données, dans un cas quelconque d'erreur de transmission, tous les flux binaires doivent être retransmis. 2. Dans le cas où l'amplitude des données compressées est importante, il faut longtemps pour transmettre les données complètement et un utilisateur doit attendre durant une telle durée. Pour surmonter les inconvénients de la technologie classique, les fonctions suivantes doivent être satisfaites. 1. Même si une erreur de transmission est générée, seule la partie comportant l'erreur de transmission peut être retransmise, en réduisant ainsi la charge du réseau et le temps de transmission. 2. Un rétablissement est permis dans lequel, seule une partie des données et des triangles ou des polygones pour la partie rétablie sont traités pour être affichés sur un écran. La réalisation de ces deux fonctions tout en conservant la structure fondamentale du procédé classique proposé par IBM Corp dépend du traitement efficace de la boucle de délimitation et du sommet en Y, comme indiqué sur la figure 3. Pour pouvoir calculer le sommet en Y dans un processus de rétablissement, au moins l'une des deux suites de triangles ramifiés doit être reçue. Sur la figure 2F, les points 10,14 et 18 sont des sommets en Y. Pour des triangles à l'intérieur d'une suite de triangles, les index pour les trois sommets de chaque triangle peuvent être déterminés en utilisant la configuration des bits de progression et la boucle de délimitation. Cependant, pour pouvoir déterminer les index des sommets en Y qui sont les troisièmes sommets des triangles ramifiés, tous les flux de bits pour deux autres suites de triangles qui suivent les triangles ramifiés doivent être reçus. De ce fait, les triangles qui suivent les triangles ramifiés ne peuvent pas être rétablis pour être affichés jusqu'à ce que les flux binaires suivants soient reçus. Ce problème n'apparaît pas dans le procédé proposé par IBM Corp, qui est fondé sur l'hypothèse que tous les flux de bits sont reçus. Cependant, pour pouvoir établir et afficher les triangles dans l'ordre d'entrée, ce problème doit être résolu. La figure 6 est un schéma synoptique conceptuel d'un procédé de codage d'informations de treillis tridimensionnel (3D) classique. Sur la figure 6, un objet de treillis tridimensionnel 100 est divisé en des parties de connectivité, de géométrie et de photométrie et est codé par une partie de codage 101 comprenant un codeur de connectivité 102, un codeur de géométrie 103, et un codeur de photométrie 112. Dans ce cas, des informations de structure de sommets 105 sont transmises à partir du codeur de connectivité 102 vers le codeur de géométrie 103. Les informations compressées par le codeur de connectivité 102, le codeur de géométrie 103 et le codeur de photométrie 112 sont remplacées dans le flux binaire 111 compressé par un codeur à entropie 104. Le flux binaire compressé 111 est reçu en entrée dans une partie de décodage 112. En d'autres termes, le flux binaire compressé 111 est divisé en une partie de connectivité, de géométrie et de photométrie par l'intermédiaire d'un décodeur à entropie 106 pour être alors décodé par un décodeur de connectivité 107, un décodeur de géométrie 108 et un décodeur de photométrie 113, respectivement. Comme dans la partie de codage 101, les informations de structure de sommets 109 sont transmises depuis le décodeur de connectivité 107 au décodeur de géométrie 108. Un objet de treillis tridimensionnel décodé 110 peut être construit en utilisant la connectivité, la géométrie et la photométrie décodées. Sur la figure 6, un treillis tridimensionnel peut être transmis sous des formes de flux binaires compressées dans une voie de communication. Cependant, comme le procédé de compression de données de type MPEG classique utilise le codeur à entropie 104, le procédé est démuni vis-à-vis des erreurs de transmission générées dans une voie de communication. RESUME DE L'INVENTION Pour résoudre les problèmes ci-dessus, c'est un but de la présente invention de réaliser un procédé destiné à coder/décoder progressivement des informations de treillis tridimensionnel grâce auxquelles une charge de réseau et un temps de transmission peuvent être réduits en ne retransmettant qu'une partie où une erreur de transmission est générée et les informations de treillis tridimensionnel peuvent être rétablies progressivement en utilisant la connectivité, la géométrie et la photométrie de la partie transmise. En conséquence, pour atteindre le but ci-dessus, il est réalisé un procédé de codage progressif d'informations de treillis tridimensionnel (3D) comprenant les étapes consistant à (a) diviser un treillis de triangles tridimensionnel d'un modèle en un ou plusieurs composants connectés, (b) générer un graphe de sommets et un graphe de triangles pour chacun des composants connectés, (c) établir une partition des graphes des sommets et du graphe des triangles constituant les composants connectés en des partitions de données chacune étant capable d'être décodée indépendamment pour les composants connectés respectifs et ensuite coder ceux-ci, (d) coder les positions contenant une géométrie des sommets des triangles constituant chaque partition, ainsi que des informations de coordonnées de photométrie contenant la couleur, normales et de coordonnées de texture pour les partitions de données respectives. Conformément à un autre aspect de la présente invention, il est réalisé un procédé de décodage progressif destiné à recevoir des flux binaires codés par un procédé de codage progressif comprenant les étapes consistant à : (a) diviser des flux binaires en entrée en des unités de partitions de données, (b) identifier le type de partition de chacune des partitions de données, (c) si les partitions de données contiennent des graphes de sommets, décoder les graphes de sommets afin de générer des boucles de délimitation, (d) si les partitions de données contiennent des graphes de triangles, décoder les graphes de triangles pour générer un treillis tridimensionnel, et (e) répéter les étapes (a) à (d) pour générer progressivement des treillis tridimensionnels. BREVE DESCRIPTION DES DESSINS Les buts et avantages ci-dessus de la présente invention seront mis davantage en évidence en décrivant en détail un mode de réalisation préféré de celle-ci en faisant référence aux dessins annexés dans lesquels : La figure 1 illustre un exemple d'un graphe dérivé des sommets dans une chirurgie topologique, Les figures 2A à 2F illustrent un procédé classique de génération d'un graphe dérivé des sommets et d'un graphe dérivé des triangles dans un exemple d'un treillis triangulaire, La figure 3 illustre une boucle de délimitation dans un chirurgie topologique, Les figures 4A à 4D illustrent un exemple de chirurgie topologique, Les figures 5A et 5B illustrent un treillis polygonal et un exemple d'un graphe double de celui-ci, La figure 6 est un schéma conceptuel d'un procédé de codage d'informations de treillis tridimensionnel classique (3D), La figure 7 est un schéma conceptuel d'une représentation d'informations d'un objet de treillis tridimensionnel progressive, La figure 8 est un schéma conceptuel d'un procédé de codage d'informations d'objet de treillis tridimensionnel progressif selon la présente invention, Les figures 9A à 9C illustrent un procédé de détermination d'une direction de codage adaptatif selon la présente invention, pour le codage de sommets en Y, Les figures 10A et 10B illustrent des exemples d'un objet de treillis tridimensionnel (MO) et de couches d'objets de treillis (MOL) , La figure 11 est un schéma conceptuel pour la relation entre un graphe de triangles et un index de boucle de délimitation, Les figures 12A à 12D illustrent un procédé d'établissement d'une partition de données fixes durant un processus de chirurgie topologique, Les figures 13A à 13B sont des schémas conceptuels de l'établissement d'une partition de données selon la présente invention, Les figures 14A à 14D illustrent des types de partitions dans un procédé d'établissement de partitions de données variables, La figure 15 illustre des partitions par le procédé d'établissement de partitions de données variables, La figure 16 illustre un autre exemple de partitions pour de grands composants connectés dans le procédé d'établissement de partitions de données variables, La figure 17 illustre un exemple de formation d'un treillis de triangles à partir d'un treillis polygonal, Les figures 18A à 18E illustrent des exemples de syntaxes en liaison avec l'établissement d'une partition dans un treillis polygonal, La figure 19 illustre l'établissement d'une partition des données dans une branche principale, Les figures 20A à 20D sont des schémas conceptuels du codage utilisant les informations d'orientation, Les figures 21A et 21B sont des schémas destinés à comparer l'ordre de parcours du procédé classique avec celui de la présente invention, c'est-à-dire lorsque les informations d'orientation sont fournies, Les figures 22A et 22B illustrent des syntaxes dans l'établissement de partitions de données dans le cas où les index des sommets en Y sont fournis à un en-tête, La figure 23 illustre un procédé d'indexation d'une boucle de délimitation et un procédé de codage des informations d'entête des partitions ainsi produites, Les figures 24A et 24B illustrent un procédé de codage des informations d'index de début d'une partition, Les figures 25A à 25E illustrent le codage de la géométrie dans des informations de partition de codage, Les figures 26A à 26C illustrent des syntaxes destinées à agencer les données telles que les informations de géométrie, de couleur, normales ou de texture texCoord en établissant une partition de celles-ci, La figure 27 est un schéma conceptuel d'un procédé de codage de géométrie, et La figure 28 est un schéma simplifié de la syntaxe d'une partition. DESCRIPTION DES MODES DE REALISATION PREFERES La présente invention sera décrite en détail en faisant référence aux dessins annexés. Tout d'abord, pour le traitement progressif d'un objet de treillis tridimensionnel, dans la présente invention, une nouvelle structure de treillis représentée sur la figure 7 est proposée. Comme indiqué sur la figure 7, un objet de treillis tridimensionnel (MO) peut être divisé en plusieurs composants connectés ou non connectés. Les composants contenus dans l'objet de treillis tridimensionnel peuvent être reconstitués sous forme de plusieurs couches d'objets de treillis (MOL). Chaque couche MOL contient la connectivité, la géométrie et la photométrie nécessaire pour son propre rétablissement. Ici, la couche MOL contient un ou plusieurs composants de treillis MCOM. En d'autres termes, la couche MOL peut être présentée comme étant un ensemble de composants MCOM. Ici, le composant MCOM est une unité indépendante d'informations et est traitée en tant qu'unité de traitement de base de la connectivité, de la géométrie ou de la photométrie. La figure 8 illustre une partie de codage et une partie de décodage pour un objet de treillis tridimensionnel selon la présente invention. Tout d'abord, un objet de treillis tridimensionnel 100 est reconstitué en une couche d'objets de treillis (MOL) 211 par un analyseur de données tridimensionnelles 201 pour être alors appliqué en entrée dans une pluralité de codeurs de couche MOL 202. Chaque codeur de couche MOL 202 (correspondant à la partie de codage classique 101 représentée sur la figure 6) comprend des parties de codage indépendantes pour la connectivité, la géométrie et la photométrie. Une couche MOL peut être divisée en plusieurs composants MCOM à transmettre. L'ordre de transmission est représenté sur la figure 7. Comme indiqué sur la figure 7, le composant MCOM peut être un élément parmi la connectivité, la géométrie et la photométrie et est codé dans l'ordre suivant : connectivité, géométrie et photométrie. Dans ce cas, la photométrie peut être omise à l'occasion. Bien que l'ordre de la connectivité, la géométrie et la photométrie puisse être inversé, il est préférable de constituer de telles informations en un groupe de manière à représenter une couche MOL. Il peut y avoir plusieurs groupes conformément au degré de division des composants MCOM (se reporter à la figure 7). Ici, une pluralité de codeurs de couche MOL peut être prévue. Les informations 203 utilisées dans un codeur de couche MOL du niveau supérieur sont également utilisées dans un codeur de couche MOL du niveau inférieur. La couche MOL compressée par le codeur de couche MOL 202 est transmise sous forme de flux binaires compressés dans des unités de composants MCOM par l'intermédiaire d'un multiplexeur (MUX) 204. Le flux binaire compressé 210 est divisé en unités de couches MOL par un démultiplexeur (DEMUX) 205 et chaque MOL est transmise vers un décodeur de couche MOL 206 d'une couche correspondante. Le décodeur de couche MOL 206 décode la couche MOL transmise en des composants MCOM. Dans la procédure de décodage, les informations 207 utilisées dans un décodeur de couche MOL du niveau supérieur sont à nouveau utilisées dans un décodeur de couche MOL du niveau inférieur. La couche MOL décodée par chaque couche est rétablie en un objet de treillis tridimensionnel 110 par un synthétiseur de données tridimensionnelles 208. Comme décrit ci-dessus, lorsque les informations de treillis tridimensionnel à l'intérieur d'un composant connecté sont séparées en partitions pour présenter une taille prédéterminée pour ensuite être codées, les informations qui doivent être prises en considération au vu de la partie de décodage sont nécessaires. En d'autres termes, lorsque la partie de décodage reçoit et rétablit progressivement certains des flux binaires de treillis tridimensionnel divisés en vue d'un rendu, si l'ordre de rétablissement d'un arbre de triangles est fixe, il est impossible de décoder le sommet en Y sans connaître les informations formant l'arbre de triangles vers la droite. Ainsi, jusqu'à ce que des informations de treillis tridimensionnel non transmises soient toutes obtenues, le rendu pour l'opération de décodage progressif ne peut pas être davantage exécuté. Pour cette raison, pour pouvoir coder/décoder progressivement les informations de treillis tridimensionnel, les informations de sommet en Y qui peuvent fournir la connectivité de l'arborescence de droite au niveau d'un point de ramification d'un arbre binaire doivent être formées à l'intérieur d'un flux binaire pour être transmises vers la partie de décodage. A cette fin, lorsque les informations de treillis tridimensionnel à l'intérieur d'un composant connecté sont divisées de façon à présenter une taille prédéterminée, la connectivité du sommet en Y est également formée pour être codée en vue d'un rendu. Cependant, conformément à ce procédé, l'efficacité du codage peut être dégradée en raison des informations supplémentaires sur la position et l'ordre du sommet en Y. Ce problème peut être provoqué par la formation de l'arbre seulement dans une direction fixe et le codage de celuici dans la direction fixe et peut être résolu en faisant varier de façon adaptative la direction du codage selon laquelle la connectivité n'est pas nécessaire ou est requise de façon minimale lorsque le sommet en Y est visité dans les informations de treillis tridimensionnel séparées en partitions. Comme indiqué sur les figures 9A et 9B, dans la présente invention, lorsqu'un triangle comportant un sommet en Y dans un arbre de triangles est visité, l'ordre de codage de l'arbre de triangles est déterminé de façon séquentielle sur la base de l'élément triangles~per~data (triangles par donnée) utilisé lorsque l'arbre des triangles à l'intérieur d'un composant connecté est divisé également en unités triangles per right tree de taille particulière afin d'indiquer le nombre des triangles dans la branche de droite et triangles per left tree afin d'indiquer le nombre des triangles dans la branche de gauche, et un marqueur torientation 750 destiné à indiquer la direction du codage est prévu. En d'autres termes, si le marqueur torientation 750 est à 0, dans un état où la racine est positionnée au-dessus, une arborescence de triangles raccordée dans la branche de gauche (c'est-à-dire dans le sens inverse des aiguilles d'une montre) est codée en premier. Si le marqueur torientation 750 est à 1, dans un état où la racine est positionnée au-dessus, une arborescence de triangles raccordée dans la branche de droite (c'est-à-dire dans le sens des aiguilles d'une montre) est codée en premier. De même, même si un triangle comportant un sommet en Y est visité à l'intérieur d'une arborescence de triangles raccordée dont l'orientation de codage est déterminée, l'orientation du codage n'est pas indiquée. Un exemple de la procédure de génération du marqueur torientation qui constitue un marqueur d'orientation grâce au procédé de détermination d'orientation du codage décrit cidessus est représenté sur la figure 9C, sur laquelle des références numériques 756 et 757 représentent des triangles comportant des sommets en Y dans une arborescence de triangles raccordées dont le marqueur d'orientation est déjà déterminé. Ainsi, le marqueur d'orientation n'est pas défini. La référence numérique 758 représente l'ordre de transmission et de rendu des flux binaires compressés des informations de treillis tridimensionnel vers la partie de décodage. En d'autres termes, la caractéristique voulant que le nombre total des triangles des feuilles à l'intérieur de l'arborescence de triangles raccordées est le même que la somme des nombres des triangles comportant un marqueur d'orientation et des triangles sans marqueur d'orientation et avec des sommets en Y, est utilisée en tant que condition de détermination. La figure 10A illustre un objet de treillis tridimensionnel (MO) et la figure 10B illustre des couches d'objets de treillis (MOL) . Tout d'abord, les informations nécessaires pour le rétablissement d'un treillis de triangles seront résumées comme suit. La figure 11 est un schéma conceptuel pour la relation entre un graphe de triangles et un index de boucle de délimitation. Sur la figure 11, le caractère de référence m représente un index de début de droite, n représente un index de début de gauche et une flèche centrale représente l'ordre des triangles codés. Ici, sur la base de la direction de progression, la limite positionnée sur la droite de la bande des triangles est une limite de droite, la limite positionnée sur la gauche de la bande de triangles est une limite de gauche, et le triangle en gris à l'intérieur est un triangle de branchement. Comme indiqué sur la figure 11, il est supposé que les index de la boucle de limitation pour les points de départ des limites gauche et droite sont donnés dans une partition du graphe des triangles. Ensuite, les informations suivantes sont nécessaires pour les triangles respectifs de chaque graphe de triangles. Triangle avant le triangle de branchement comme indiqué sur la figure 11, dans le cas des triangles avant un triangle de branchement, les index de la boucle de délimitation augmentent de 1 dans la limite de gauche et diminuent de 1 dans la limite de droite. Ainsi, à chaque fois qu'un bit de progression est décodé, trois sommets du triangle peuvent être immédiatement rétablis. Triangle de branchement Sur la figure 11, un triangle de branchement est composé de trois sommets b [m-3], et b [n+2]. si les informations de triangles de la branche de droite dans le triangle de branchement, c'est-à-dire les informations concernant le nombre des triangles, ne sont pas reçues, il n'est pas possible de connaître l'index m-10 dans la boucle de délimitation du troisième sommet, c'est-à-dire le sommet en Y. Ainsi, pour pouvoir déterminer l'index du sommet en Y, les informations concernant le nombre des triangles dans l'une des branches latérales doivent être reçues. Pour pouvoir connaître le nombre des branches d'un côté, les informations sur la suite de triangles dans le graphe des triangles sont nécessaires. Sur la figure 11, si le nombre des triangles des branches de droite est p, le nombre des sommets utilisés peut être facilement connu comme suit : nombre des sommets utilisés dans une branche latérale = p+2. Ainsi, sur la figure 11, les index de la boucle de délimitation du troisième sommet, c'est-à-dire le sommet en Y, du triangle de branchement peuvent être déterminés en utilisant le fait que l'index du sommet sur la limite de droite est m-3 et que le nombre des triangles de la branche est 6, comme suit : index du sommet en Y =(m-3)-(6+2-1)=m-3-7=m-10. Triangles dans la branche se ramifiant à partir du triangle de branchement Dans ce cas, si le sommet en Y du triangle de branchement n'est pas déterminé, les index des sommets du triangle ne peuvent pas être déterminés. Ceci est dû au fait que les index des sommets positionnés sur la limite de gauche ne peuvent pas être déterminés si le sommet en Y dans la branche de droite représenté sur la figure 11 n'est pas déterminé. Comme décrit ci-dessus, pour obtenir un rendu progressif, en tant que résultat de la segmentation des données, les sommets en Y doivent être déterminés efficacement. De ce fait, dans la présente invention, un procédé qui permet un rétablissement et un rendu indépendants des données segmentées est proposé. Les procédés de segmentation des données sont divisés principalement en deux procédés, c'est-à-dire un procédé de segmentation fixe, et un procédé de segmentation variable. Bien que le procédé de segmentation fixe utilise un procédé de segmentation identique dans tous les modèles généraux donnés, le procédé de segmentation variable emploie des procédés de segmentation différents suivant les types de flux binaire couverts par la segmentation des données, c'est-à-dire graphe de sommets, graphe de triangles, données de triangles et analogue. Les figures 12A à 12D illustrent un procédé de segmentation de données fixe durant un processus de chirurgie topologique, proposé dans la présente invention, dans lequel les caractères de référence "se" représentent un code de début, "id" représente un identificateur d'une partition, "vg" représente un graphe des sommets, "tt" représente une arborescence de triangles, et "td" représente des données de triangles. La figure 12A représente la division d'une donnée connectée en une unité de données, la figure 12B représente la division du graphe des sommets et du graphe des triangles à l'intérieur d'une donnée connectée en une unité de données. Les informations obtenues grâce à la chirurgie topologique sont segmentées dans des unités de données significatives de la manière décrite ci-dessus. La transmission des unités de données segmentées d'une telle manière présente les avantages suivants : # Même si toutes les données ne sont pas transmises, le rétablissement progressif dans des unités de données transmises est autorisé. Même si une erreur est générée durant la transmission, les données sans erreur peuvent être immédiatement rétablies sans être retransmises, en réduisant ainsi le temps d'attente d'un utilisateur. # En retransmettant uniquement les données comportant une erreur, la charge d'un réseau peut être réduite. A présent, le procédé de segmentation des données sera décrit. 1. Procédé de segmentation des données dans des unités des composants connectés. La figure 12A représente le procédé de segmentation des données dans des unités de composants connectés. Ce procédé peut être facilement mis en oeuvre et est efficace pour le cas dans lequel une différence entre les composants connectés n'est pas importante. Cependant, si les tailles des composants connectés ne sont pas uniformes et que la différence entre les composants est importante, les tailles des partitions de données deviennent non uniformes. De même, si la taille d'un composant connecté est importante, l'efficacité diminue. 2. Procédé de segmentation destiné à combiner de petits composants connectés Si de nombreux composants connectés dont les tailles sont faibles sont contenus à l'intérieur d'un modèle, la quantité de bits augmente, ce qui n'est pas efficace. Pour éviter ceci, les composants connectés dont les tailles sont faibles sont rassemblés dans un composant et ensuite chaque composant est codé en une partition indépendante. 3. Procédé de segmentation destiné à combiner de grands composants connectés Pour résoudre l'inefficacité des deux procédés décrits cidessus dans le cas des grands composants connectés, comme indiqué sur les figures 12C et 12D, les composants connectés eux-mêmes sont segmentés. En d'autres termes, la figure 12C indique que les informations des graphes des sommets de tous les composants connectés appartenant à un modèle comme indiqué sur la figure 12A, sont segmentées, les informations des graphes des triangles sont recueillies et ensuite le codage est exécuté en utilisant les graphes des triangles en tant que partitions de données indépendantes. La figure 12D indique que le graphe des triangles représenté sur la figure 12B est divisé en plusieurs partitions et est ensuite codé. Les figures 13A et 13B sont des schémas conceptuels de la segmentation des données selon la présente invention. Sur la figure 13B, les caractères de référence "VG" représentent un graphe des sommets, les caractères de référence "TG" représentent un graphe des triangles, "vg" représente les données de graphe de sommets, et "tg" représente les données de graphe de triangles. De même, bien que les informations "id" ne soient pas représentées sur la figure 13A à titre de commodité, elles doivent venir après le code de début. La figure 13A illustre un graphe de triangle, comprenant une suite de triangles, un triangle de progression et une arête polygonale durant une procédure de segmentation des données, et la figure 13B illustre une procédure de segmentation des données utilisant le procédé de séparation en partition des données fixe. Sur la figure 13B, l'indice n représente le nombre des composants connectés (CC) et n' représente le nombre des composants reformatés dans le cas d'un reformatage selon les tailles des composants connectés. Le reformatage est exécuté de la manière suivante. 1. Reconstitution des composants connectés (étape 251) Des petits composants connectés sont combinés pour être inclus dans la plage d'une taille de partition de données prédéterminée. Comme indiqué sur la figure 13B, les composants connectés CC1 et CC2 sont combinés pour former un composant reformaté CC'1. Les composants connectés plus grands que les partitions de données sont séparés en des petits composants. Sur la figure 13B, le troisième composant connecté CC3 est segmenté en plusieurs composants CC'2, ..., CC'k. 2. Génération des graphes de sommets et des graphes de triangles (étape 252) Des paires de graphes de sommets et de graphes de triangles sont générées pour les composants reformatés respectifs. 3. Réagencement des graphes de sommets et des graphes de triangles (étape 253) Les graphes de sommets générés à l'étape 252 sont réagencés en des informations de graphes de sommets et des graphes de triangles sont réagencés en des informations de graphes de triangles. 4. Segmentation des informations de graphes de sommets (étape 254) Des informations de graphes de sommets réagencés à l'étape 253 sont segmentées en unités d'information présentant une taille prédéterminée. 5. Segmentation des informations de graphes de triangles (étape 255) Des informations de graphes de triangles générées à l'étape 253 sont segmentées en unités d'informations présentant une taille prédéterminée. Pour exécuter la segmentation des données, ce qui suit doit être pris en considération. # Comme dans la présente invention, pour la tolérance d'erreur, la segmentation des données est exécutée et un code de début est attribué à chaque partition. # Si les données sont segmentées, le nombre de flux binaires augmente, par comparaison au cas où les données ne sont pas segmentées. # Un code de début ne peut pas être inséré sélectivement. En d'autres termes, comme la segmentation des données est exécutée pour accepter la tolérance d'erreur, l'insertion d'un code de début ne peut pas être omise même si la tolérance d'erreur n'est pas acceptée. # Ainsi, même s'il n'est pas nécessaire d'accepter la tolérance d'erreur, comme le code de début est inséré inutilement et est ensuite codé, la quantité de bits augmente de façon spectaculaire. Pour éviter les problèmes ci-dessus, le procédé de segmentation fixe peut être adopté. Alors, même s'il n'est pas nécessaire d'accepter la tolérance d'erreur, le code de début doit être inséré à la même position que dans le cas de l'acceptation de la tolérance d'erreur, ce qui augmente inutilement la quantité de bits. Pour résoudre ce problème, le procédé de segmentation variable est adopté, à la place du procédé de segmentation fixe. Les figures 12A à 12D représentent des types de partitions dans le procédé de segmentation variable, dans lequel les caractères de référence "se" représentent le code de début, "tt" représente un arbre de triangles, "td" représente des données de triangles, "pt" présente le type d'une partition actuelle et "id" représente un identificateur d'une partition. De même, sur la figure 14D, "vi" représente les index de visite, qui sont des index dans la boucle de limitation pour le premier sommet de la limite de la bande de triangles rétablie lorsque la partition actuelle est rétablie, et sont attribués sous forme d'une paire d'index de début des limites gauche et droite. La figure 14A indique que vg, tt et td sont contenus séquentiellement dans une partition de données, la figure 14B indique que seul vg est contenu dans une partition de données, la figure 14C indique qu'une paire constituée de tt et de td est contenue après vg, et la figure 14D indique que tt et td sont contenus. C'est-à-dire que les types des partitions de données sont classés en quatre types conformément au contenu des flux binaires construisant une partition de données, c'est-à-dire un graphe de sommets, un graphe de triangles ou des données de triangles, comme indiqué sur les figures 14A à 14D. Le procédé de segmentation variable est mis en oeuvre grâce à la procédure suivante. # Un code de début est inséré au début de chaque partition. # Les informations d'un type de partition sont codées, après le code de début. Des valeurs différentes sont attribuées à ces informations conformément aux types des informations contenues dans les partitions de données. # Les données telles qu'un graphe de sommets, un arbre de triangles ou des données de triangles peuvent être couvertes partiellement ou entièrement dans une partition. Dans un mode de réalisation de la présente invention, comme indiqué sur les figures 14A à 14D, quatre types de partitions sont utilisés. Ainsi, dans ce mode de réalisation, le type de partition (pt) est défini en utilisant 2 bits, et les significations des valeurs binaires sont indiquées dans le tableau 1. Tableau 1. Type de partition dans un procédé de segmentation variable Valeur binaire Signification ~~~~~~~~~~ 00 Un ou plusieurs parmi vg, tt et td sont contenus séquentiellement 01 Seul vg est contenu et les données de vg sont utilisées dans un ou plusieurs MOC. 10 vg, tt et td construisent un MOC et vg est utilisé dans un ou plusieurs MOC 11 tt et td sont contenus, et vi qui est un point de départ d'une bande de triangles est contenu dans les informations d'en-tête afin de rétablir tt et td La figure 15 illustre un exemple de segmentation utilisant un procédé de segmentation variable, dans lequel quatre composants connectés sont indiqués. A partir de chaque composant connecté (CC), une paire constituée de vg et tg peut être obtenue. Sur la figure 15, comme les tailles des trois composants CC précédents sont faibles, les composants CC respectifs constituent une partition pour être alors codés en utilisant le troisième type de partition indiqué dans le tableau 1. Cependant, du fait que le quatrième composant CC est trop grand pour être codé dans une partition, il est séparé en quatre partitions. La première partition est codée en utilisant le troisième type de partition indiqué dans le tableau 1, et les seconde, troisième et quatrième partitions sont codées en utilisant le quatrième type de partition. Les procédés de segmentation pour les grands composants connectés indiqués sur les figures 15 et 16, présentent les différences suivantes entre eux. # Si seulement vg est codé séparément comme indiqué sur la figure 16, sc et vi doivent être codés pour la première paire suivante de tt et td, ce qui augmente la quantité de bits. # si des paires de tt et td de même que vg sont codées comme indiqué sur la figure 15, la partition des données devient plus grande, ce qui augmente la quantité de bits à retransmettre dans le cas où une erreur de transmission est générée. De ce fait, il est important de déterminer si uniquement vg doit être contenu dans la partition ou bien à la fois tt et tg doivent être contenus dans la partition. En considérant la quantité de bits, il est souhaitable de coder des paires de tt et td de même que vg dans la même partition. Dans la chirurgie topologique, pour pouvoir coder des informations de treillis composées de polygones, les informations polygonales sont tout d'abord reconstruites en un treillis de triangles. La figure 17 illustre un exemple de la formation d'un treillis de triangles à partir d'un treillis polygonal, dans lequel des lignes contenues représentent les arêtes du treillis polygonal d'origine et les lignes en pointillé représentent les arêtes virtuelles ajoutées en vue de diviser un polygone en triangles. Du fait que les arêtes virtuelles sont ajoutées pour diviser un polygone en triangle, elles sont rétablies dans la partie de décodage de sorte que les informations destinées à rétablir le polygone d'origine sont transmises. Les informations sont appelées informations d'arêtes polygonales. Ainsi, pour un triangle, un type d'information d'arêtes polygonales est transmis. une arête réelle est codée avec une valeur de 1, et ' sinon, l'arête est codée avec une valeur de 0. Conformément au procédé classique, les informations d'arêtes polygonales correspondant au nombre des triangles produits en reconstruisant un treillis de polygones en un treillis de triangle, sont générés, et ensuite des informations générées sont codées et transmises/mémorisées. Cependant, comme le premier triangle doit débuter avec une arête réelle, les informations d'arêtes polygonales correspondantes présentent une valeur de 1 à tout moment. Ainsi, le premier triangle n'est pas codé. Dans ce cas, le premier triangle est décodé par la partie de décodage, en supposant que les informations d'arêtes polygonales présentent une valeur de 1. Les figures 18A à 18E illustrent des exemples d'un procédé de segmentation dans un treillis polygonal et le procédé, dans lequel les caractères de référence "tt" représentent des informations de suite de triangles, "tm" représente des informations de progression, "pe" représente des informations d'arêtes polygonales, les indices représentent l'ordre de tm et pe correspondant à tt, et "n" représente le nombre des triangles. La figure 18A indique le treillis polygonal d'origine, la figure 18B représente la séparation en partition à l'intérieur d'un polygone, la figure 18C représente la segmentation entre des polygones (arêtes réelles), la figure 18D représente les syntaxes dans le cas de la découpe d'un treillis polygonal au niveau des arêtes réelles, et la figure 18E représente les syntaxes dans le cas de la découpe d'un treillis polygonal au niveau des arêtes virtuelles. Si la séparation des données est exécutée, comme indiqué sur la figure 18B, la séparation peut se produire au niveau d'une arête virtuelle et non pas d'une arête réelle, c'est-à-dire à l'intérieur d'un polygone. Dans un tel cas, comme l'hypothèse voulant que la valeur d'arête polygonale commence par une valeur de 1 à l'intérieur d'une partition de données à tout moment, ne peut pas être établie, les informations d'arête polygonale correspondant au nombre des triangles doivent être codées. Cependant, comme indiqué sur la figure 18C, si une segmentation des données se produit au niveau des arêtes réelles, c'est-àdire, la limite entre les polygones, la valeur de l'arête du premier polygone est toujours 1, ce qui signifie qu'il n'est pas nécessaire de coder celle-ci. Dans le cas d'un treillis polygonal, les arêtes polygonales dans chaque séparation sont traitées comme suit : 1. Lorsque la segmentation au niveau d'arêtes virtuelles n'est pas autorisée, la valeur de l'arête du premier polygone à l'intérieur d'une partition n'est pas codée. Dans la présente invention, il est supposé fondamentalement que la séparation a lieu uniquement au niveau des arêtes réelles, et 2. Lorsque la segmentation au niveau des arêtes virtuelles est autorisée, la valeur de l'arête du premier polygone à l'intérieur d'une partition est codée. Ici, comme la valeur de l'arête polygonale de la première partition est 1, le codage n'est pas exécuté sur celle-ci. pour séparer en partitions un graphe de triangles, dans la présente invention, la segmentation des données est exécutée à une position où les informations de triangles de la branche de gauche (ou de droite) d'un triangle de branchement apparaissant pour la première fois depuis la fin de la partition précédente, sont entièrement reçues. La figure 19 illustre un exemple de segmentation des données dans une branche principale. La raison de la segmentation d'un graphe de triangles de cette manière est due au fait qu'il est impossible de rétablir et de rendre un triangle qui suit le triangle de branchement correspondant si les index des sommets en Y ne sont pas déterminés. Cependant, si la segmentation des données est autorisée uniquement au niveau de la branche principale comme décrit ci-dessus, il est possible de déterminer les index des sommets en Y à l'intérieur d'une partition. Cependant, ce procédé peut ne pas être efficace suivant l'ordre de parcours prédéterminé et le type du graphe de triangles réel. En d'autres termes, dans le cas du codage de la branche de gauche (ou de droite) en premier, si la branche de gauche est considérablement plus grande que les autres ramifications des triangles dans le graphe de triangles, la taille de la partition de données dépassera un niveau approprié. De même, pour pouvoir déterminer le sommet en Y, un temps d'attente est nécessaire jusqu'à ce que les informations qui suivent après le triangle de branchement, c'est-à-dire les informations sur le nombre des triangles de l'une ou l'autre branche latérale, soient traitées. Dans la chirurgie topologique classique, l'ordre de codage est fixe par rapport aux graphes de triangles généraux. Cependant, si l'ordre de codage est fixe par rapport aux graphes de triangles généraux, la taille de la branche à coder en premier peut être excessivement grande. Si les tailles des deux branches se ramifiant ne sont pas uniformes, il est plus efficace de coder la branche la plus petite pour déterminer les sommets en Y. En faisant ainsi, le sommet en Y peut être déterminé rapidement et le rendu peut être facilité. Ainsi, si les données sont segmentées avec un ordre de codage fixe, la détermination efficace du sommet en Y ne peut pas être obtenue, ce qui gène le rétablissement et le rendu progressifs des polygones. En pratique, si les données sont obtenues grâce à la chirurgie topologique indiquée sur les figures 4A à 4D, le nombre des triangles d'une branche latérale peut être plus petit que celui de l'autre branche latérale. Pour cette raison, les informations d'ordre de parcours, qui ne sont pas définies dans la chirurgie topologique, sont fournies dans la présente invention. En d'autres termes, si les informations d'orientation sont "1", l'ordre de parcours est le même que celui fourni initialement. Ainsi, la branche de gauche (ou de droite) est visitée en premier. Sinon, si les informations d'orientation sont à "0", la branche de droite (ou de gauche) est visitée en premier. En prévoyant de telles informations, la branche présentant une taille plus petite est décodée en premier, et l'effet du rendu progressif peut être prévu en tant que résultat de la segmentation des données. Comme les données peuvent être segmentées avec une taille constante déterminée initialement en fournissant de façon additive les informations d'orientation, dans un cas quelconque d'une erreur de transmission, la taille des données à retransmettre peut être réduite. La figure 20A est un schéma conceptuel du codage utilisant les informations d'orientation, dans lequel les triangles hachurés sont des triangles de branchement et des flèches indiquant le côté droit ou gauche de la boucle de délimitation représentent les directions des index de mappage de la boucle de délimitation par rapport aux premières branches codées à partir des triangles de branchement. Sur les figures 20B à 20D, les caractères de référence "tr" représentent une suite de triangles, "tl" représente des informations d'éléments tleaf, "to" représente des informations d'orientation, "tm" représente des informations de progression et "id" représente l'identificateur d'une partition. La figure 20A représente un procédé de modification de l'ordre de parcours pour l'orientation, la figure 20B représente l'agencement des informations d'orientation dans une suite de triangles, la figure 20C représente l'agencement des informations d'orientation dans des données de triangles, et la figure 20D représente l'agencement des informations d'orientation dans une partition. Les figures 21A et 21B sont des schémas destinés à comparer l'ordre de parcours du procédé classique avec celui de la présente invention, c'est-à-dire lorsque les informations d'orientation sont fournies dans lesquelles les numéros de référence représentent l'ordre de parcours. La figure 21A représente l'ordre de parcours dans la chirurgie topologique classique, et la figure 21B représente l'ordre de parcours conformément aux tailles des branches de l'un ou l'autre côté des triangles de branchement. Sur la figure 21B, les triangles noirs sont des triangles de branchement auxquels sont attribuées des informations d'orientation. Si le nombre des triangles de l'une ou l'autre branche latérale dans les triangles de branchement est connu, les sommets en Y peuvent être déterminés. Ainsi, si les orientations dans une partition de données sont identiques, les sommets en Y peuvent être déterminés en fournissant un seul type d'information d'orientation dans l'entête de chaque partition. Dans le cas d'une génération d'erreur (tolérance d'erreur Si une partition de données comportant une erreur est rejetée, le décodage ou le rétablissement des partitions de données suivantes peut est impossible. Ainsi, la partition de données comportant une erreur doit être à nouveau transmise. Sinon, toutes les partitions de données qui suivent la partition de données comportant une erreur doivent être rejetées. Pour éviter une telle inefficacité, les partitions de données respectives doivent être rétablies ou rendues indépendamment. A cette fin, les positions de départ sur la boucle de délimitation, à partir desquelles les partitions de données respectives débutent, doivent être fournies, et les index des sommets en Y doivent être déterminés indépendamment dans la partition de données. La partie de décodage décode un graphe de sommets en premier. Ici, les valeurs des sommets des triangles respectifs à rétablir ensuite sont mémorisées dans une table de boucle de délimitation. Ainsi, pour pouvoir établir un triangle exactement pour qu'il soit rendu, il est nécessaire de savoir où sont mappées les informations de chaque sommet d'un triangle dans la table de boucle de délimitation. Si les index des sommets du premier triangle d'une partition de données dans la boucle de délimitation sont déterminés, le sommet du triangle suivant peut être déterminé en augmentant l'index de la table de boucle de délimitation de 1. Ainsi, si les index des sommets du premier triangle d'une partition de données dans la boucle de délimitation sont fournis, il est possible de rétablir les polygones indépendamment par rapport aux autres partitions de données. La figure 11 illustre la relation entre les triangles et les index de délimitation durant un processus de rétablissement. Du fait que les index pour la géométrie des sommets réels sont mappés dans la boucle de délimitation, les coordonnées des sommets d'un triangle peuvent être déterminées si les index de la boucle de délimitation sont connus. Ici, la partition de données peut contenir des triangles de branchement, comme indiqué sur la figure 11. Pour pouvoir déterminer les sommets en Y, deux procédés sont proposés dans la présente invention. Tout d'abord, toutes les branches d'un côté sont contenues dans les triangles de branchement et les données sont segmentées uniquement dans une branche principale. La figure 19 représente un exemple de découpe des données dans la branche principale. Deuxièmement les indices des sommets en Y dans la boucle de délimitation sont indiqués directement dans l'en-tête. Sur la figure 11, une valeur de m-10 est attribuée à l'en-tête. Les figures 22A et 22B illustrent les syntaxes de la segmentation des données dans le cas où les indices des sommets en Y sont fournis dans un en-tête, dans lequel le caractère de référence L représente l'index du premier sommet dans la boucle de délimitation sur la limite gauche d'une bande de triangles, R représente l'index du premier sommet dans la boucle de délimitation sur la limite droite d'une bande de triangles, n représente le nombre des sommets en Y apparaissant dans une partition de données, et Y1 représente les index des sommets en Y dans la boucle de délimitation. La figure 22A représente un exemple d'une syntaxe dans le cas d'une segmentation de données dans une branche principale, et la figure 22B représente un exemple d'une syntaxe selon laquelle la segmentation de données est exécutée à une position quelconque et des informations de sommet en Y sont contenues dans un en-tête. Comme décrit ci-dessus, pour pouvoir décoder et rétablir des données contenues dans une partition indépendamment d'une autre partition, les index gauche et droit correspondant aux points de départ de la limite d'une bande de triangles dans la boucle de délimitation sont indiqués dans la partition. Lorsque des flux de bits sont reçus séquentiellement comme dans un support de mémorisation tel qu'un disque compact, on peut supposer que seules les valeurs binaires sont modifiées. Dans un tel cas, comme les index de la boucle de délimitation vont de 0 jusqu'à un niveau à l'intérieur d'une taille prédéterminée pour chaque composant connecté, l'index attribué à la partie correspondante de la partition peut être codé en une valeur qui se conforme à cette plage, qui est autorisée car la boucle de délimitation correspond exactement aux graphes de triangles, et un graphe de triangles est toujours codé après un graphe de sommets. Cependant, conformément aux caractéristiques des supports de transmission, l'ordre de transmission et l'ordre de réception peuvent différer en raison d'un retard de transmission. De même, une perte de flux binaire peut être générée. Dans de tels cas, comme il n'est pas assuré que le graphe de sommets correspondant au graphe de triangles soit reçu de façon appropriée, un index différent du premier index doit être fourni. La figure 23 illustre la relation entre une boucle de délimitation et des données de graphes de triangles dans le cas de plusieurs composants connectés. La première colonne indique des exemples de l'indexation indépendante de chaque composant connecté dans la boucle de délimitation et la seconde colonne indique des exemples de l'indexation de la dernière valeur des boucles de délimitation précédentes qui sont incrémentées en continu, dans la boucle de délimitation. Les figures 24A et 24B illustrent un procédé de codage des informations d'index de début d'une partition, dans lequel ni représente la taille de la boucle de délimitation du premier composant connecté et n2 représente la taille de la boucle de délimitation du second composant connecté. Dans ce ~cas, pour la partition du second composant connecté, les informations d'index sont attribuées à l'en-tête par deux procédés comme indiqué sur les figures 24A et 24B. La figure 24A illustre les informations d'en-tête d'une partition dans le cas de l'indexation d'une boucle de délimitation pour chaque composant connecté, et la figure 24B illustre les informations d'en-tête d'une partition dans le cas de l'indexation de la boucle de délimitation pour les modèles généraux. Conformément à la chirurgie topologique classique, la direction du parcours est fixe dans le codage d'un graphe de triangles. En d'autres termes, une fois que la première direction de parcours est déterminée comme étant à gauche, le parcours est exécuté vers la gauche dans tout le graphe de triangles. Dans la chirurgie topologique classique, les informations d'orientation ne sont pas fournies. Ainsi, la position du flux binaire sur le graphe de triangles est importante. Le graphe de triangles est composé d'une suite de triangles et de données de triangles. Pour cette raison, tout d'abord, les informations d'orientation peuvent être agencées pour la suite de triangles, et deuxièmement, les informations d'orientation peuvent être agencées pour les données de triangles. Le second procédé permet de réduire le temps d'attente pour le rendu et la capacité d'une mémoire utilisée, par comparaison au premier procédé. Comme les informations de suite de triangles sont tout d'abord décodées avant les informations de progression des triangles, il est possible de savoir le nombre des triangles contenus dans les premières branches codées. Lorsque les informations d'orientation et la suite de triangles sont décodées, si le nombre des triangles à l'intérieur des branches à coder en premier est t, le sommet en Y peut être déterminé comme suit : # Dans le cas du codage de la branche de droite (c'est-àdire lorsque la valeur de l'orientation est 1) Si l'index du sommet de la limite de droite d'un triangle de branchement dans la boucle de délimitation est q, l'index du sommet en Y est le suivant : position du sommet en Y = q - t - 2 # Dans le cas du codage de la branche de gauche (c'est-àdire lorsque la valeur d'orientation est 0) Si l'index du sommet de la limite de gauche d'un triangle de branchement dans la boucle de délimitation est p, l'index du sommet en Y est le suivant : position du sommet en Y = p + t + 2 Jusqu'à présent, la présente invention était décrite sur la base de la connectivité d'un modèle dans une partition de données. Cependant, l'agencement et le codage de la géométrie des flux binaires sont également importants. Dans la présente invention, pour une tolérance d'erreur et un rendu progressif, ce qui suit est traité. Les informations nécessaires à une partition de données en cours comprennent les informations apparaissant dans la partition précédente et de nouvelles informations qui n'apparaissent pas dans la partition précédente. La géométrie utilisée à la fois pour la partition précédente et la partition en cours apparaît au niveau de la limite de deux partitions. Les figures 25A à 25E illustrent le codage des informations géométriques lors du codage des informations de partition, dans lequel des cercles hachurés représentent la géométrie codée uniquement dans la partition précédente, les cercles noirs indiquent la géométrie codée à la fois dans la partition précédente et dans la partition en cours, les cercles blancs représentent la géométrie codée dans la partition en cours, et les lignes continues épaisses noires représentent les limites entre les partitions. La figure 25A représente la géométrie apparaissant dans une limite de partition, qui n'est pas en chevauchement, la figure 25B représente la géométrie apparaissant dans une limite de partition, qui est en chevauchement et est codée à la fois dans la partition précédente et la partition en cours, la figure 25C indique que d'après la géométrie dans une limite de partition, seuls les points formant plusieurs arêtes à l'intérieur de la partition en cours sont codés simultanément dans la partition précédente et dans la partition en cours, la figure 25B indique que la géométrie en chevauchement est échantillonnée et est codée de façon distributive en deux partitions, et la figure 25E représente la syntaxe dans un procédé selon lequel la géométrie indiquée sur la figure 25A ou 25B est utilisée sélectivement. En d'autres termes, le procédé de codage de géométrie dans la segmentation des données est classé comme suit. Tout d'abord, comme indiqué sur la figure 25A, parmi les informations de géométrie incluses dans la partition en cours, seules les informations non codées dans la partition précédente sont codées dans la partition en cours. Deuxièmement, comme indiqué sur la figure 25B, les informations sur la limite codée dans la partition précédente sont également codées dans la partition en cours, en rétablissant ainsi la géométrie dans la partition en cours indépendamment de la partition précédente. Troisièmement, comme indiqué sur la figure 25C, parmi les données codées dans les partitions précédentes, seule la géométrie connectée avec plusieurs géométries apparaissant également dans la partition en cours est codée dans la partition en cours. Quatrièmement, comme indiqué sur la figure 25D, comme la géométrie en chevauchement et apparaissant à la fois dans la partition précédente et la partition en cours apparaît généralement de façon consécutive dans une limite d'une bande de triangles, une moitié des données en chevauchement est codée dans la partition précédente et l'autre moitié est codée dans la partition en cours. Cependant, les procédés décrits ci-dessus posent les questions suivantes. Bien que le premier procédé puisse être facilement réalisé, la quantité de données environnantes qui peut être utilisée pour l'estimation pour le codage de la géométrie est plus petite que celle du second procédé, ce qui abaisse la précision de la géométrie. Le second procédé est meilleur que le premier procédé, en ce qui concerne la précision de la géométrie. Cependant, conformément à ce procédé, comme la géométrie apparaissante dans la limite est en chevauchement et est codée dans deux partitions, le rapport de compression est dégradé. Le troisième procédé peut conserver la précision de la géométrie tout en maintenant un niveau approprié de compression. Cependant, conformément au troisième procédé, la caractéristique de la connectivité doit être connue. Dans le quatrième procédé, la géométrie n'est pas en chevauchement et codée, par comparaison au second procédé, ce qui améliore le rapport de compression. Cependant, il est difficile d'exécuter un rendu avec le quatrième procédé, par comparaison au premier procédé. En d'autres termes, les premier, second et troisième procédés permettent un rétablissement et un rendu par eux-mêmes, et le quatrième procédé permet un rendu en générant des valeurs omises dans la partition en cours en interpolant la géométrie environnante, ou bien nécessite un temps d'attente pour la partition suivante. En considérant les points ci-dessus, dans un mode de réalisation de la présente invention, le premier ou le second procédé est utilisé de façon adaptative. Dans un tel procédé adaptatif, la géométrie d'une partition de données est codée fondamentalement par le premier procédé, mais le second procédé peut également être utilisé selon le type de partition. En d'autres termes, # Si la valeur estimée d'un en-tête est réglée à 0, la partition est codée par le premier procédé, et # Si la valeur estimée d'un en-tête est réglée à 1, la partition est codée par le second procédé. Jusqu'à présent, un procédé destiné à segmenter la connectivité d'un treillis a été décrit. Le procédé de codage des informations de photométrie comprenant la géométrie, la couleur, normales et de coordonnées de texture sont importantes pour la tolérance d'erreur, et le rendu progressif. Dans ce cas, les procédés de codage suivants peuvent être envisagés. Les figures 26A à 26C illustrent des syntaxes destinées à agencer les données telles que le bit de progression, des informations de géométrie et de propriété en séparant en partitions celles-ci. Tout d'abord, comme indiqué sur la figure 26A, les informations de photométrie sont codées pour chaque bit de progression. Conformément à ce procédé, pendant le décodage des bits de progression et des informations d'arêtes polygonales, les triangles peuvent être immédiatement rétablis et rendus. De ce fait, ce procédé est utilisé dans un mode de réalisation de la présente invention. Cependant, comme indiqué sur les figures 26B et 26C, respectivement, les flux binaires de progression, les informations de géométrie et de photométrie peuvent être combinés séparément. La figure 27 est un organigramme destiné au codage de la géométrie en utilisant les procédés représentés sur les figures 25A et 25B et en agençant la géométrie grâce au procédé indiqué sur la figure 26A. Sur la figure 27, le terme "pred" représente un procédé de codage pour la géométrie apparaissant entre deux partitions. Si pred = 0, une seule partition est codée. Si pred = 1, la géométrie sur la limite est codée dans les deux partitions. Le terme "visited" (visité) représente le codage ou le non-codage de chaque sommet dans la partition. Si "visited" = 0, le codage n'a pas encore été exécuté. Si "visited" = 1, le codage a déjà été exécuté. Sur la figure 27, un procédé de prédiction est déterminé (étape 301). En d'autres termes, il est déterminé si le codage doit être exécuté par le procédé représenté sur la figure 25A ou 25B. Le premier triangle, une partition de triangle racine, est codé (étape 302). La géométrie de la racine est codée (étape 303). Il est contrôlé s'il existe un triangle suivant ou non (étape 304), le programme passe au triangle suivant s'il existe un triangle suivant (étape 305). Sinon, le programme passe à la partition suivante (étape 312). Il est déterminé si chaque sommet du triangle est codé dans la partition précédente (étapes 306 et 307). Si le codage n'est pas exécuté dans la partition précédente, il est déterminé si le codage est exécuté dans la partition en cours (étape 309). Si ce n'est pas le cas, la partition en cours est codée (étape 31). Si le sommet est codé dans la partition précédente mais que la valeur estimée est 1 (étape 308), il est déterminé si le codage a déjà été exécuté (étape 309). Si ce n'est pas le cas, le codage est exécuté (étape 310). Les étapes 305 à 310 sont répétées jusqu'au dernier triangle de la partition en cours. La figure 27 est également appliquée à d'autres informations de photométrie représentées par sommet. La figure 28 est un schéma d'une syntaxe dans une partition conforme à la présente invention, dans laquelle les caractères de référence "se" représentent un code de début, "id" représente un identificateur d'une partition de données, "#tri" représente le nombre des triangles contenus dans une partition de données. Si une erreur est générée, la partition de données correspondante peut être à nouveau transmise. Ici, "id" est utilisé pour demander à un côté émission de transmettre à nouveau la partition de données. En d'autres termes, pour pouvoir recevoir une partition désirée, il suffit qu'un côté de réception demande simplement de transmettre à nouveau la partition de données comportant l'identificateur correspondant "id". La raison du codage du nombre des triangles, c'est-à-dire "#tri" sur la figure 28 est due au fait que la taille d'une partition de données n'est pas fixe. En d'autres termes, la segmentation des données est exécutée en utilisant des caractéristiques de graphe de triangles et non pas en utilisant la taille des flux binaires. Cependant, les tailles des partitions ne sont pas uniformes. Si le nombre des triangles produits durant un processus de décodage est connu, le décodage des partitions peut être terminé. En d'autres termes, le nombre des triangles est égal à la somme des bits de progression, des bits de feuille et des bits de branchement du graphe des triangles et est égal au nombre des arêtes polygonales (si la première arête polygonale n'est pas codée, celle-ci doit être également incluse). Pour la segmentation des données, les informations de fin d'une partition de données sont nécessaires. La fin d'une partition de données peut être connue par déduction grâce à l'analyse des données ou bien en fournissant les informations de taille de données. Dans le dernier cas, les procédés suivants sont utilisés. 1. Seul le graphe des sommets est codé. Comme la fin du graphe des sommets est connu par interprétation, la fin d'une partition de données peut être connue à partir de celle-ci. 2. Le graphe des triangles est utilisé en tant que partition de données. Comme le graphe des triangles forme un arbre binaire la fin de la partition de données peut être facilement connue par déduction. 3. Si un composant connecté est utilisé en tant que partition de données, la fin d'une partition peut être facilement connue grâce au procédé 1 et 2. En d'autres termes, comme le graphe des sommets est codé et qu'ensuite le graphe des triangles est codé, si le graphe des sommets est rétabli, on sait naturellement que les informations suivantes représentent le graphe des triangles et le graphe des triangles est déduit par le procédé ci-dessus 2, de sorte que la fin d'une partition peut être connue. 4. Le procédé destiné à segmenter des données avec une taille fixe comprend un procédé de détermination de la taille des flux binaires et un procédé consistant à fixer le nombre des triangles contenus dans une partition de données. Dans le premier cas, la fin des données est reconnue après qu'un nombre prédéterminé de bits a été traité. Dans le deuxième cas, la fin des données est reconnue lorsque des triangles correspondant à un nombre prédéterminé sont rétablis. 5. Dans le cas de la segmentation des données dans une branche principale pour déterminer les sommets en Y, les tailles des partitions ne sont pas uniformes. Pour résoudre ce problème, la taille d'une partition est fixe. Dans le cas où la position de séparation n'est pas dans la branche principale pendant un traitement par le procédé 4, si le premier triangle de la branche principale suivante apparaît, la segmentation des données est exécutée immédiatement avant ou après le premier triangle. A présent, la syntaxe de codage pour réaliser un treillis tridimensionnel progressif et une tolérance d'erreur sera décrite. Le flux binaire compressé pour un treillis polygonal tridimensionnel est composé d'un bloc de données d'en-tête avec des informations globales, suivi d'une séquence de blocs de données de composants connectés, chacun étant associé à un composant connecté du treillis. En-tête de Treillis Données #1 du... Données #n du Tridimensionnel Composant CC Composant CC En outre, si le treillis est représenté dans un mode hiérarchique, le dernier bloc de données de composants connectés est suivi d'un ou plusieurs blocs de données de pas d'affinement, chacun d'entre eux représentant une opération de séparation de forêt. Séparation de Forêt#l Séparation de... Séparation de Forêt#2 Forêt#m Chaque bloc de données de composant connecté est composé de trois enregistrements, le graphe de sommet, l'enregistrement d'arbre des triangles, et l'enregistrement de données des triangles Graphe des Sommets Arbre des Données des Triangles Triangles L'enregistrement d'arbre des triangles contient la structure d'un arbre englobant les triangles qui relie tous les triangles des composants connectés correspondants formant un polygone simple. Le treillis est représenté sous forme triangulée dans le flux binaire, qui contient également les informations nécessaires pour reconstituer les faces d'origine. L'enregistrement du graphe des sommets contient les informations nécessaires pour recoller les paires d'arêtes limites du polygone simple afin de reconstruire la connectivité des composants connectés d'origine. La connectivité est séparée en informations globales (par composant connecté) et informations locales (par triangle). Les informations globales sont mémorisées dans les enregistrements du graphe des sommets-et de l'arbre des triangles. Les informations locales sont mémorisées dans l'enregistrement des données de triangles. Les données de triangles sont agencées sur un principe par triangle, où la mise en ordre des triangles est déterminée par le parcours dans l'arbre des triangles. Données pour le Données pour... Données pour le triangle #1 le triangle #2 triangle #n Les données pour un triangle donné sont organisées comme suit : bit d'orien- bit bit coor- normale couleur cordontation de de données nées de progres- polygone texture sion Le bit d'orientation indique quelle branche sera codée en premier entre les deux branches. Le bit de progression et le bit de polygone constituent la connectivité par triangle. Les autres champs contiennent des informations pour reconstituer les coordonnées des sommets (coord) et en option, des informations des normales, couleur, et de coordonnées de texture (texCoord). Si le treillis est codé dans un mode hiérarchique, chaque bloc de données de séparation de forêt (Forest Split) est composé d'un bloc de données de pré-lissage optionnel, d'un bloc de données de post-lissage, et d'un ou plusieurs blocs de données de mise à jour de composants connectés. Pré-lissage Post- Mise à jour ... Mise à jour lissage composant CC #1 composant CC #h Le bloc des données de pré-lissage contient les paramètres nécessaires pour appliquer une étape de lissage en tant que prédicteur global pour les coordonnées des sommets. Le bloc des données de post-lissage contient les paramètres nécessaires pour appliquer une étape de lissage aux coordonnées des sommets afin de supprimer les défauts de quantification. Chaque bloc de données de mise à jour de composant connecté est composé d'un bloc de données de pré-mise à jour et d'un bloc de données de post mise à jour. Pré mise à jour Post mise à jour Le bloc de données de pré-mise à jour est composé d'un bloc de données de forêt, qui contient les informations pour déterminer quelles arêtes du niveau en cours de détail constituent une forêt dans le graphe du treillis au niveau en cours, et un bloc de données de triangles avec la connectivité par triangle, ainsi que les mises à jour des données de photométrie pour les propriétés liées par face et par coin. Après que la connectivité est mise à jour d'après les informations contenues dans le bloc de données de pré-mise à jour, l'opération de pré-lissage spécifiée par les paramètres mémorisés dans le bloc de données de pré-lissage est appliquée en tant que prédicteur global pour les coordonnées de sommets. Le bloc de données de post mise à jour contient les mises à jour des coordonnées des sommets, par rapport aux coordonnées des sommets prédites par l'étape de pré-lissage, pour des sommets qui appartiennent à une boucle d'un arbre. En option, le bloc de données de post mise à jour contient également les mises à jour des coordonnées des sommets et les mises à jour de photométrie pour des faces du composant connecté en cours qui ne sont pas incidentes pour un arbre quelconque de la forêt. Ci après, la syntaxe du codage utilisant un procédé de segmentation variable sera décrite. Ici, l'élément nTrianglesPerMOC représente le nombre des triangles cibles au niveau d'une partition MOC. Syntaxe tridimensionnelle Objet treillis tridimensionnel 3D~Mesh~Object 3D Mesh Objet () { 3D MO start code sc+7 uimsbf 3D Mesh Objet Header() do { 3D Mesh Objet Layer() }while (nextbits~bytealigned () ==3D MOL start code) } 3D~Mesh~Object~Header (en-tête d'objet de treillis tridimensionnel) 3D Mesh Objet Header () ccw 1 blsbf convex 1 blsbf solid 1 blsbf creaseAngle 6 uimsbf coord header () normal header() color header() texCoord header() cgd data 1 blsbf if(cgd data==l) cgd heater() -~r~ 3D~Mesh~Object~Layer (couche d'objets de treillis tridimensionnel) 3D Mesh Object~Layer () { 3D MOL start code Sc+ uimsbf 7 mol id 8 uimsbf if (cgd~data==1){ N Vertices 24 uimsbf N Triangles 24 uimsbf N Edges 24 uimsVf if (mol~id =='00000000') 3D Mesh Object Base Layer() else 3D Mesh Object Forest Split() } 3D~Mesh~Object~Base~Layer 3D~Mesh~0bject~Base~Layer () do{ 3D MOBL start code sc+7 uimsbf mobl id 8 uimsbf start qcoder() Pt 2 bac If (pt=='00') { do{ vertex~graph () triangle~tree () triangle-data ( ) last component bac }while(!last component) else connected component(pt) stop~qcoder () }while(nextbits bytealigned ()==3D MOBL start code) coord header (en-tête de coordonnées) coord~heater () { coord binding 2 uimsbf coord bbox 1 blsbf if (coord~bbox ){ coord xmin 32 ieeefp coord ymin 32 ieeefp coord zmin 32 ieeefp coord size 32 ieeefp coord quant 5 uimsbf coord pred type 2 uimsbf if(coord pred type=='10'){ coord nlambda 2 uimsbf for (i=l;i coord nlambda-l;i++) coord lambda coord quant+3 normal-header (en-tête d'élément normal) normal~header (){ normal binding 2 uimsbf if (normal~binding ! ='00'){ normal bbox 1 blsbf normal quant 5 uimsbf normal pred type 2 uimsbf if (normal pred type=='10'){ normal nlambda 2 uimsbf for (i=l;i nlambda-l;i++) normal lambda normal~quant +3 color~header (en-tête de couleur) color~header () { color binding 2 uimsbf if (color~binding! ='00'){ color bbox 1 blsbf if (color~bboxi){ color rmin 32 ieeefp color gmin 32 ieeefp color bmin 32 ieeefp color size 32 ieeefp } color quant 5 uimsbf color pred type 2 uimsbf if (color~pred~type=='10'){ color nlambda 2 uimsbf for(i=l;i nlambda-l;i++) color lambda color quant+3 } } texCoord~header (en-tête de coordonnées de texture) texCoord~header () { texCoord binding 2 uimsbf if (texCoord binding!='00'){ texCoord bbox 1 blsbf if (texCoord~bbox){ texCoord umin 32 ieeefp texCoord~vmin 32 ieeefp texCoord size 32 ieeefp texCoord quant 5 uimsbf texCoord pred type 2 uimsbf if(texCoord~pred~type==1101){ texCoord nlambda 2 uimsbf for(i=l;i nlambda-l;i++) texCoord~lambda texCoord~quant +3 ~} cgd-header (en-tête cgd) cgd-header () { N Proj Surface Spheres 4 uimsbf if (N Proj Surface Spheres<>0){ x coord Center Point 32 ieeefl y coord Center Point 32 ieeefl z coord Center Point 32 ieeefl Normalized Screen Distance Factor 8 uimsbf for (I=l;i≤N Proj Surface Spheres;i++){ Radius 32 ieeefl Min~Proj~Surface 32 ieeefl N~Proj~Points 8 uimsbf for (j=l;j≤N Proj Points;j++){ Sphere Point Coord 11 uimsbf Proj Surface 32 ieeefl ~J ~} connected~component (composant connecté) connected component (pt){ if (pt!=3) vertex graph () else{ left bloop idx log bloop len bac right bloop-idx log bloop len bac Prediction 1 bac if (pt!=l){ triangle~tree () triangle data() vertex~graph (graphe des sommets) vertex~graph () { vg simple 0-16 bac depth=0 skip last=0 openloops=0 do{ doi{ if (!skip~last){ vg~last 0-16 bac if (openloops>0){ vg forward run 0- bac if (!vg~forward run){ openloopif(openloops>0) vg loop index break vg~run~length 0- uac vg leaf 0-16 bac if (vg leaf&&!vg simple){ vg loop 0-16 bac if(vg loop) openloops++ }while(0) if (vg leaf==(vg last&!skip last)) if (vg last&!skip last) depth-else depth++ skip~last= !vg~leaf }while(depth≥0) triangle~tree (arbre des triangles) triangle~tree (){ depth = 0 ntriangles = 0 do{ tt run length 0-16 bac ntriangles += tt run length() tt leaf 0-16 bac if (tt leaf) depth-if (depth 0) break } else depth++ }while (ntriangles 0) triangle~data (données des triangles) triangle data (){ triangulated 0-16 bac depth = 0; root triangle() for (i=1;i { if (tt run){ if (tt leaf) depth-- 0-16 bac else depth++ triangle () I++ ; if (depth 0 && i ntriangles) triangulated 0-16 bac root~triangle () i++; depth = 0; root~triangle (triangle racine) root triangle (){ if (marching triangle) marching-pattern 0-16 Bac root~coord () root normal() root~color () root~texCoord () root~coord () { root coord sample() root~sample () root sample () root normal(){ if (normal binding!='00'){ root normal sample() if (normal binding!='10'){ normal sample () normal sample() } ~~~.- root~color (){ if (color binding != '00') root color sample() if (color binding != '10') color~sample () color~sample () root texCoord (){ if (texCoord binding != '00') root texCoord sample() texCoord sample() texCoord sample() triangle (triangle) triangle (){ if (marching triangle) marching pattern 0-16 bac if(!triangulated) polygon edge 0-16 bac coord () normal () color () texCoord () coord () if ( ! visited) coord sample() normal(){ if (normal binding =='01') if (!visited) normal sample() else if (normal binding 'la') if (triangulated # polygon edge) normal sample () else if (normal binding =='11'){ if (triangulated # polygon~edge) { normal sample () normal sample () normal sample () color () if (color binding '01'){ if (!visited) color sample() } else if(color binding '10') if (triangulated Il polygon edge) color~sample () } else if(color binding '11') if (triangulated # polygon~edge) { color~sample () color sample() } color sample() } texCoord () { if (texCoord binding '01') if (!visited) texCoord sample() else if(texCoord binding 'll'){ if (triangulated # polygon~edge) { texCoord sample() texCoord sample() texCoord sample () coord~root~sample () { for(i=0; i i++) for (j=0 ; j quant; j++) coord bit 0-1 bac normal~root~sample () { for(i=0; i i++) for (j=0; j quant; j++) normal bit 0-1 bac } 1 @ @ color~root~sample () { for(i=O; i i++) for (j=O; j quant; j++) color bit 0-1 bac texCoord~root~sample () { for(i=O; i i++) for (j=O; j quant; j++) texCoord bit 0-1 bac coord~sample (){ for (i=0; i i++){ j=0 do coord leading bit 0-16 bac j++ }while(j quant&&!coord leading bit) if (coord~leading~bit) { coord sign bit 0-1 bac do{ coord trailing bit }while (j quant) normal ample () for (i=0; i i++){ j=0 do normal leading bit .0-16 bac j++ }while(j quant&&!normal leading bit) if (normal~leading~bit){ normal sign bit 0-1 bac do{ normal trailing bit }while (j quant) } color~sample () { for (i=0; i i++){ j=0 do color leading bit 0-16 bac j++ }while(j quant&&!color leading bit) if (color~leading~bit) { color sign bit 0-1 bac do{ color trailing bit }while (j quant) texCoord~sample () { for (i=0; i i++){ j=0 do texCoord leading bit 0-16 bac J++ while(j if (texCoord~leading~bit){ texCoord sign bit 0-1 bac do{ texCoord trailing bit }while (j quant) # 3D~Mesh~Object MO~start~code : il s'agit d'un code unique d'une longueur de 32 bits (sc+7) est utilisé pour la synchronisation. # 3D~Mesh~Object~Header ccw : cette valeur booléenne indique si la mise en ordre des sommets des faces décodées suit un ordre de compteur dans le sens des aiguilles d'une montre. convex : cette valeur booléenne indique si le modèle est convexe. solid : cette valeur booléenne indique si le modèle est un solide. creaseAngle : il s'agit d'un nombre entier non signé sur 6 bits qui indique l'angle d'un pli. # 3D Mesh Object Layer MOL start code : il s'agit d'un code unique d'une longueur de 32 bits (sc+7) qui est utilisé pour la synchronisation. mol id . ce nombre entier non signé sur 8 bits spécifie un identificateur unique id pour la couche d'objets du treillis. Une valeur de 0 indique une couche de base, et une valeur plus grande que 0 indique une couche d'affinement. Le premier élément 3D Mesh Object Layer immédiatement après un en-tête 3D~Mesh~Object~Header doit comporter un identificateur mol~id = 0, et les éléments 3D Mesh Object Layer suivants à l'intérieur du même objet 3D~Mesh~Object doivent avoir un identificateur mol id > 0. N-Vertices représente le nombre des sommets pour la résolution en cours du treillis tridimensionnel. Utilisé pour accepter une légère dégradation des calculs. N-Triangles représente le nombre des triangles pour la résolution en cours du treillis tridimensionnel. Utilisé pour accepter une légère dégradation des calculs. N-Edges représente les nombres des arêtes pour la résolution en cours du treillis tridimensionnel. Utilisé pour accepter une légère dégradation des calculs. # 3D~Mesh~Object~Base~Layer MOBL~start~code : il s'agit d'un code unique d'une longueur de 32 bits (sc+7) qui est utilisé pour la synchronisation. mobl~id : ce nombre entier non signé sur 8 bits spécifie un identificateur unique pour le composant objet treillis. last component : cette valeur booléenne indique s'il existe d'autres composants connectés à décoder. Si la valeur last~component est vraie, alors le dernier composant a été décodé. Sinon, il n'y a plus de composants à décoder. Ce champ est codé de façon arithmétique. # coord header coord binding : ce nombre entier non signé sur 2 bits indique la liaison des coordonnées des sommets avec le treillis tridimensionnel. La seule valeur admissible est "01". coord bbox : cette valeur booléenne indique si un cadre de limitation est prévu pour la géométrie. Si aucun cadre de limitation n'est prévu, une valeur par défaut est utilisée. coord xmin, coord~ymin et coord~zmin : ces valeurs en virgule flottante indiquent le coin inférieur gauche du cadre de limitation dans lequel est située la géométrie. coord size : cette valeur en virgule flottante indique la taille du cadre de limitation. coord quant : ce nombre entier non signé sur 5 bits indique que le pas de quantification utilisé pour la géométrie. coord~pred~type : ce nombre entier non signé sur 2 bits indique le type de prédiction utilisé pour reconstituer les coordonnées des sommets du treillis. Tableau 2. Valeurs admissibles pour l'élément coord~pred~type coord pred type Type de prédiction 00 Pas de prédiction 01 Invalide 10 Prédiction en parallélogramme 11 Prédiction en polygone coord~nlambda : ce nombre entier non signé sur 2 bits indique le nombre des ancêtres utilisés pour prédire la géométrie. Les valeurs admissibles de coord~nlambda sont 1 et 3. Le tableau 3 présente les valeurs admissibles en fonction de l'élément normal~pred~type. Tableau 3. Valeurs admissibles pour coord~nlambda en fonction de l'élément coord~pred~type coord pred type coord nlambda 00 1 01 Invalide 10 3 11 1 coord lambda . ce nombre entier non signé indique le poids attribué à un ancêtre pour la prédiction. Le nombre des bits utilisés pour ce champ est égal à coord~quant+3. # normal header normal~binding : ce nombre entier non signé sur 2 bits indique la liaison des normales avec le treillis tridimensionnel. Les valeurs admissibles sont décrites dans le tableau 4. Tableau 4. Valeurs admissibles pour normal binding normal binding Liaison 00 Aucune normale n'est codée 01 Une normale est codée par sommet 10 Une normale est codée par face !1 Une normale est codée par coin normal~bbox : la valeur booléenne doit toujours être fausse ("0") . normal~quant : ce nombre entier non signé sur 5 bits indique le pas de quantification utilisé pour les normales. normal~pred~type : ce nombre entier non signé sur 2 bits indique comment des valeurs de normales sont prédites. Tableau 5. Valeurs admissibles pour normal~pred~type normal pred type Type de prédiction 00 Pas de prédiction 01 Prédiction en arbre 10 Prédiction en parallélogramme 11 Invalide Tableau 6. Combinaisons admissibles pour normal binding et normal pred type Normal binding Normal pred type 00 Ignoré 01 10 10 01 11 01 normal~nlambda : ce nombre entier non signé sur 2 bits indique le nombre des ancêtres utilisés pour prédire les normales. Les valeurs admissibles de normal nlambda sont 1 et 3. Le tableau 7 indique les valeurs admissibles en fonction de l'élément normal~pred~type. Tableau 7. Valeurs admissibles pour normal~nlambda en fonction de normal pred type normal pred type normal nlambda 00 1 01 1 10 3 11 1 normal~lambda : ce nombre entier non signé indique le poids attribué à un ancêtre en vue de la prédiction. Le nombre des bits utilisés pour ce champ est égal à normal~quant+3. *# color header color~binding : ce nombre entier non signé sur 2 bits indique la liaison des couleurs avec le treillis tridimensionnel. Les valeurs admissibles sont décrites dans le tableau 8. Tableau 8. Valeurs admissibles pour color binding Color binding Liaison 00 Aucune couleur n'est codée 01 Une couleur est codée par sommet 10 Une couleur est codée par face 11 Une couleur est codée par coin color~bbox : cette valeur booléenne indique si un cadre de limitation est fourni pour les couleurs. color-rmin, color~gmin et color~bmin : ces trois valeurs en virgule flottante donnent la position du coin inférieur gauche du cadre de limitation dans l'espace RGB. color-size : cette valeur en virgule flottante donne la taille du cadre de limitation des couleurs. color~quant : ce nombre entier non signé sur 5 bits indique le pas de quantification utilisé pour les couleurs. color~pred~type : ce nombre entier non signé sur 2 bits indique combien de couleur sont prédites. Tableau 9. Valeurs admissibles pour color pred type coord pred type type de prédiction 00 pas de prédiction 01 prédiction en arbre 10 prédiction en parallélogramme 11 invalide Tableau 10. Valeurs admissibles pour color~binding et color pred type color binding color pred type 00 Ignoré 01 10 10 01 11 01 color~nlambda : ce nombre entier non signé sur deux bits indique le nombre des ancêtres utilisés pour prédire les couleurs. Les valeurs admissibles de color nlambda sont 1 et 3. Le tableau 11 représente les valeurs admissibles en fonction de color~pred~type Tableau 11. Valeurs admissibles pour color~nlambda en fonction de color prediction type color pred type color nlambda 00 1 01 1 10 3 11 1 color~lambda : ce nombre entier non signé indique le poids attribué à un ancêtre en vue de la prédiction. Le nombre des bits utilisés pour ce champ est égal à color~quant+3. # texCoord header texCoord~binding : ce nombre entier non signé sur 2 bits indique la liaison des textures avec le treillis tridimensionnel. Les valeurs admissibles sont décrites dans le tableau 12. Tableau 12. Valeurs admissibles pour texCoord binding texCoord binding Liaison 00 Aucune texture n'est codée 01 Une texture est codée par sommet 10 Une texture est codée par face 11 Une texture est codée par coin texCoord bbox : cette valeur booléenne indique si un cadre de limitation est fourni pour les textures. texCoord umin et texCoord vmin . ces deux valeurs en virgule flottante donnent la position du coin inférieur gauche du cadre de limitation dans l'espace bidimensionnel. texCoord~size : cette valeur en virgule flottante donne la taille du cadre de limitation des textures. texCoord~quant : ce nombre entier non signé sur 5 bits indique le pas de quantification utilisé pour les textures. texCoord pred type : ce nombre entier non signé sur 2 bits vaut toujours "10" si texCoord~binding vaut "10" et "01" sinon. texCoord~nlambda : ce nombre entier non signé sur 2 bits indique le nombre des ancêtres utilisés pour prédire des textures. Des valeurs admissibles de texCoord nlambda sont 1 et 3. Le tableau 13 indique les valeurs admissibles en fonction de l'élément texCoord~pred~type. Tableau 13. Valeurs admissibles pour texCoord~nlambda en fonction de texCoord pred type texCoord~pred~type texCoord nlambda 00 1 01 1 10 3 il 1 1 texCoord lambda . ce nombre entier non signé indique le poids attribué à un ancêtre en vue de la prédiction. Le nombre des bits utilisés pour ce champ est égal à texCoord quant+3. # Cgd header N~Proj~Surface~Spheres est le nombre des sphères de surfaces projetées. Habituellement, ce nombre est égal à 1. x coord Center Point est la coordonnée x du point du centre (habituellement le point du centre de gravité de l'objet) de la sphère de surface projetée. y~coord~Center~Point est la coordonnée y du point du centre (habituellement le point du centre de gravité de l'objet) de la sphère de surface projetée. z coord Center Point est la coordonnée z du point du centre (habituellement le point du centre de gravité de l'objet) de la sphère de surface projetée. Normalized~Screen~Distance~Factor indique l'endroit où l'écran virtuel est placé, par comparaison au rayon de la sphère de surface projetée. La distance entre le point du centre de la sphère de surface projetée et l'écran virtuel est égale à Radius (Normalized Screen Distance Factor+1). On notera que Radius est spécifié pour chaque sphère de surface projetée, alors que Normalized~Screen~Distance~Factor n'est spécifié qu'une seule fois. Radius représente le rayon de la sphère de surface projetée. Min~Proj~Surface est la valeur de la surface projetée minimale sur la sphère de surface projetée correspondante. Cette valeur est souvent (mais non nécessairement) égale à l'une des valeurs Proj~Surface. N~Proj~Points est le nombre des points sur la sphère de surface projetée dans lesquels la surface projetée sera transmise. Pour tous les autres points, la surface projetée est déterminée par interpolation linéaire. N~Proj~Points est habituellement faible (par exemple 20) pour la première sphère de surface projetée et est très faible (par exemple, 3) pour les sphères de surface projetée supplémentaires. Sphere~Point~Coord indique l'index de la position du point dans un octaèdre. Proj~Surface est la surface projetée au point spécifié par Sphere Point Coord. # connected~component 3D~VG~MOC~start~code : il s'agit d'un code unique d'une longueur de 32 bits (sc+7) qui est utilisé spécialement pour la synchronisation du MOC du graphe des sommets. vg moc id ce nombre entier non signé indique l'identificateur du MOC du graphe des sommets. 3D~SP~MOC~start~code : il s'agit d'un code unique d'une longueur de 32 bits (sc+7) qui est utilisé spécialement pour la synchronisation d'un MOC de polygone simple. sp moc id ce nombre entier non signé indique l'identificateur du MOC de polygone simple. ntriangleperMOC : ce nombre entier non signé indique la longueur des triangles qui appartiennent à une partition. left~bloop~idx : ce nombre entier non signé indique l'index de départ de gauche, à l'intérieur de la table de boucle de délimitation, pour la bande de triangles qui est reconstituée dans une partition. right~bloop~idx : ce nombre entier non signé indique l'index de départ de droite, à l'intérieur de la table de boucle de délimitation, pour la bande de triangles qui est reconstituée dans une partition. log bloop~len est la valeur à échelle logarithmique de la taille de la table de la boucle de délimitation. prédiction : cette valeur booléenne indique la manière de coder/décoder les coordonnées, les informations de couleur, de normales et de texture qui sont communes dans deux partitions, si la valeur de prédiction est de un, toutes les informations communes sont codées dans deux partitions, sinon les informations communes ne sont codées que dans une partition. # vertex graph vg~simple : cette valeur booléenne indique si le graphe des sommets en cours est simple. Un graphe des sommets simple ne contient aucune boucle. Ce champ est codé de façon arithmétique. vg~last : cette valeur booléenne indique si la suite en cours est la dernière suite commençant à partir du sommet de branchement en cours. Ce champ n'est pas codé pour la première suite de chaque sommet de branchement, c'est-à-dire lorsque la variable skip~last est à la valeur vraie. Lorsqu'elle n'est pas codée la valeur de vg~last pour la suite du sommet en cours est considérée comme étant fausse. Ce champ est codé d'une manière arithmétique. vg~forward~run : cette valeur booléenne indique si la suite en cours est une nouvelle suite. S'il ne s'agit pas d'une nouvelle suite, il doit s'agir d'une suite précédemment parcourue, indiquant une boucle dans le graphe. Ce champ est codé de façon arithmétique. vg~loop~index : ce nombre entier non signé indique l'index de la suite en cours auquel est connectée la boucle en cours. Sa représentation unaire est codée de façon arithmétique. Si la valeur openloops est égale à vg~loop~index, le "1" final dans la représentation unaire est omis. Tableau 14. Représentation unaire du champ vg loop index vg loop index représentation unaire 0 1 1 01 2 001 3 0001 4 00001 5 000001 6 0000001 Openloops-1 openloops-1 zéros vg~run~length : ce nombre entier non signé indique la longueur de la suite des sommets en cours. La représentation unaire est codée de façon arithmétique. Tableau 15. Représentation unaire du champ vg run length vg run length représentation unaire 1 1 2 01 3 001 4 0001 5 00001 6 000001 7 0000001 8 00000001 n n-1 zéros suivis d'un 1 vg~leaf : cet indicateur booléen indique si le dernier sommet de la suite en cours est un sommet d'une feuille. S'il ne s'agit pas d'un sommet d'une feuille, il s'agit d'un sommet de branchement. Ce champ est codé de façon arithmétique. vg loop . cet indicateur booléen indique si la feuille de la suite en cours est connectée à un sommet de branchement du graphe, ce qui indique une boucle. Ce champ est codé de façon arithmétique. # triangle~tree tt run length . ce nombre entier non signé indique la longueur de la suite des triangles en cours. Sa représentation unaire est codée de manière arithmétique. Tableau 16. Représentation unaire du champ tt run length tt run length représentation unaire 1 1 2 01 3 001 4 0001 5 00001 6 000001 7 0000001 8 00000001 n n-1 zéros suivis d'un 1 tt~leaf : cet indicateur booléen indique si le dernier triangle de la suite en cours est un triangle d'une feuille. S'il ne s'agit pas d'un triangle d'une feuille, il s'agit d'un triangle de branchement. Ce champ est codé de façon arithmétique. triangulated : cette valeur booléenne indique si le composant en cours contient uniquement des triangles. Ce champ est codé de façon arithmétique. marching~triangle : cette valeur booléenne est déterminée par la position du triangle dans l'arborescence des triangles. La valeur marching~triangle égale 0 si le triangle est une feuille ou un triangle de branchement, et sinon marching~triangle = 1. marching~pattern : cet indicateur booléen indique la séquence de progression des arêtes à l'intérieur d'une suite de triangles. Un "0" représente une progression vers la gauche, et un "1" une progression vers la droite. Ce champ est codé de façon arithmétique. polygon~edge : cet indicateur booléen indique si la base du triangle en cours est une arête qui devra être conservée lors de la reconstitution de l'objet de treillis tridimensionnel. Si la base du triangle en cours n'est pas conservée, elle est rejetée. Ce champ est codé de façon arithmétique. # triangle coord bit : cette valeur booléenne indique la valeur d'un bit de géométrie. Ce champ est codé de façon arithmétique. coord heading bit : cette valeur booléenne indique la valeur d'un bit de géométrie de tête. Ce champ est codé de façon arithmétique. coord~sign~bit : cette valeur booléenne indique le signe d'un échantillon de géométrie. Ce champ est codé de façon arithmétique. coord trailing bit . cette valeur booléenne indique la valeur d'un bit final d'une géométrie. Ce champ est codé de façon arithmétique. normal bit . cette valeur booléenne indique la valeur d'un bit de normale. Ce champ est codé de façon arithmétique. normal heading bit : cette valeur booléenne indique la valeur d'un bit d'une normale de tête. Ce champ est codé de façon arithmétique. normal sign bit . cette valeur booléenne indique le signe d'un échantillon de normale. Ce champ est codé de façon arithmétique. normal~trailing~bit : cette valeur booléenne indique la valeur d'un bit final de normale. Ce champ est codé de façon arithmétique. color~bit : cette valeur booléenne indique la valeur d'un bit de couleur. Ce champ est codé de façon arithmétique. color heading bit : cette valeur booléenne indique la valeur d'un bit de couleur de tête. Ce champ est codé de façon arithmétique. color sign bit . cette valeur booléenne indique le signe d'un échantillon de couleur. Ce champ est codé de façon arithmétique. color~trailing~bit : cette valeur booléenne indique la valeur d'un bit final de couleur. Ce champ est codé de façon arithmétique. texCoord~bit : cette valeur booléenne indique la valeur d'un bit de texture. Ce champ est codé de façon arithmétique. texCoord~heading~bit : cette valeur booléenne indique la valeur d'un bit de texture de tête. Ce champ est codé de façon arithmétique. texCoord sign bit . cette valeur booléenne indique le signe d'un échantillon de texture. Ce champ est codé de façon arithmétique. texCoord~trailing~bit : cette valeur booléenne indique la valeur d'un bit final de texture. Ce champ est codé de façon arithmétique. # 3D~Mesh~Object~Forest~Split MOFS start code . il s'agit d'un code unique d'une longueur de 32 bits (sc+7) qui est utilisé pour la synchronisation. mofs~id : ce nombre entier non signé sur 8 bits spécifie un identificateur unique pour le composant de séparation de forêt. pre~smoothing cette valeur booléenne indique si l'opération de séparation de forêt en cours utilise une étape de pré-lissage pour prédire globalement les positions des sommets. pre~smoothing~n : cette valeur en nombre entier indique le nombre des itérations du filtre de pré-lissage. pre~smoothing~lambda : cette valeur en virgule flottante constitue le premier paramètre du filtre de pré-lissage. pre~smoothing~mu : cette valeur en virgule flottante constitue le second paramètre du filtre de pré-lissage. post~smoothing cette valeur booléenne indique si l'opération de séparation de forêt en cours utilise une étape de pré-lissage pour prédire globalement les positions des sommets. post~smoothing~n : cette valeur en nombre entier indique le nombre des itérations du filtre de post-lissage. post~smoothing~lambda : cette valeur en virgule flottante constitue le premier paramètre du filtre de post-lissage. post~smoothing~mu : cette valeur en virgule flottante constitue le second paramètre du filtre de post-lissage. sharp-edges : cette valeur booléenne indique si des données sont incluses dans le flux de bits pour repérer les arêtes de discontinuité du lissage ou non. Si sharp-edges 0 aucune arête n'est repérée comme arête de discontinuité de lissage. Si les arêtes de discontinuité de lissage sont repérées, alors à la fois les filtres de pré-lissage et de post-lissage les prennent en compte. fixed vertices . cette valeur booléenne indique si des données sont incluses dans le flux de bits pour repérer les sommets qui ne se déplacent pas durant le processus de lissage. Si sharp edges==0 tous les sommets sont autorisés à se déplacer. Si des sommets fixes sont repérés, alors à la fois les filtres de pré-lissage et de post-lissage les prennent en compte. edge~mark : cette valeur booléenne indique si une arête correspondante est repéré comme étant une arête de discontinuité de lissage. vertex~mark : cette valeur booléenne indique si un sommet correspondant est repérée comme étant un sommet fixe ou non. tree edge . cette valeur booléenne indique si une arête devrait être ajoutée à la forêt construite jusqu'à présent. other update : cette valeur booléenne indique si des mises à jour pour les coordonnées et les propriétés des sommets associées à des faces non incidentes pour un arbre quelconque de la forêt, suivent dans le flux binaire ou non. Conformément à la présente invention, en premier lieu, même si une erreur de transmission est générée, seule la partie comportant l'erreur est à nouveau transmise, en réduisant ainsi la charge du réseau et le temps de transmission. En second lieu, seule une partie sélectionnée des données peut être rétablie et les triangles ou les polygones pour la partie rétablie sont traités, en affichant ainsi les données sur un dispositif d'affichage. REVENDICATIONS 1. Procédé de codage progressif d'informations d'un treillis tridimensionnel (3D) comprenant les étapes consistant à : (a) diviser un treillis de triangles tridimensionnel d'un modèle en un ou plusieurs composants connectés, (b) générer un graphe des sommets et un graphe des triangles pour chacun des composants connectés, (c) segmenter le graphe des sommets et le graphe des triangles constituant les composants connectés en des partitions de données, chacune étant capable d'être décodée indépendamment pour les composants connectés respectifs et ensuite coder celles-ci, (d) coder la géométrie contenant les positions des sommets des triangles constituant chaque partition, et la photométrie contenant les informations de coordonnées de couleur, de normale et de texture, pour les partitions de données respectives. 2. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (c), le graphe des sommets et le graphe des triangles constituant les composants connectés sont segmentés en des partitions de données indépendantes pour les composants connectés et ensuite codés. 3. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (c), tous les graphes des sommets appartenant au modèle sont rassemblés et séparés en des partitions de données présentant une taille prédéterminée pour être ensuite codés, et la totalité des graphes des triangles appartenant au modèle est rassemblée et segmentée en des partitions de données présentant une taille prédéterminée pour être ensuite codée. 4. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (c), les graphes des sommets constituant chaque composant connecté sont codés en une partition de données, et les graphes des triangles sont segmentés en des partitions de données présentant une taille prédéterminée pour être ensuite codés. 5. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (c), les graphes des sommets et les graphes des triangles constituant les composants connectés respectifs sont segmentés en utilisant l'un des types de partition prescrit et codé, et ensuite le type de partition utilisé pour la segmentation est codé. 6. Procédé de codage progressif selon la revendication 5, dans lequel les types de partition comprennent un premier type de partition dans lequel un ou plusieurs graphes de sommets et graphes de triangles sont contenus de façon séquentielle, un second type de partition dans lequel un seul graphe de sommets est contenu, un troisième type de partition dans lequel les graphes des sommets se rapportant aux graphes des triangles contenus dans un autre type de partition et une partie des graphes des triangles correspondant aux graphes des sommets sont contenus, et un quatrième type de partition dans lequel seuls des graphes de triangles sont contenus. 7. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (c) parmi deux branches connectées à un triangle de branchement, la branche présentant moins de triangles est codée en premier et des informations d'orientation indicatives d'une direction de parcours sont alors codées. 8. Procédé de codage progressif selon la revendication 7, dans lequel les informations d'orientation sont fournies pour chaque partition de données contenant le graphe des triangles. 9. Procédé de codage progressif selon la revendication 7, dans lequel les informations d'orientation sont agencées en arborescences de triangles constituant les graphes des triangles. 10. Procédé de codage progressif selon la revendication 7, dans lequel les informations d'orientation sont agencées en données de triangles constituant les graphes des triangles. 11. Procédé de codage progressif selon la revendication 1, dans lequel, si un triangle de branchement existe lorsque les graphes des triangles sont segmentés et codés en des partitions de données à l'étape (c), la segmentation des données est exécutée à une position où toutes les informations des triangles d'au moins l'une des deux branches connectées au triangle de branchement sont contenues. 12. Procédé de codage progressif selon la revendication 1, dans lequel si un triangle de branchement existe lorsque les graphes des triangles sont segmentés et codés en des partitions de données à l'étape (c), un codage est exécuté avec les sommets en Y du triangle de branchement qui sont contenus dans un entête du graphe des triangles. 13. Procédé de codage progressif selon la revendication 12, dans lequel les sommets en Y sont des index de boucles de délimitation pour ceux-ci. 14. Procédé de codage progressif selon la revendication 1, dans lequel, lorsque le treillis de triangles tridimensionnel est reconstitué à partir d'un treillis polygonal en des triangles de sorte qu'il contient des arêtes polygonales, à l'étape (c), la segmentation n'est qu'exécutée qu'au niveau des arêtes réelles du treillis polygonal, et les arêtes polygonales du premier triangle contenu dans la partition de données du graphe des triangles ne sont pas codées. 15. Procédé de codage progressif selon la revendication 1, dans lequel, lorsque le treillis des triangles tridimensionnel est reconstitué à partir d'un treillis polygonal en des triangles de sorte qu'il contient des arêtes polygonales, à l'étape (c), la segmentation est exécutée à la fois au niveau des arêtes réelles et des arêtes virtuelles du treillis polygonal, et les arêtes polygonales du premier triangle contenu dans la première partition de données du graphe des triangles ne sont pas codées. 16. Procédé de codage progressif selon la revendication 1, dans lequel, lorsque les graphes des triangles sont segmentés et codés en des partitions de données à l'étape (c), un codage est exécuté avec des paires d'index de boucles de délimitation pour des points de départ des limites gauche et droite dans une bande de triangles qui est contenue dans l'en-tête du graphe des triangles. 17. Procédé de codage progressif selon la revendication 16, dans lequel les index destinés à être utilisés dans les paires d'index de boucle de délimitation constituent l'une d'une série de nombres indépendants pour les composants connectés respectifs appartenant au modèle. 18. Procédé de codage progressif selon la revendication 16, dans lequel les index destinés à être utilisés dans les paires d'index de boucle de délimitation constituent l'une d'une série de nombres dans tout le modèle. 19. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (d), la géométrie dans la limite entre les partitions de données n'est codée que dans la partition de données précédente. 20. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (d), la géométrie dans la limite entre des partitions de données est codée à la fois dans la partition de données précédente et la partition de données suivante. 21. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (d), la géométrie dans la limite entre des partitions de données est codée au niveau de la partition de données précédente et la géométrie de la partition de données suivante est connectée à plus d'un nombre prédéterminé est codée dans la partition de données suivante. 22. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (d), une moitié de la géométrie échantillonnée à partir de la géométrie dans la limite entre des partitions de données est codée dans la partition de données précédente, et l'autre moitié est codée dans la partition de données suivante. 23. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (d), un codage est exécuté de façon sélective par un premier procédé de codage de géométrie dans lequel la géométrie dans la limite entre les partitions de données est codée uniquement au niveau de la partition de données précédente, ou bien un second procédé de codage de géométrie dans lequel la géométrie dans la limite entre des partitions de données est codée à la fois dans la partition de données précédentes et la partition de données suivante, et les informations de sélection sont alors codées. 24. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (d), la géométrie et la photométrie sont codées pour les bits de progression respectifs appartenant à une partition de données. 25. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (d), le graphe des triangles, la géométrie et la photométrie appartenant à une partition de données sont rassemblés séparément pour former une partition et ensuite codés. 26. Procédé de codage progressif selon la revendication 1, dans lequel à l'étape (d), le graphe des triangles, la géométrie et la photométrie appartenant à une partition de données sont rassemblés séparément pour former chaque partition séparée et ensuite codés. 27. Procédé de codage progressif selon la revendication 1, dans lequel les partitions de données contiennent chacune un identificateur et des informations concernant un certain nombre de triangles contenu dans celles-ci. 28. Procédé de codage progressif selon la revendication 27, dans lequel l'identificateur correspond à des paires d'index de boucle de délimitation pour des points de départ sur les limites gauche et droite dans une bande de triangles lorsque les graphes de triangles sont segmentés et codés en des partitions de données. 29. Procédé de codage progressif destiné à recevoir des flux binaires codés par un procédé de codage progressif comprenant les étapes consistant à : (a) diviser des flux binaires en entrée en unités de partitions de données, (b) identifier le type de partition de chacune des partitions de données, (c) si les partitions de données contiennent des graphes de sommets, décoder les graphes de sommets afin de générer des boucles de délimitation, (d) si les partitions de données contiennent des graphes de triangles, décoder les graphes de triangles afin de générer un treillis tridimensionnel, et (e) répéter les étapes (a) à (d) afin de générer progressivement des treillis tridimensionnels. 30. Procédé de codage progressif selon la revendication 29, dans lequel les types de partitions comprennent un premier type de partition dans lequel plusieurs graphes de sommets et graphes de triangles sont contenus séquentiellement, un second type de partition dans lequel un seul graphe de sommets est contenu, un troisième type de partition dans lequel les graphes de sommets se rapportant aux graphes de triangles contenus dans un autre type de partition et une partie des graphes de triangles correspondant aux graphes de sommets sont contenus, et un quatrième type de partition dans lequel seuls des graphes de triangles sont contenus. 31. Procédé de codage progressif selon la revendication 29, dans lequel des informations d'orientation sont attribuées à des arborescences de triangles constituant les graphes de triangles et une direction de décodage est déterminée par les informations d'orientation. 32. Procédé de codage progressif selon la revendication 29, dans lequel des informations d'orientation sont attribuées à des données de triangles constituant les graphes de triangles et une direction de décodage est déterminée par les informations d'orientation. 33. Procédé de codage progressif selon la revendication 29, dans lequel des sommets en Y d'un triangle de branchement sont attribués à l'en-tête des graphes de triangles et le décodage est exécuté par les sommets en Y dans le cas du décodage du triangle de branchement.