Rendu physique réaliste

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Rendu Physique Réaliste)
Texture de plaque métallique à losanges, représentée en gros plan via un rendu physique réaliste. Les petites abrasions donnent au métal un aspect rugueux. Une normal map est utilisée pour représenter les reliefs de la texture.

Le terme rendu physique réaliste (en anglais, Physically Based Rendering, ou PBR) regroupe un ensemble de techniques de rendu de scène 3D, qui imitent les modèles physiques décrivant le comportement de la lumière dans le monde réel[1],[2]. Le rendu physique réaliste a pour but de donner aux objets virtuels une apparence proche de celle qu'ils auraient en réalité, et de baser le rendu des matériaux sur un nombre réduit de propriétés physiques[3] qui sont peu interdépendantes[4], pour simplifier le travail des infographistes[2]. L'albédo, la rugosité, et le caractère métallique sont des propriétés de matériau souvent utilisées pour ce type de rendu[5]. Le rendu physique réaliste n'est pas uniquement utilisé pour les rendus photoréalistes et peut se prêter à des styles plus fantaisistes, en témoigne son utilisation dans le film Les mondes de Ralph.

Le nom vient d'un livre de Matt Pharr, Wenzel Jakob, et Greg Humphreys datant de 2004, et pour lequel ils ont reçu un Oscar scientifique et technique de 2013[6]. Ce système est à l'origine utilisé dans le monde des films d'animation, mais il est devenu accessible pour une utilisation en 3D temps réel par la suite. On le retrouve alors dans le moteur de rendu de certains moteurs de jeu vidéo, et, par conséquent, dans les nombreux jeux vidéo 3D qui ont été conçus avec.

Définition[modifier | modifier le code]

Pour qu'un rendu soit considéré comme un rendu physique réaliste, il doit posséder trois propriétés[2].

Premièrement, les surfaces des objets virtuels sont représentées avec le modèle des microfacettes. Dans ce modèle, on considère que chaque surface est composée d'un ensemble de petits miroirs microscopiques appelés facettes. Plus une surface est lisse ou polie, plus les facettes sont alignées avec elle, et plus elle réfléchit les rayons lumineux dans la même direction, ce qui crée des reflets nets (à la façon d'un miroir). À l'inverse, plus la surface est rugueuse, plus les facettes sont orientées de façon chaotique, et plus les rayons lumineux s'éparpillent, ce qui empêche de voir des reflets. Ainsi, on définit une propriété de rugosité que l'on peut changer pour représenter divers matériaux[2].

Deuxièmement, les calculs physiques concernant la lumière respectent le principe de conservation de l'énergie. Si on considère un objet qui n'est pas une source lumineuse, la lumière qui part de cet objet (la diffusion et la réflexion) ne doit pas transporter plus d'énergie que la lumière qui arrive sur sa surface. Autrement dit, plus la dispersion lumineuse (lumière diffuse) est intense, moins la réflexion lumineuse (lumière spéculaire) doit l'être, et inversement, afin que la somme de leurs intensités ne dépasse pas l'intensité de la lumière incidente[2],[3],[7].

Troisièmement, la lumière est calculée avec une fonction de réflectivité bidirectionnelle qui respecte les deux points précédents. Elle prend donc en compte la rugosité des matériaux, via le modèle des microfacettes, et la conservation de l'énergie. Par exemple, l'ombrage de Phong est une fonction de réflectivité bidirectionnelle qui n'est pas considéré comme physiquement réaliste, car elle ne respecte pas le principe de conservation de l'énergie. À l'inverse, la fonction de Cook-Torrance, qui respecte ces conditions, est souvent utilisée pour les rendus physiques réalistes[2].

Intérêt[modifier | modifier le code]

Le rendu physique réaliste a plusieurs intérêts, dans le cadre de travaux concernant l'infographie, les films d'animation ou les jeux vidéo. D'une part, il permet d'obtenir en général un rendu plus réaliste que des algorithmes d'éclairage tels que Phong ou Blinn-Phong (en)[2]. D'autre part, il vise à améliorer l'utilisabilité des logiciels de modélisation pour les infographistes.

En effet, une décision de conception importante est que les différents paramètres proposés aux infographistes doivent être peu interdépendants[4]. Par exemple, si les infographistes modifient directement les indices de dispersion et de réflexion, ils sont susceptibles de violer le principe de conservation de l'énergie, ce qui donne souvent une étrange apparence aux objets représentés. On retire ainsi ces paramètres, qui sont interdépendants lorsqu'il est question de respecter ce principe, au profit d'autres, auxquels on peut donner n'importe quelle valeur sans l'enfreindre et aboutir à un résultat incohérent[7]. Ce choix évite aussi aux infographistes d'avoir recours à des astuces d'éclairage, car respecter le principe de conservation de l'énergie implique que les objets virtuels gardent une luminosité adaptée quelle que soit la façon dont ils sont éclairés[2],[4]. Le rendu physique réaliste permet donc de limiter les essais à effectuer avant de parvenir à un résultat satisfaisant.

