Brevet FR2968812A1 — publié le 20120615

La présente invention a pour objet un procédé et un système de rendu d'images d'une scène virtuelle en trois dimensions en temps réel. Un procédé de rendu en trois dimensions en temps réel consiste à générer une image d'une scène, comprenant éventuellement des éléments animés, dans l'instant précédant son affichage sur un support, par exemple un écran. Un rendu en trois dimensions ou 3D en temps réel est différent d'un rendu en trois dimensions dit « précalculé » dans la mesure ou le rendu de la scène est immédiat et que l'utilisateur a la possibilité de manipuler et d'interagir directement avec la scène, par exemple pour manipuler et changer les couleurs d'un objet, se déplacer au sein d'un univers virtuel, configurer les accessoires d'une automobile, simuler des cas d'urgence. Le rendu 3D des images s'effectue directement sur un périphérique d'affichage dans le cas d'un rendu temps-réel, contrairement à un rendu 3D précalculé dans lequel le résultat du rendu est une image ou une vidéo non modifiable. Pour que le temps de calcul d'un procédé de rendu 3D temps-réel soit imperceptible pour un utilisateur, il doit être inférieur à la persistance rétinienne. La vitesse de rendu des images étant mesurée en image par seconde (fps) ou Hertz (Hz), il apparaît que l'impression pour l'utilisateur d'un mode interactif existe à partir d'une vitesse de rendu de l'ordre de 6 fps, et qu'un procédé de rendu peut être considéré comme temps-réel à partir de 15 fps. Au delà de 72 fps, l'utilisateur ne peut plus remarquer de différence si la vitesse de rendu est encore augmentée. Pour obtenir une telle vitesse de rendu, des moyens matériels d'accélération du calcul graphique dédiés à cette fonction sont couramment utilisés, connus sous le nom d'unité de traitement graphique ou GPU (Graphic Processing Unit). Ainsi, le procédé de rendu mis en oeuvre par un moteur de rendu 3D utilise des algorithmes optimisés, mais également de nombreux prétraitements sur les scènes 3D opérées par le GPU. L'utilisation de tels procédés de rendu en 3D temps réel utilisant une accélération matérielle est freinée par l'hétérogénéité des parcs de machines disponibles ce qui complexifie le déploiement des applications utilisant de tels procédés. Ainsi, plusieurs versions d'une même application doivent être développées et paramétrées pour s'adapter aux différentes configurations matérielles existantes. Les modèles 3D exploités par ces applications sont mêmes fréquemment spécifiques de la configuration matérielle de la machine cible. En outre, ces applications nécessitent une configuration matérielle minimale empêchant leur utilisation sur des terminaux ou ordinateurs personnels de faibles capacités tels que des « netbooks », portables bureautiques, tablettes PC. Il est donc souhaitable de développer des procédés de rendu les plus performants possibles permettant de ne pas utiliser les moyens d'accélération matériels, ou permettant d'utiliser ces moyens de façon optionnelle. Parmi les procédés de rendu 3D en temps-réel, Il est connu, par exemple du document WO2009063319A2, d'utiliser un procédé dit de lancer de rayon, consistant à calculer pour un point donné de l'image la couleur attribuée en calculant les intersections entre un rayon passant par le point de l'image considéré et les objets de la scène. Un avantage du procédé de lancer de rayon est de permettre une parallélisation aisée, notamment en ce qui concerne les calculs relatifs aux rayons primaires. En effet, le calcul des intersections d'un rayon n'influe pas sur celui d'un rayon voisin. Il est donc facile de tirer parti des processeurs multicores modernes et des instructions de type SIMD (Single Instruction, Multiple Data). Afin de calculer de façon efficace les intersections entre les rayons et les objets de la scène, il est connu d'organiser les données concernant les objets de la scène sous forme d'une structure de données spécifique de type arbre regroupant les éléments de la scène par proximité afin de limiter le nombre de calculs d'intersection à réaliser. En particulier, les structures de données du type Grille régulière, octree, BVH, QBVH, BIH, Kdtree sont utilisées. L'utilisation d'une structure spécifique de donnée de ce type permet d'accélérer significativement le rendu de scènes statiques. Dans le cas d'une scène comportant des objets animés, l'utilisation d'une telle structure est complexe et plus coûteuse en temps de calcul car ladite structure doit être mise à jour ou reconstruite lors du rendu de chaque image. La présente invention a pour objet de résoudre tout ou partie des 35 inconvénients mentionnés ci-dessus. A cet effet, la présente invention concerne un procédé de rendu d'images en temps-réel à partir d'une scène virtuelle en trois dimensions utilisant une technique de lancer de rayon, comprenant les étapes consistant à construire à partir du modèle de la scène une structure de données destinée à permettre un calcul accéléré des intersections entre les rayons et la scène 3D, ladite structure de données permettant de regrouper des éléments de la scène par proximité spatiale, caractérisé en ce que la construction de la structure de données comprend une première étape consistant à fusionner l'ensemble des objets statiques de la scène avant de procéder aux regroupements des données géométriques 3D par proximité spatiale. Grâce aux dispositions selon l'invention, et à la création d'une structure de données définissant une organisation des objets dans différentes boîtes englobantes sur la base d'une fusion d'objets, les performances de calcul de l'intersection avec la scène sont améliorées significativement par rapport à une solution connue dans laquelle la structure est construite sur la base d'objets indépendants. En effet, il est ainsi possible de permettre des regroupements entre des données 3D proches appartenant initialement à deux objets distincts. Ces dispositions permettent de réaliser un rendu d'une scène 20 complexe sans utiliser d'accélération graphique de type GPU tout en conservant des performances acceptables. Selon un aspect de l'invention, la structure de données est construite avec l'ensemble des données 3D des objets statiques et, le cas échéant, au moins un objet animé, le ou les objets animés étant marqués 25 spécifiquement lorsque leur animation est activée. Ces dispositions permettent d'une part de traiter les objets animés comme les objets statiques lorsque ceux-ci ne sont pas animés et donc de bénéficier de gains de performance, et d'autre part d'éliminer ces objets des calculs d'intersection de la partie statique de la scène facilement, sans avoir à 30 reconstruire la structure de données contenant les objets statiques. Selon un autre aspect de l'invention, une seconde structure de données spécifique destinée à être mise à jour à chaque image comprenant les objets animés en cours d'animation est construite. Selon un aspect de l'invention, les données 3D relatives aux objets 35 animés ne sont pas situées dans la seconde structure de données, mais restent dans la première structure de donnée statique dans des noeuds de cette structure dépendant de noeuds correspondants aux objets animés. Selon un autre aspect de l'invention, le rendu d'une image finale est réalisé en : - calculant une image intermédiaire représentant les objets statiques et comprenant, pour chaque point de l'image ou est figuré un objet statique des informations de profondeur de l'intersection d'un rayon lancé avec ledit objet statique ; puis - en mettant à jour dans cette image intermédiaire les pixels correspondant à des objets animés en cours d'animation en comparant pour les points de l'image pour lesquels une intersection d'un rayon avec un objet en cours d'animation est détectée les informations de profondeur d'intersection pour la première image intermédiaire et pour l'objet animé considéré, la plus proche intersection étant conservée. Selon un autre aspect de l'invention, la première image intermédiaire comprend également les objets animés qui ne sont pas en cours d'animation. Selon un autre aspect de l'invention, la détermination de la première image est réalisée en utilisant un parcours de la première structure de données regroupant les objets statiques ; et la mise à jour correspondant aux objets en cours d'animation est réalisée en utilisant un parcours de la seconde structure de données regroupant les objets en cours d'animation. Lorsque le point de vue de l'utilisateur arrête de se déplacer par rapport à la scène pendant une durée déterminée, la première image intermédiaire constitue un fond qui reste identique pour toute cette durée et ne nécessite pas de nouveau calcul. Dans ce cas, il suffit à chaque image de copier ce fond et de mettre à jour les pixels avec des objets animés correspondant à la seconde image intermédiaire, si ceux-ci correspondent à des points d'intersection plus proches que ceux du fond. Selon un autre aspect de l'invention, un résultat intermédiaire du procédé de rendu est produit sous forme d'un tampon de donnée, comprenant des informations de position dans l'image et des identifiants d'éléments de la géométrie correspondants. Selon un autre aspect de l'invention, les étapes d'éclairage et/ou 35 d'ombrage et/ou une ou plusieurs passes de retraitement sont réalisées en utilisant le tampon de données. Ces dispositions permettent de réaliser les étapes de type éclairage et/ou d'ombrage et/ou une ou plusieurs passes de retraitement sans interférer avec les première étapes de lancer de rayon. Selon un autre aspect de l'invention, une détection automatique de la configuration de la machine utilisateur est réalisée afin de choisir le mode de rendu et les options disponibles, et en particulier de permettre l'activation ou la désactivation de la réalisation d'étapes de rendu, de procéder à une baisse de la résolution de l'image lors des déplacement du point de vue de l'utilisateur dans la scène ou de désactiver des fonctionnalités d'ombrage et/ou de calcul de réflexion et/ou de transparence. Selon un autre aspect de l'invention, la structure de données utilisée peut notamment être une structure du type « hiérarchie de boîte englobante » BVH (Bounding Volume Hierarchy). Selon un autre aspect de l'invention, les données géométriques 3D des objets statiques sont traitées pour leur appliquer des transformations (ou « baking ») de façon à exprimer leurs coordonnées dans un repère de la scène commun à l'ensemble des objets. Selon un autre aspect de l'invention, les données géométriques 3D correspondants aux objets animés subissent également un traitement de transformation (ou « baking ») de façon à exprimer leurs coordonnées dans le repère de la scène en prenant en compte la position originale des objets animés dans l'animation. Ces dispositions permettent de faciliter le calcul des intersections entre la géométrie de la scène et les rayons lancés. Selon un autre aspect de l'invention, la structure de données comporte une arborescence présentant un ensemble de noeuds, ces noeuds étant stockés en série dans un tableau, chaque noeud de l'arborescence contenant une référence sur un noeud fils de gauche ou respectivement de droite, le noeud fils de droite, respectivement de gauche, se situant dans la case suivante du tableau. Selon un autre aspect de l'invention, la structure de données comporte une arborescence dont les feuilles comprennent un pointeur ou une référence sur des données géométriques de la scène contenues dans le modèle 3D. L'invention concerne également un produit programme d'ordinateur mettant en oeuvre les étapes du procédé décrit ci-dessus, ainsi qu'un système informatique comprenant un ou plusieurs ordinateurs ou terminaux en possession d'un utilisateur comprenant un ou plusieurs processeurs permettant l'exécution de ce programme. L'invention sera mieux comprise à l'aide de la description détaillée qui est exposée ci-dessous en regard du dessin annexé dans lequel : La figure 1 est un organigramme d'une partie du procédé selon l'invention ; La figure 2 illustre schématique le principe de l'étape de fusion des objets statiques du procédé de figure 1 ; Les figures 3 et 4 illustrent l'étape de construction de la structure de données rassemblant les éléments de la scène par proximité spatiale du procédé de figure 1 ; Les figures 5 et 6 illustrent la structure de données utilisée par le procédé de figure 1 ; La figure 7 illustre la relation entre la structure de donnée relative aux objets statiques et la structure de données relative aux objets en cours d'animation. La figure 8 illustre l'étape de rendu du procédé de figure 1. La figure 9 illustre la mise à jour et le rendu dans le cas d'une 20 scène comprenant des objets animés. La figure 10a illustre un parcours d'une structure de données dans le cadre de l'étape de rendu du procédé de figure 1 pour un rayon particulier, pour la partie statique d'une scène comprenant des objets animés. La figure 10b illustre un parcours d'une structure de données dans 25 le cadre de l'étape de rendu du procédé de figure 1 pour un rayon particulier, pour la partie animée d'une scène comprenant des objets animés. La figure 11 illustre les sous étapes de l'étape de rendu du procédé de figure 1. La figure 12 illustre une sous étape de prise en compte de la 30 transparence dans l'étape de rendu du procédé de figure 1 et de figure 9. La figure 13 illustre une sous étape de prise en compte des ombres portées dans l'étape de rendu du procédé de figure 1 et de figure 9. La figure 14 est un tableau reprenant des mesures de performance pour le rendu d'une scène-type. 35 La figure 15 illustre la séparation de paquets de rayon dans le cadre d'une étape de rendu du procédé de figure 1. Comme cela est représenté sur la figure 1, un procédé selon l'invention permet de traiter en entrée un modèle 3D représentant une scène Sc virtuelle 3D selon un format de type standard et de lui appliquer dans une première étape El une analyse destinée à identifier les objets statiques OS de la scène Sc et les objets animés OA. Dans une seconde étape E2, une fusion ou un « effondrement » des objets statiques OS est réalisée, de manière à obtenir un seul objet OSF fusionné comprenant l'ensemble des données 3D relatives aux objets statiques OS, comme cela est illustré sur la figure 2. Dans une troisième étape E3, une structure de données S spécifique et destinée à permettre un calcul accéléré des intersections entre les rayons et les éléments de la scène 3D est construite. Cette structure de données permettant de regrouper les données 3D de la scène Sc, notamment constituées par des triangles T, par proximité spatiale. La structure S comprend une arborescence présentant un ensemble de noeuds et de feuilles. Un noeud contient une information de boîte englobante BE. La boîte englobante BE est alignée sur les axes du repère global de la scène Sc, ce qui est désigné de façon connue par l'acronyme « AABB » 20 (Axis Aligned Bounding Box). Lorsqu'il s'agit d'une feuille f, le noeud contient, en plus de la boîte englobante, un groupe de données 3D, notamment constitués par des triangles. La structure S de donnée utilisée peut notamment être une 25 structure du type « hiérarchie de boîte englobante » ou BVH (Bounding Volume Hierarchy). Le BVH est utilisé car il possède une faible empreinte mémoire et est rapide à construire. D'autres types de structures de données peuvent toutefois être utilisés. A titre d'exemple, on peut citer les structures comprenant une grille 30 régulière, un octree, un BIH qui est une variante du BVH, un QBVH qui est une variante du BVH qui vise à diviser un noeud en 4 au lieu de 2, un KdTree. Les deux structures qui sont principalement utilisées sont le KdTree et le BVH car elles sont adaptatives et peuvent donc traiter efficacement des scènes présentant des différences importantes dans la densité des données 3D, que 35 l'on peut illustrer par une scène comprenant une théière dans un stade, la théière représentant une densité locale très importantes de données dans un ensemble de taille comparativement plus grand. Ces deux structures sont relativement rapides à construire et à traverser par rapport aux autres structures mentionnées ci-dessus. La structure S arborescente comprend une racine R, un noeud NOSF correspondant aux objets statiques de la scène, des noeuds NOA correspondant à chacun des objets animés, et des noeuds intermédiaires NI de regroupement deux par deux entre les noeuds NOSF et NOA jusqu'à la racine comme cela est représenté notamment sur la figure 6 et sur la figure 5. Lors de la mise en place de la structure S, les données 3D constitués par des triangles appartenant à l'objet statique fusionné et accessibles en dessous du noeud NOSF sont traitées pour leur appliquer des transformations (ou « baking ») de façon à exprimer leurs coordonnées dans le repère de la scène, et non plus dans le repère local de chaque objet. Cette disposition permet d'appliquer ces transformations une seule fois avant le rendu et d'optimiser ainsi la vitesse de procédé. De la même façon, les données 3d constituées par des triangles des noeuds NOA correspondants aux objets animés subissent ce prétraitement de transformation en prenant en compte la position originale de l'objet OA dans l'animation. La construction des niveaux inférieurs de l'arborescence de la structure S, en dessous des noeuds NOSF et NOA, est réalisée en regroupant des données 3D par proximité selon une heuristique appelée SAH. D'autres méthodes de regroupement spatial peuvent être également utilisées. Selon un mode de mise en oeuvre, la première coupure de la géométrie de la scène est réalisée selon l'axe le plus long de celle-ci. En appliquant par la suite la méthode SAH, la boite englobante B correspondant à un noeud sera découpée en un nombre déterminé X de pré-coupures sur chaque axe. Un noeud n donné n'étant pas une feuille de l'arborescence 30 possède deux liens vers deux noeuds fils nd et ng qui seront disposés respectivement à droite et à gauche d'une coupure. Chaque triangle de la géométrie comprise dans la boîte englobante BE(n) d'un noeud n à un niveau donné de l'arborescence sera inséré dans le noeud fils de droite nd ou de gauche correspondant à la partie 35 droite ou gauche de la coupure, en fonction de la position de son barycentre. La position de la coupure C parmi les X pré-coupures est déterminée en fonction d'un coefficient K pondéré par le nombre de triangles T et la surface de la boite englobante BE de ces triangles T se trouvant de chaque côté de la coupure C comme cela est illustré sur la figure 4. L'utilisation d'un nombre discret X d e p ré-coupures permet 5 d'augmenter la rapidité du calcul de ces coupures. Deux boîtes englobantes BE(nd) et BE(ng) sont ainsi déterminées pour les noeuds fils droit nd et gauche ng respectivement. La réalisation de la coupure décrite ci-dessus est répétée pour les noeuds fils nd et ng jusqu'à atteindre un critère d'arrêt et à constituer les feuilles 10 de l'arborescence. Selon un mode de réalisation le critère d'arrêt est un nombre de triangle par feuille de l'arborescence, par exemple égal à 5, ce nombre pouvant être réglable. Selon un aspect de l'invention, les noeuds de l'arborescence sont stockés en série dans un tableau, chaque noeud n contenant une référence sur 15 le noeud fils de gauche. Le noeud fils de droite se situe dans la case suivante du tableau. Selon une variante, chaque noeud n contenant une référence sur le noeud fils de droite. Le noeud fils de gauche se situe dans la case suivante du tableau. 20 Les noeuds f constituant les feuilles de l'arborescence comprennent pour leur part un pointeur sur des données géométriques de la scène Sc contenus dans le modèle 3D M. En particulier, les données référencées concernent: les données 3D constituées par les coordonnées des triangles T, des informations sur les 25 textures et les matériaux correspondants. Une fois la structure S telle que décrite ci-dessus ainsi constituée, un rendu de la scène peut être réalisée dans une quatrième étape E4. Le procédé selon l'invention utilise une méthode de rendu de lancer de rayon. 30 Il convient donc de calculer pour un point donné de l'image la couleur attribuée en calculant les intersections entre un rayon passant par le point de l'image considéré et les objets statiques OS ou les objets animés OA de la scène Sc. Les calculs d'intersection utilisent la structure de données S. 35 Ainsi, cette structure est parcourue et les tests suivants sont effectués sur les noeuds n de cette structure: (1) La boite englobante BE(n) du noeud est-elle devant ou derrière la caméra ? (2) cette boite est-elle dans une pyramide de vision (ou Frustum) délimitée par le champ de vision de la caméra délimitée entre un plan proche et un plan lointain ? (3) Existe-t-il une intersection entre la boîte et un rayon particulier correspondant à un point de l'image ? Dans le cas d'une scène comprenant des objets animés OA, la structure S doit prendre en compte les déplacements de ces objets animés à partir du moment où leur animation est active. Tant que ces objets restent immobiles, ceux-ci peuvent être traités comme des objets statiques. A partir du moment où l'animation est active, un traitement spécifique doit être envisagé, étant donné que les boites englobantes calculées et la structure S doivent être modifiées. A cet effet, lors de l'activation de l'animation d'un objet OA, les éléments de cet objet sont « blacklistés » ou marqués comme animés dans la structure de donnée S. Par ailleurs, les traitements de transformation (« baking ») pour exprimer les coordonnées de la géométrie dans le repère de la scène Sc sont 20 annulés. Le noeud NOA correspondant à l'objet animé est inséré dans une seconde structure de données « dynamique » Sa correspondant aux objets animés en cours d'animation, par exemple de type BVH. Cette seconde structure de donnée Sa comprend, comme cela est 25 représenté sur la figure 7, une racine R, des noeuds animés NOAa correspondant aux objets animés en cours d'animation, et des noeuds intermédiaires NI de regroupement deux par deux entre les noeuds NOAa jusqu'à la racine. Selon un aspect de l'invention, les données 3D relatives aux objets 30 animés OA ne sont pas situées dans la structure de donnée Sa, mais restent dans la structure de donnée statique Sa dans les noeuds n en dessous du noeud d'objet animé NOA. Ainsi, comme cela est représenté sur la figure 7, lors d'un parcours de la structure de donnée des objets en cours d'animation Sa, si on arrive à un 35 noeud correspondant à un objet animé, par exemple le noeud référence NOAa2 sur la figure, on parcourt ensuite, comme cela est indiqué par la flèche t de transition, la partie de la structure de données statique S sous le noeud NOAa2 correspondant au même objet OAa2. Dans la structure S, comme cela est indiqué par la croix de marquage m, le noeud NOAa2 est blacklisté ou marqué en tant qu'objet animé. Ainsi les prétransformations géométriques (ou « baking ») pour ce noeud ont donc été annulées. Les transformations géométriques pour l'image considérées, qui corresponde à une position dans l'animation sont appliquées lors du parcours des noeuds n en dessous du noeud NOAa2 jusqu'aux feuilles. Ces dispositions évitent de recopier toutes les données géométriques dans deux structures. Selon un aspect de l'invention, le rendu d'une image finale I est réalisé en : - calculant dans un premier temps une première image intermédiaire Is comprenant tous les objets statiques OS et animés OAs non en cours d'animation et des informations de profondeur des intersections correspondant à chaque point de l'image Is ; puis - en mettant à jour dans cette image intermédiaire Is les pixels correspondant à des objets animés en cours d'animation OAa en comparant pour les points de l'image I pour lesquels une intersection d'un rayon avec un objet en cours d'animation OAa est détecté les informations de profondeur d'intersection d pour la première image intermédiaire et pour l'objet animé considéré OAa, la plus proche intersection étant conservée. La détermination de la première image intermédiaire Is est réalisée en utilisant un parcours de la première structure de données S regroupant les objets statiques OS et animés AOa non en cours d'animation; et la mise à jour correspondants aux objets en cours d'animation est réalisée en utilisant un parcours de la seconde structure de données Sa regroupant les objets en cours d'animation AOa. Comme cela est schématiquement représenté sur la figure 9, il convient donc pour chaque image de mettre à jour la structure Sa dans une première étape ER1, puis de procéder à une traversée de cette structure Sa des objets animés dans une seconde étape ER2 pour chaque rayon. Si le point de vue par rapport à la scène a été modifié, il convient également de procéder à un parcours de la structure S dans une troisième étape ER3. Enfin, un éclairage (« Shading ») est réalisé. Il est à noter que les étapes ER2 et ER3 ne sont pas nécessairement séquentielles mais peuvent être réalisées en parallèle. De la même façon, les étapes ER2, ER3 et ER4 ne sont pas nécessairement séparées, comme cela sera détaillé ultérieurement. Le calcul d'intersection utilisé à l'étape ER4 référencée sur la figure 9 pour la détermination de la première image Is en se basant sur la partie statique de la structure S est décrit sur la figure 10a pour un rayon donné Ry. Le parcours de la structure S débute à partir de la racine R comme 10 cela est indiqué à l'étape EIO et utilise une pile de traitement qui est initialement vide. Dans une étape E11, on détermine si le noeud n considéré est une feuille f. Si oui, dans une étape EI2, on détermine si le rayon Ry présente 15 une intersection avec la boîte englobante BE de ladite feuille f. Si oui, on détermine dans une étape EI3 l'intersection du rayon Ry avec la géométrie correspondant à la feuille et constituée par des triangles T, puis on procède, dans une étape EI4 à l'écriture du résultat, comprenant notamment la profondeur d de l'intersection par rapport au point de l'image et 20 une contribution à la couleur du point de l'image. Ensuite, dans une étape EI5, on vérifie si la pile de traitement de noeuds n à parcourir est vide. Si oui, le parcours de l'arborescence pour le rayon Ry est achevé. Sinon, on retourne à l'étape E11 pour une nouvelle itération. 25 Dans le cas où, à l'étape EI2, il apparaît qu'il n'existe pas d'intersection entre le rayon Ry et la boite englobante BE de la feuille f, l'étape EI5 est réalisée. Considérons à présent le cas où le résultat du test de l'étape E11 est négatif, c'est à dire que le noeud n n'est pas une feuille. 30 Dans ce cas, dans une étape EI7, on détermine si le rayon Ry présente une intersection avec la boîte englobante BE du noeud n. Si oui, on détermine dans une étape EI8 si les noeuds fils nd et ng du noeud n sont marqués comme étant animés (ou « blacklistés »). Si certains des fils ne sont pas marqués (« blacklistés »), ceux-ci 35 sont empilés sur la pile de traitement dans une étape EI9. On retourne ensuite à l'étape EI5. Si dans l'étape EI8 il est constaté que tous les fils sont marqués, l'étape EI5 est exécutée comme décrit ci-dessus. L'utilisation de cette traversée de l'arbre pour les rayons Ry correspondants aux points de l'image permet de constituer la première image 5 Is. Le calcul d'intersection utilisé à l'étape ER2 référencée sur la figure 9 qui utilise un parcours de la structure regroupant les objets animés Sa afin de calculer l'image la, et décrit à la décrit à la figure 10b, est similaire à celui décrit en référence à la figure 10a. Toutefois, le test concernant le 10 marquage a été supprimé. Ainsi, il dans le cas ou le test de l'étape E17a est positif, un empilage des noeuds fils dans la pile de traitement est réalisé, sans vérification d'un marquage éventuel. Comme nous l'avons vu précédemment, les données géométriques en elles-mêmes ne sont pas contenues dans la structure Sa, mais dans la 15 structure S L'étape ER4 d'éclairage (« shading ») indiquée sur la figure 9 va être à présent détaillée en référence aux figures 11 à 13. La figure 11 détaille de façon générale les différentes étapes de rendu. Comme nous l'avons indiqué ci-dessus, les étapes d'éclairage/shading 20 peuvent être réalisées en plusieurs étapes, de façon combinée avec plusieurs étapes de lancer de rayon. Ainsi, après une première étape ERD1 de création de paquets de rayons P, la réalisation d'un calcul pour un rayon Ry primaire tel que détaillé en référence aux figures 9, 10a, 10b, est réalisé dans une seconde étape ERD2. 25 Dans une troisième étape ERD3, un éclairage (« Shading ») est réalisé ainsi qu'un lancer de rayons d'ombre comme cela est détaillé sur la figure 13. Dans une quatrième étape ERD4, un calcul des rayons de transparence est effectué, qui sera détaillé ci-dessous en référence à la figure 12. Puis, dans une cinquième étape ERD5, un éclairage (« Shading ») 30 est réalisé ainsi qu'un lancer de rayons d'ombre. Dans une sixième étape ERD6, un calcul des rayons de transparence est effectué. Puis, dans une septième étape ERD7, un éclairage (« Shading ») est réalisé ainsi qu'un lancer de rayons d'ombre. Dans une huitième étape ERD8, un calcul des rayons d'anti 35 aliasing est effectué. Puis, dans une étape ERD9, un éclairage (« Shading ») est réalisé ainsi qu'un lancer de rayons d'ombre. En se référant à présent à la figure 12, la prise en compte des objets transparents est détaillée. Dans une étape ETO, un rendu relatif aux rayons primaires tel que décrit en référence aux figures 10a et 10b est réalisé. Au cours de ce rendu pour les rayons primaires, il est opéré un test, non représenté sur les figures 10a et 10b mais représenté à l'étape ET1 de la figure 12, dans lequel on détermine si une intersection avec un objet transparent intervient. Si aucune intersection avec un objet transparent n'est détectée, la vérification est terminée en étape ET5. Si une intersection avec un objet transparent est détectée, dans une étape ET2 ultérieure au rendu des rayons primaires, un déplacement de l'origine du rayon est réalisé, pour positionner l'origine au niveau de l'intersection avec la surface transparente. Par ailleurs, il est possible de marquer ou de « blacklister » la surface transparente, c'est-à-dire les triangles T faisant partie de cette surface, pour éviter de générer la détection d'une intersection du rayon réfléchi sur cette surface en raison d'une imprécision dans le positionnement relatif de la nouvelle origine et de la surface transparente. Ensuite, dans une étape ET3, un nouveau parcours des structures de données S, Sa est réalisé pour déterminer les nouvelles intersections, puis 20 dans une étape ET4, un éclairage (« shading ») est réalisé. Comme cela est décrit sur la figure 13, la prise en compte des ombres portées est réalisée de la façon suivante. Dans le cadre d'un rendu pour les rayons primaire, il est déterminé dans une étape E01 la présence ou non de lumières projetant des ombres sur 25 la scène. Dans ce cas, la création d'un paquet d'ombre est réalisée dans une seconde étape EO2, puis dans une troisième étape E03, le rendu est réalisé en prenant en compte ces paquets de rayons d'ombres. II est à noter que le calcul des lancers de rayon peut être parallélisé 30 de la façon décrite sur la figure 15. Ainsi, en partageant l'image I en portions correspondant chacune à un paquet P de rayons, par exemple comprenant 16x16 rayons, il est possible de traiter en parallèle les calculs pour les différents paquets de rayons. Des instructions de type Single Instruction, Multiple data 35 SIMD (MMX, 3DNow!, SSE, SSE2, SSE3, SSSE3 et SSE4) peuvent être utilisées. Les calculs peuvent être parallélisés sur les processeurs de la machine. Les performances sont quasiment linéairement multipliées par le nombre de processeurs physiques disponibles. Selon un aspect de l'invention, lors des déplacements du point de vue de l'utilisateur dans la scène, la résolution de l'image peut être baissée afin 5 d'améliorer les performances de rendu. En outre, certaines parties du calcul d'éclairage peuvent également être calculés à des résolutions inférieures ou désactivées pendant les déplacements, comme par exemple les techniques connues sous le nom de Bump Mapping. De la même façon, les calculs de réflexion peuvent être 10 calculés à des résolutions inférieures ou désactivés si nécessaire. Selon un aspect de l'invention, une détection automatique de la configuration de la machine utilisateur est réalisée afin de choisir le mode de rendu et les options disponibles permettant la meilleure expérience utilisateur pour fournir le meilleur niveau de performance. 15 Selon un aspect de l'invention, dans le cas d'un rendu en basse résolution l'anti aliasing est utilisé pour augmenter la qualité du rendu sur les parties de l'image correspondant à des contours. Selon un aspect de l'invention, un résultat intermédiaire du procédé de rendu, avant l'image finale I, est une structure de données intermédiaire B, 20 sous forme d'un tampon de donnée, comprenant des positions dans l'image et des identifiants de triangles T. Ces données sont ordonnées par paquets de rayons P. En particulier, la structure utilisée peut être du type connu sous le nom de « FatBuffer ». 25 Des effets dits de « Post-Process » peuvent être appliqués sur le résultat obtenu, et notamment les effets connus suivants : Depth of Field, Desaturate, RadialMask, LightDirection Mask, Fog, ColorCurve, Glow, MotionBlur, SSAO. Il est également possible de prendre en compte dans le procédé 30 selon l'invention des effets de texturisation, et notamment les effets connus suivants, disponibles par exemple dans le logiciel 3DS MAX® commercialisé par la société Autodesk: Bump, Diffuse, Specular Level, Self Ilium, Opacity, Reflection. Selon un mode de mise en oeuvre, un éclairage de la scène S de 35 type PHONG est effectué. Un éclairage diffus et spéculaire est notamment réalisé. Bien entendu, d'autres types de méthodes d'éclairage peuvent être envisagés. A titre d'exemple, les processeurs suivants permettent la mise en oeuvre d'un logiciel exécutant le procédé selon l'invention : Intel Core i7®, Atom®, Athlon X2® 64, Intel Core2 Quad®, Intel Pentium D®, Intel Pentium III®, Intel Centrino 2®. Le tableau de la figure 14 représente différentes mesures de performance, à titre indicatif, pour un déplacement sur la scène de test « Sponza 93 kTrl » de Crytek© comprenant 93281 triangles et 62852 sommets avec textures. Le protocole de test est le suivant : 135 positions de caméra différentes sont définies dans la scène. On mesure le temps nécessaire (en ms) pour calculer les images correspondant à chaque position. On en déduit ensuite en fps moyen sur tout le parcourt. Les données du tableau indiquent le type de processeur utilisé, la résolution de rendu (en pixels), l'utilisation ou non des textures, la durée nécessaire au rendu d'un chemin sur 135 images (en millisecondes) et le nombre d'image par seconde (fps) moyen obtenu sur le chemin défini. Grâce aux dispositions selon l'invention, un pipeline de rendu adaptatif est mis en place selon les possibilités de calcul et de stockage des matériels utilisés pour la visualisation (station de travail, ordinateur portable, PDA, téléphone mobile, ...), permettant de visualiser en temps réel des scènes composées de quelques millions de polygones et fournissant une qualité d'image adaptée aux possibilités matérielles disponibles. Les dispositions selon l'invention permettent également de ne pas 25 adapter le modèle 3D en entrée du procédé à celui-ci. Bien que l'invention ait été décrite en liaison avec des exemples particuliers de réalisation, il est bien évident qu'elle n'y est nullement limitée et qu'elle comprend tous les équivalents techniques des moyens décrits ainsi que leurs combinaisons si celles-ci entrent dans le cadre de l'invention. REVENDICATIONS1. Procédé de rendu d'images (I) en temps-réel à partir d'une scène (Sc) virtuelle en trois dimensions utilisant une technique de lancer de rayon, comprenant les étapes consistant à construire à partir du modèle de la scène une structure de données (S, Sa) destinée à permettre un calcul accéléré des intersections entre les rayons (Ry) et la scène 3D (Sc), ladite structure de données (S, Sa) permettant de regrouper des éléments de la scène par proximité spatiale, Caractérisé en ce que la construction de la structure de données (S) comprend une étape (E2) consistant à fusionner l'ensemble des objets statiques (OS) de la scène avant de procéder(E3) aux regroupements des données géométriques 3D (T) par proximité spatiale. 2. Procédé selon la revendication 1, dans lequel la structure de données (S) est construite avec l'ensemble des données 3D des objets statiques (OS) et des objets animés (OA), les objets animés (OA) étant marqués spécifiquement lorsque leur animation est activée. 3. Procédé selon l'une des revendications précédentes, dans lequel une seconde structure de données (Sa) spécifique destinée à être mise à jour à chaque image (I) comprenant les objets animés (OAa) en cours d'animation est construite. 4. Procédé selon l'une des revendications précédentes, dans lequel le rendu d'une image finale (I) est réalisé en : - calculant dans un premier temps une première image intermédiaire (Is) représentant les objets statiques (OS) et comprenant, pour chaque point de l'image ou est figuré un objet statique des informations de profondeur (d) de l'intersection d'un rayon lancé avec ledit objet statique (OS) ; puis - en mettant à jour dans cette image intermédiaire (Is) les pixels correspondant à des objets animés (OAa) en cours d'animation en comparant pour les points de l'image pour lesquels une intersection d'un rayon avec un objet en cours d'animation (OAa) est détectée les informations de profondeur d'intersection (d) pour la première image intermédiaire et pour l'objet animé considéré, la plus proche intersection étant conservée. 5. Procédé selon la revendication 4, dans laquelle la première image intermédiaire (la) comprend également les objets animés (OAs) qui ne sont pas en cours d'animation. 6. Procédé selon l'une des revendications 4 ou 5, et selon la revendication 3, dans lequel la détermination de la première image (Is) est réalisée en utilisant un parcours de la première structure de données (S) regroupant les objets statiques (OS, OAs) ; et la mise à jour correspondant aux objets en cours d'animation (OAa) est réalisée en utilisant un parcours de la seconde structure de données (Sa) regroupant les objets en cours d'animation.7. Procédé selon l'une des revendications précédentes, dans lequel un résultat intermédiaire du procédé de rendu est produit sous forme d'un tampon de donnée (B), comprenant des informations de position dans l'image (I) et des identifiants d'élément de la géométrie correspondants (T). 8. Procédé selon la revendication 7, dans lequel les étapes de d'éclairage et/ou d'ombrage et/ou une ou plusieurs passes de retraitement sont réalisées en utilisant le tampon de données (B). 9. Procédé selon l'une des revendications précédentes, dans lequel une détection automatique de la configuration de la machine utilisateur est réalisée afin de choisir le mode de rendu et les options disponibles, et en particulier de permettre l'activation, la dégradation ou la désactivation de la réalisation d'étapes de rendu, de procéder à une baisse de la résolution de l'image lors des déplacement du point de vue de l'utilisateur dans la scène ou de désactiver des fonctionnalités d'éclairage et/ou de calcul de réflexion et/ou de calcul de transparence. 10. Procédé selon l'une des revendications précédentes, dans lequel la structure de données (S) utilisée peut notamment être une structure du type « hiérarchie de boîte englobante » BVH (Bounding Volume Hierarchy). 11. Procédé selon l'une des revendications précédentes, dans lequel, les données géométriques 3D (T) des objets statiques sont traitées pour leur appliquer des transformations (ou « baking ») de façon à exprimer leurs coordonnées dans un repère de la scène (Sc) commun à l'ensemble des objets (OS) de cette scène (Sc). 12. Procédé selon la revendication 11, dans lequel les données géométriques 3D (T) correspondants aux objets animés (OA) subissent 35 également un traitement de transformation (ou « baking ») de façon à exprimerleurs coordonnées dans le repère de la scène (Sc) en prenant en compte la position originale des objets animés (OA) dans l'animation. 13. Procédé selon l'une des revendications précédentes, dans lequel la structure de données (S) comporte une arborescence présentant un ensemble de noeuds (n), lesdits noeuds (n) étant sont stockés en série dans un tableau, chaque noeud (n) n'étant pas une feuille de l'arborescence contenant une référence sur le noeud fils de gauche (ng) respectivement de droite (nd), le noeud fils de droite (nd), respectivement de gauche (ng), se situant dans la case suivante du tableau. 14. Procédé selon l'une des revendications précédentes, dans lequel la structure de données (S) comporte une arborescence dont les feuilles (f) comprennent pour leur part un pointeur ou une référence sur des données géométriques (T) de la scène (Sc) contenus dans le modèle 3D (M). 15. Produit programme d'ordinateur permettant la mise en oeuvre d'un procédé selon l'une des revendications précédentes.