Brevet FR2968813A1 — publié le 20120615

La présente invention a pour objet un procédé et un système de rendu d'une scène 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 dimension 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 d'accélération du calcul graphique matériels 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 très largement 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 personnel de faibles capacités tels que des « netbooks », portables bureautiques, tablette PC. Il est donc souhaitable de développer des procédés de rendu les plus performants possible 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 et les objets de la scène. Un avantage du procédé de lancer de rayon est de permettre une parallélisation aisée. 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. Toutefois, les performances des moteurs de lancer de rayon sont fortement dépendantes de la résolution de rendu qui détermine le nombre de rayons, leurs performances étant ainsi médiocres dans le cas de rendu à haute définition. La présente invention a pour objet de résoudre tout ou partie des 25 inconvénients mentionnés ci-dessus. A cet effet, la présente invention concerne un procédé de rendu d'images à partir d'une scène virtuelle en trois dimensions, dans lequel le rendu d'une image finale à une première résolution comprend les étapes consistant à : 30 - procéder à une première étape de rendu à une seconde résolution inférieure à la première résolution afin d'obtenir au moins une image intermédiaire; - opérer un redimensionnement de l'image intermédiaire obtenue à la seconde résolution de façon à obtenir une image à la première résolution - effectuer une détection des contours de l'image façon à déterminer dans ladite image des zones de contour et des zones sans contours; - opérer une seconde étape de rendu correspondant à un 5 suréchantillonnage local par rapport à la première étape de rendu (E1) dans les zones de contour; et - remplacer les pixels dans les zones de contour par les pixels dont la valeur est déduite de la seconde étape de rendu. Le fait de réaliser un rendu à plus faible résolution permet de 10 réaliser des gains de performances importants. L'utilisateur ne perçoit pas de différence notable de qualité induite par le changement de résolution car tous les contours de l'image sont nets. En effet, l'oeil humain est surtout sensible aux contours des objets sur une image. Le crénelage des contours, dus à une pixellisation de ceux-ci donne une sensation de mauvaise qualité d'image. Le 15 fait de réaliser un rendu à plus faible résolution puis un redimensionnement de l'image pourrait accentuer cette sensation. Grâce à la réalisation d'une seconde étape de rendu limitée aux zones de contour et d'une étape de remplacement des pixels correspondant aux dites zones de contour, seules les zones sans contours correspondant à des aplats de couleur sont dégradées, 20 ce qui est quasiment imperceptible pour l'oeil humain. Selon une première possibilité, le redimensionnement de l'image obtenu à la seconde résolution est réalisé avant l'étape de détection de contours, la seconde étape de rendu et l'étape de remplacement des pixels des zones de contour. 25 Dans ce cas, la détection de contour et le remplacement des pixels des zones de contour est réalisé dans une image intermédiaire obtenue à la première résolution. Selon une seconde possibilité, le redimensionnement de l'image obtenue à la seconde résolution est réalisé après l'étape de détection de 30 contours, la seconde étape de rendu et l'étape de remplacement des pixels des zones de contour. Dans ce cas, la détection de contour et le remplacement des pixels des zones de contour est réalisé dans une image intermédiaire obtenue à la seconde résolution. 35 Selon un aspect de l'invention, les étapes de rendu utilisent une technique de lancer de rayon. Selon une première possibilité, la seconde étape de rendu est effectuée en procédant à un lancer de rayon pour chaque pixel appartenant à une zone de contour d'une image intermédiaire à la première résolution. Selon une deuxième possibilité, dans lequel la seconde étape de rendu est effectuée en procédant pour chaque pixel appartenant à une zone de contour à une pluralité de lancers de rayon correspondant à différents points dans le voisinage du pixel, ledit pixel étant calculé en fonction des valeurs obtenues pour la pluralité de lancers de rayons. Selon deux variantes de mises en oeuvre, la seconde étape de 10 rendu est effectuée sur la base d'une image intermédiaire à la première résolution ou à la seconde résolution. Selon un aspect de l'invention, les étapes décrites selon les revendications précédentes sont appliquées : - en utilisant une première valeur de la seconde résolution lors du 15 déplacement du point de vue de l'utilisateur dans la scène 3D, et - en utilisant une seconde valeur de la seconde résolution supérieure à la première valeur lors de l'arrêt du déplacement du point de vue de l'utilisateur. Selon un aspect de l'invention, le procédé comprend une étape de 20 détection automatique de la configuration d'une machine destinée à exécuter le procédé de rendu, puis une étape de choix du mode de rendu afin de procéder à une baisse de la résolution de l'image lors des déplacements du point de vue de l'utilisateur dans la scène. L'invention concerne également un produit programme d'ordinateur 25 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 30 qui est exposée ci-dessous en regard du dessin annexé dans lequel : La figure 1 est un organigramme d'un mode de mise en oeuvre d'un procédé selon l'invention ; La figure 2 illustre les traitements opérés sur les images selon une première et une seconde variante du procédé de figure 1 ; 35 La figure 3 détaille une étape de relancer de rayon dans le cadre du procédé de figure 1 selon une première variante ; La figure 4 détaille une étape de relancer de rayon dans le cadre du procédé de figure 1 selon une seconde variante. La figure 1 représente un mode de mise en oeuvre du procédé de rendu d'images selon l'invention à partir d'une scène virtuelle en trois 5 dimensions utilisant une technique de lancer de rayon. Il apparaît que dans ce mode de mise en oeuvre, trois variantes peuvent être utilisées comme nous le détaillerons ci-dessous. Le but de ce procédé est de fournir le rendu d'une image finale If à une première résolution R1. 10 Dans un premier temps, une première étape E1 de rendu à une seconde résolution R2 inférieure à la première résolution R1 est réalisée, afin d'obtenir une première image intermédiaire 11. Ensuite, selon une première variante du procédé, une étape de redimensionnement E2 de l'image obtenue 11 à la seconde résolution R2 est 15 réalisée afin d'obtenir une seconde image intermédiaire 12 à la première résolution R1 correspondant à celle de l'image finale If. Etant donné que le rendu est calculé à une seconde résolution R2 plus faible que la résolution finale R1, et que ce rendu est redimensionné, un phénomène de crénelage important est présent au niveau des zones de 20 contour ZC de l'image intermédiaire 12, comme cela est représenté par des pointillés sur la figure 2. Une étape de détection de contour E3 est ensuite réalisée dans la seconde image intermédiaire 12 obtenue à la première résolution R1 dans l'image de façon à déterminer dans ladite image des zones de contour ZC et 25 des zones sans contours ZSC. L'algorithme de détection de contour peut être par exemple un algorithme connu sous le nom de Prewitt - Sobel. Une cartographie des contours de l'image, représenté en 13 sur la figure 2 est ainsi obtenue. Selon la première variante du procédé, une seconde étape de 30 rendu E4a est ensuite réalisée qui correspond à un suréchantillonnage local par rapport à la première étape de rendu E1. Ainsi, comme cela est représenté sur la figure 3, un lancer de rayon RR est effectué par pixel P correspondant à une zone de contour ZC de l'image finale à la première résolution R1. Ces dispositions permettent de 35 supprimer l'effet aggravant du crénelage de l'image obtenu du fait du redimensionnement de l'image. Une étape E5 de remplacement des pixels dans les zones de contour ZC de la seconde image intermédiaire 12 obtenue à une seconde résolution R2 par les pixels dont la valeur est déduite de la seconde étape de rendu E4a permet enfin d'obtenir une image finale corrigée If, comme cela est représenté sur la figure 2. Selon une seconde variante du procédé, l'ensemble des étapes correspondant à la première variante sont reprises, à l'exception de la seconde étape de rendu E4a. En effet, selon cette seconde variante, une seconde étape de rendu E4b est réalisée avec un suréchantillonage local dans les zones de contour. En particulier, un nombre N > 1 de rayons RR sont lancés pour chaque pixel P d'une zone de contourZC d'une image à la première résolution R1. La couleur attribuée à ce pixel est déterminée comme une moyenne des valeurs de couleur obtenue pour les rayons lancés RR. La figure 4 illustre un cas dans lequel quatre rayons sont relancés pour un pixel P. Selon une troisième variante du procédé, représentée sur la branche de gauche de l'organigramme de la figure 1, les étapes suivant l'obtention par la première étape de rendu E1 d'une première image intermédiaire 11 à la seconde résolution R2 sont différentes de celles des premières et seconde variantes. Ainsi, sur la base de la première image intermédiaire 11 obtenue à une seconde résolution R2, une étape de détection de contour E6 est réalisée de façon à déterminer dans ladite image des zones de contour ZC et des zones sans contours ZSC. Ensuite, une seconde étape de rendu E7 est réalisée avec un suréchantillonage local dans les zones de contour. En particulier, un nombre N > 1 de rayons RR sont lancés pour chaque pixel P d'une zone de contour ZC d'une image à la seconde résolution R2. La couleur attribuée à ce pixel est déterminée comme une moyenne des valeurs de couleur obtenue pour les rayons lancés RR. Le nombre N est par exemple égal à 4. Une étape E8 de remplacement des pixels dans les zones de contour ZC de la première image intermédiaire 11 obtenue à une seconde résolution R2 par les pixels dont la valeur est déduite de la seconde étape de rendu E4b permet enfin d'obtenir une seconde image intermédiaire 12'. Enfin, une étape de redimensionnement E9 de la seconde image intermédiaire 12 est réalisée afin d'obtenir l'image finale If à la première résolution R1. La qualité du rendu obtenue avec la seconde variante est supérieure à la qualité de rendu obtenue avec la première variante. La troisième variante fournit une qualité de rendu inférieure à la première variante. II est à noter que la seconde variante est la variante utilisant le plus de ressources, la première variante utilisant moins de ressources que la seconde variante, et la troisième variante utilisant moins de ressources que la première variante. II est possible de laisser le choix de l'utilisation de la première, seconde ou troisième variante à l'utilisateur, ou de rendre ce choix automatique en fonction des caractéristiques de la machine sur lequel est exécuté le logiciel ou programme d'ordinateur mettant en oeuvre les étapes du procédé. Par ailleurs, la seconde résolution R2, comme le nombre de rayon relancés lors de la seconde étape de rendu peuvent être réglés, de façon manuelle et/ou automatique, afin de s'adapter aux performances de la machine considérée. Selon un aspect de l'invention, deux valeurs distinctes de la seconde résolution R2 sont utilisées. Une première valeur R2a de la seconde résolution lors du déplacement du point de vue de l'utilisateur dans la scène 3D, et en utilisant une seconde valeur R2b de la seconde résolution R2 supérieure à la première valeur R2a lors de l'arrêt du déplacement du point de vue de l'utilisateur dans la scène 3D. Par exemple, dans le cas d'une zone de rendu d'une résolution R1 de 19201200, il est possible d'utiliser : - une résolution R2a de rendu en déplacement de 400300, qui est ensuite redimensionnée en 19201200, et - une résolution R2b de rendu à l'arrêt de 800600, qui est ensuite 30 redimensionnée en 19201200. Ainsi, la qualité du rendu est adaptée en fonction de la machine cible, et une dégradation imperceptible de la qualité du rendu, correspondant à une réduction automatique de la taille d'affichage lors du déplacement est effectuée afin de proposer des performances satisfaisante sur des scènes 3D 35 complexes. Dès que l'utilisateur arrête de se déplacer, une image haute définition à la première résolution R1 est calculée et affichée. 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. 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 à partir d'une scène virtuelle en trois dimensions, dans lequel le rendu d'une image finale (If) à une première 5 résolution (R1) comprend les étapes consistant à : - procéder à une première étape de rendu (E1) à une seconde résolution (R2) inférieure à la première résolution (R1) afin d'obtenir au moins une image intermédiaire (I1, I2'); - opérer un redimensionnement (E2, E10) de l'image 10 intermédiaire (I1, 12') obtenu à la seconde résolution (R2) de façon à obtenir une image (12, If) à la première résolution (R1) - effectuer une détection des contours (E3, E7) de l'image façon à déterminer dans ladite image des zones de contour (ZC) et des zones sans contours (ZSC); 15 - opérer une seconde étape de rendu (E4a, E4b, E6) correspondant à un suréchantillonnage local par rapport à la première étape de rendu (E1) dans les zones de contour (ZC); et - remplacer (E5, E8) les pixels (P) dans les zones de contour (ZC) par les pixels dont la valeur est déduite de la seconde étape de rendu (E4a, 20 E4b, E6). 2. Procédé selon la revendication 1, dans lequel le redimensionnement (E2) de l'image (I1) obtenue à la seconde résolution (R2) est réalisé avant l'étape (E3) de détection de contours, la seconde étape de rendu (E4a, E4b) et l'étape de remplacement des pixels (P) des zones de 25 contour (ZC). 3. Procédé selon la revendication 1, dans lequel le redimensionnement (E9) de l'image (I1) obtenue à la seconde résolution (R2) est réalisé après l'étape (E6) de détection de contours, la seconde étape de rendu (E5) et l'étape de remplacement des pixels (P) des zones de 30 contour (ZC). 4. Procédé selon l'une des revendications précédentes, dans lequel les étapes de rendu utilisent une technique de lancer de rayon (RR). 5. Procédé selon la revendication 4, dans lequel la seconde étape de rendu est effectuée en procédant à un lancer de rayon (RR) pour chaque 35 pixel appartenant à une zone de contour (ZC) d'une image intermédiaire (12) à la première résolution (R1). 6. Procédé selon la revendication 4, dans lequel dans lequel la seconde étape de rendu est effectuée en procédant pour chaque pixel appartenant à une zone de contour (ZC) à une pluralité de lancers de rayon (RR) correspondant à différents points dans le voisinage du pixel (P), ledit pixel (P) étant calculé en fonction des valeurs obtenues pour la pluralité de lancers de rayons (RR). 7. Procédé selon la revendication 6, dans lequel la seconde étape de rendu est effectuée sur la base d'une image intermédiaire (12) à la première résolution (R1). 8. Procédé selon la revendication 6, dans lequel la seconde étape de rendu est effectuée sur la base d'une image intermédiaire (I1) à la seconde résolution (R2). 9. Procédé selon l'une des revendications précédentes, dans lequel les étapes décrites selon les revendications précédentes sont appliquées : - en utilisant une première valeur (R2a) de la seconde résolution lors du déplacement du point de vue de l'utilisateur dans la scène 3D, et - en utilisant une seconde valeur (R2b) de la seconde résolution (R2) supérieure à la première valeur (R2a) lors de l'arrêt du déplacement du point de vue de l'utilisateur dans la scène 3D. 10. Procédé selon l'une des revendications précédentes, comprenant une étape de détection automatique de la configuration d'une machine destinée à exécuter le procédé de rendu, puis une étape de choix du mode de rendu afin de procéder à une baisse de la résolution de l'image lors des déplacements du point de vue de l'utilisateur dans la scène. 11. Produit programme d'ordinateur permettant la mise en oeuvre d'un procédé selon l'une des revendications précédentes.