Histoire[modifier | modifier le code]

Physically Based Rendering, l'ouvrage fondateur[modifier | modifier le code]

En 2004, Matt Pharr, Wenzel Jakob, et Greg Humphreys publient un livre nommé Physically Based Rendering ; From Theory to Implementation dans lequel ils formalisent leur modèle de rendu 3D du même nom. Comme l'indique son sous-titre, le livre détaille à la fois la théorie derrière ce modèle et des détails d'implémentation pour pouvoir l'utiliser dans un système informatique[1],[8].

Le , la notoriété du livre et son statut de référence dans le domaine du cinéma d'animation font gagner à Matt Pharr, Greg Humphreys et Pat Hanrahan (qui a supervisé Matt Pharr) un des Oscars scientifiques et techniques de 2013[9]. L'éloge justifiant la remise du prix indique : « Le rendu physique réaliste a transformé la façon de faire des éclairages dans le domaine de l'infographie, en simulant de façon plus précise les matériaux et la lumière, permettant ainsi aux artistes du numérique de concentrer sur le cinéma plutôt que sur les aspects complexes du rendu. [...] Physically Based Rendering est à la fois un manuel et une implémentation de code source complète, qui a fourni une feuille de route pratique largement admise pour la plupart des ombrages basés sur la physique utilisés dans la production de films[9]. »

Adoption par le cinéma d'animation[modifier | modifier le code]

Pendant la préparation de leur film d'animation Raiponce, sorti en 2010, les studios d'animation Disney commencent à développer leur propre version du rendu physique réaliste, afin de représenter à l'écran les longs cheveux blonds de la princesse éponyme. Ils sont satisfaits du résultat en ce qui concerne les cheveux, mais ne peuvent pas adapter la technique aux autres matériaux déjà créés pour le film[10].

C'est alors pour leur film suivant, Les mondes de Ralph, sorti en 2012, qu'ils utilisent le rendu physique réaliste pour le rendu de tous les matériaux. Lors de leurs expérimentations, ils établissent des principes à respecter pour que la technique reste commode pour les artistes[10] :

  1. Proposer des paramètres intuitifs plutôt que réalistes,
  2. Proposer le moins de paramètres possible,
  3. Toutes les valeurs plausibles d'un paramètre doivent être comprises entre zéro et un,
  4. On autorise que les paramètres dépassent les limites là où cela est pertinent,
  5. Toutes les combinaisons des paramètres doivent être plausibles.

Adoption par le milieu du jeu vidéo[modifier | modifier le code]

Dans le même temps, les développeurs du studio de jeu vidéo Epic Games effectuent des recherches dans le but de moderniser le moteur de rendu 3D de leur moteur de jeu, le Unreal Engine. S'ils envisagent d'incorporer un rendu physique réaliste basé sur les matériaux pour une meilleure fidélité du rendu, c'est la publication par Disney de leurs résultats sur Les mondes de Ralph et de leurs "principes" qui les convainc que son adoption pouvait être faite tout en gardant une certaine simplicité d'utilisation. Ils établissent alors leurs propres "principes", et leur approche de cette technique est alors ajoutée au Unreal Engine dans sa version 4[11].

Alors que cette pratique était considérée trop gourmande en calculs pour la 3D en temps réel auparavant, elle peut désormais s'étendre dans le milieu du jeu vidéo[12]. D'autres moteurs de jeu s'en dotent alors, comme Unity dans sa version 5 publiée en 2014[12], et ensuite Godot dans sa version 3.0 publiée en [13]. Ce dernier est décrit par ses développeurs comme le premier moteur de jeu à proposer une fonction de réflectivité bidirectionnelle qui suit complètement les "principes" de Disney[13].

Paramètres disponibles pour les matériaux[modifier | modifier le code]

Lorsque les infographistes travaillent avec le rendu physique réaliste, ils sont susceptibles d'agir sur différents paramètres, desquels dépendront le rendu des matériaux.

Sur un objet 3D, les valeurs de ces paramètres sont susceptibles de changer à différents endroits de sa texture. Par exemple, si un objet utilisant un matériau réfléchissant est rayé par usure, les rayures sont plus rugueuses que le reste de la surface et réfléchissent donc moins bien la lumière. De même, un objet peut très bien avoir des parties métalliques et non métalliques. Pour cette raison, les infographistes doivent fournir pour chaque paramètre une texture indiquant la valeur du paramètre pour chaque texel[2],[3].

Texture d'albédo[modifier | modifier le code]

La texture d'albédo indique en chaque texel la quantité d'énergie, à la fois de la lumière réfléchie et de la lumière dispersée par le matériau. Plus intuitivement, elle représente simplement la texture de couleur du matériau, sans prendre en compte les ombres ou les variations de rugosité. Son utilisation est commode, car, si pour un matériau isolateur (non-métallique) la couleur perçue est celle de sa lumière diffuse, pour les matériaux métalliques, la couleur perçue est celle de sa lumière réfléchie. Ainsi, il suffit d'utiliser l'albédo pour déterminer les couleurs, indifféremment du caractère métallique, ou non, du matériau[3].

Texture de rugosité (ou de douceur)[modifier | modifier le code]

La texture de rugosité est une texture en nuances de gris qui indique en chaque texel une valeur de rugosité. Plus un texel est clair (proche du blanc), plus il sera considéré rugueux par le moteur de rendu, et, par conséquent, plus il dispersera la lumière et aura des reflets flous[3]. À l'inverse, plus un texel est sombre (proche du noir), plus il sera considéré lisse, et aura des reflets nets[2].

Plutôt qu'une texture de rugosité, certains moteurs de rendu attendent plutôt, dans leur interface, une texture qui a le même rôle mais qui est "inversée" : la texture de douceur. Dans ce cas les texels plus clairs sont interprétés plus lisses, et les texels plus sombres plus rugueux. Cette façon de faire est parfois considérée plus intuitive par les utilisateurs[2].

Texture de répartition du métal[modifier | modifier le code]

La texture de répartition du métal indique pour chaque texel s'il doit être considéré comme métallique ou non[3]. En théorie, un matériau n'est jamais à la fois métallique et isolateur en réalité, donc cette information est binaire et la texture à fournir est uniquement en noir et blanc. Cependant la plupart des moteurs de rendu préfèrent tout de même proposer un continuum de valeurs de "métallicité" entre le "métallique" et le "non-métallique". Cela permet de simuler de façon satisfaisante des imperfections, ou la présence d'un dépôt de matière non métallique comme la poussière, sur la surface des métaux, sans requérir une meilleure résolution de texture. Dans ce cas, la texture à fournir est en nuances de gris[2],[5].

Autres textures non spécifiques au rendu physique réaliste[modifier | modifier le code]

Un rendu physique réaliste peut en général prendre en compte d'autres techniques de rendu qui existent par ailleurs. En plus des textures précitées, il peut être possible d'utiliser des normal maps pour que la lumière se comporte comme si la texture était en relief, des textures de placage de relief pour simuler la modification de la géométrie de l'objet lors du rendu, des textures de déplacement modifiant la géométrie de l'objet lors du rendu, ainsi que des textures d'occlusion ambiante pour représenter des ombres qui ne seront pas calculées en temps réel[2],[5].

Notes et références[modifier | modifier le code]

  1. a et b (en) Matt Pharr, Greg Humphreys et Wenzel Jakob, Physically Based Rendering: From Theory to Implementation, 3ème édition, 2016, Morgan Kaufmann.
  2. a b c d e f g h i j k l et m (en) « LearnOpenGL - Theory », sur learnopengl.com (consulté le )
  3. a b c d e et f « Rendu physique réaliste – 3DCoat », sur 3dcoat.com (consulté le )
  4. a b et c (en) Physically Based Materials, documentation de l'Unreal Engine. Consulté le 13 avril 2017.
  5. a b et c (en-US) « Physically based rendering and Blender materials - Artisticrender.com », Artisticrender.com,‎ (lire en ligne, consulté le )
  6. (en) Physically Based Rendering - News. Consulté le 13 avril 2017.
  7. a et b (en-US) « Basic Theory of Physically-Based Rendering », Marmoset,‎ (lire en ligne, consulté le )
  8. (en) « Physically Based Rendering: From Theory to Implementation », sur www.pbrt.org (consulté le )
  9. a et b (en) « 19 Scientific And Technical Achievements To Be Honored With Academy Awards® », Oscars.org | Academy of Motion Picture Arts and Sciences,‎ (lire en ligne, consulté le )
  10. a et b (en) Présentation sur le développement d'un rendu physique réaliste chez Disney https://blog.selfshadow.com/publications/s2012-shading-course/burley/s2012_pbs_disney_brdf_slides_v2.pdf
  11. (en) Brian Karis, « Real Shading in Unreal Engine 4 », Siggraph,‎ (lire en ligne)
  12. a et b (en) Rod Lopez, Physically Based Shading in Unity 5: A Primer, 29 octobre 2014, blog d'Unity.
  13. a et b (en-US) « Godot team ships Godot 3.0 | CG Channel », sur www.cgchannel.com (consulté le )