Traçage du chemin – Wikipedia wiki

before-content-x4

Méthode informatique

Une image rendue en utilisant le traçage de chemin, démontrant des caractéristiques notables de la technique
after-content-x4

Traçage de chemin est une méthode d’infographie Monte Carlo pour rendre des images de scènes tridimensionnelles de telle sorte que l’éclairage mondial soit fidèle à la réalité. Fondamentalement, l’algorithme s’intègre sur tout l’éclairage arrivant à un seul point à la surface d’un objet. Cet éclairage est ensuite réduit par une fonction de réflectance de surface (BRDF) pour déterminer la quantité de la caméra du point de vue. Cette procédure d’intégration est répétée pour chaque pixel de l’image de sortie. Lorsqu’ils sont combinés avec des modèles de surfaces physiquement précis, des modèles précis de véritables sources de lumière et des appareils photo optiquement corrects, le traçage de chemin peut produire des images fixes qui ne sont pas en distingue des photographies.

Le traçage de chemin simule naturellement de nombreux effets qui doivent être spécifiquement ajoutés à d’autres méthodes (traçage des rayons conventionnels ou rendu de ligne de scan), tels que les ombres douces, la profondeur de champ, le flou de mouvement, la caustique, l’occlusion ambiante et l’éclairage indirect. La mise en œuvre d’un rendu, y compris ces effets, est en conséquence plus simple. Une version étendue de l’algorithme est réalisée par le traçage volumétrique, qui considère la diffusion de la lumière d’une scène.

En raison de sa précision, de sa nature impartiale et de sa simplicité algorithmique, le traçage de chemin est utilisé pour générer des images de référence lors du test de la qualité des autres algorithmes de rendu. Cependant, l’algorithme de traçage de chemin est relativement inefficace: un très grand nombre de rayons doivent être tracés pour obtenir des images de haute qualité exemptes d’artefacts de bruit. Plusieurs variantes ont été introduites qui sont plus efficaces que l’algorithme d’origine pour de nombreuses scènes, notamment le traçage de chemin bidirectionnel, le traçage volumétrique et le transport de la lumière de métropole.

Histoire [ modifier ]]

L’équation de rendu et son utilisation en informatique ont été présentées par James Kajiya en 1986. [d’abord] Le traçage de chemin a été introduit alors comme un algorithme pour trouver une solution numérique à l’intégrale de l’équation de rendu. Une décennie plus tard, Lafortune a suggéré de nombreux raffinements, notamment le traçage du chemin bidirectionnel. [2]

after-content-x4

Metropolis Light Transport, une méthode de perturbation des chemins précédemment trouvés afin d’augmenter les performances des scènes difficiles, a été introduite en 1997 par Eric Veach et Leonidas J. Guibas.

Plus récemment, les CPU et les GPU sont devenus suffisamment puissants pour rendre les images plus rapidement, provoquant un intérêt plus répandu pour les algorithmes de traçage de chemin. Tim Purcell a présenté pour la première fois un algorithme d’éclairage mondial fonctionnant sur un GPU en 2002. [3] En février 2009, Austin Robison de Nvidia a démontré la première mise en œuvre commerciale d’un traceur de chemin fonctionnant sur un GPU [4] et d’autres implémentations ont suivi, comme celle de Vladimir Koylazov en août 2009. [5] Cela a été aidé par la maturation des kits d’outils de programmation GPGPU tels que CUDA et OpenCL et GPU Rays traçant les SDK tels que Optix.

Le traçage de chemin a joué un rôle important dans l’industrie cinématographique. Les films antérieurs s’étaient appuyés sur le rendu de la ligne de balayage pour produire des effets visuels CG et une animation. En 1998, Blue Sky Studios a rendu le court métrage primé aux Oscars Lapin Avec leur rendu de traçage de traçage de Studio CGI propriétaire, avec des ombres douces et des effets d’éclairage indirect. Le monstre de Sony Pictures ImageWorks a été, en 2006, le premier long métrage d’animation à être rendu entièrement dans un traceur de chemin, en utilisant le rendu commercial d’Arnold. De plus, Walt Disney Animation Studios utilise son propre traceur de chemin optimisé connu sous le nom de Hyperion depuis la production de Grand héros 6 en 2014. [6] Pixar Animation Studios a également adopté le traçage de chemin pour son rendu commercial Renderman.

Description [ modifier ]]

L’équation de rendu de Kajiya adhère à trois principes particuliers de l’optique; Le principe de l’éclairage mondial, le principe de l’équivalence (la lumière réfléchie est équivalente à la lumière émise), et le principe de direction (la lumière réfléchie et la lumière diffusée ont une direction).

Dans le monde réel, les objets et les surfaces sont visibles en raison du fait qu’ils reflètent la lumière. Cette lumière réfléchie illumine ensuite d’autres objets à son tour. De cette simple observation, deux principes suivent.

JE. Pour une scène intérieure donnée, chaque objet dans la pièce doit apporter un éclairage à tous les autres objets.

Ii Deuxièmement, il n’y a aucune distinction à faire entre l’éclairage émis par une source lumineuse et un éclairage reflété d’une surface.

Inventé en 1984, une méthode assez différente appelée radiosité était fidèle aux deux principes. Cependant, la radiosité relie l’écloyance totale tombant sur une surface avec une luminance uniforme qui quitte la surface. Cela a forcé toutes les surfaces à être lembertienne, ou “parfaitement diffuse”. Alors que la radiosité a reçu beaucoup d’attention à son introduction, les surfaces parfaitement diffuses n’existent pas dans le monde réel. La prise de conscience que la diffusion d’une surface dépend à la fois des directions entrantes et sortantes est le principe clé de la fonction de distribution de réflectance bidirectionnelle (BRDF). Cette dépendance de la direction était au centre de la recherche entraînant la publication d’idées importantes tout au long des années 1990, car la prise en compte de la direction a toujours exigé un prix de fortes augmentations des temps de calcul sur les ordinateurs de bureau. Le principe III suit.

Iii. L’éclairage provenant des surfaces doit se disperser dans une direction particulière qui est une fonction de la direction entrante de l’éclairage arrivant, et la direction sortante échantillonnée.

L’équation de Kajiya est un résumé complet de ces trois principes, et le traçage du chemin, qui se rapproche d’une solution à l’équation, leur reste fidèle dans sa mise en œuvre. Il existe d’autres principes d’optique qui ne sont pas au centre de l’équation de Kajiya, et sont donc souvent difficiles ou incorrectement simulés par l’algorithme. Le traçage du chemin est confondu par des phénomènes optiques non contenus dans les trois principes. Par exemple,

Algorithme [ modifier ]]

Le pseudocode suivant est une procédure pour effectuer un traçage de chemin naïf. La fonction de tracepath calcule un seul échantillon de pixel, où seul le chemin de rassemblement est considéré.

Couleur  Tracepath ( Rayon  rayon ,  compter  profondeur )  {   si  ( profondeur  > =  Profondeur max )  {   retour  Noir ;  // a rebondi suffisamment de fois.   }  
  ray.FindNearestObject();
  if (ray.hitSomething == false) {
    return Black;  // Nothing was hit.
  }

  Material material = ray.thingHit->material;
  Color emittance = material.emittance;

  // Pick a random direction from here and keep going.
  Ray newRay;
  newRay.origin = ray.pointWhereObjWasHit;

  // This is NOT a cosine-weighted distribution!
  newRay.direction = RandomUnitVectorInHemisphereOf(ray.normalWhereObjWasHit);

  // Probability of the newRay
  const float p = 1 / (2 * PI);

  // Compute the BRDF for this ray (assuming Lambertian reflection)
  float cos_theta = DotProduct(newRay.direction, ray.normalWhereObjWasHit);
  Color BRDF = material.reflectance / PI;

  // Recursively trace reflected light sources.
  Color incoming = TracePath(newRay, depth + 1);

  // Apply the Rendering Equation here.
  return emittance + (BRDF * incoming * cos_theta / p);
}

void Render(Image finalImage, count numSamples) {
  foreach (pixel in finalImage) {
    foreach (i in numSamples) {
      Ray r = camera.generateRay(pixel);
      pixel.color += TracePath(r, 0);
    }
    pixel.color /= numSamples;  // Average samples.
  }
}

Tous les échantillons sont ensuite moyennés pour obtenir la couleur de sortie. Notez que cette méthode d’échantillonnage de toujours un rayon aléatoire dans l’hémisphère de la normale ne fonctionne bien que pour des surfaces parfaitement diffuses. Pour d’autres matériaux, il faut généralement utiliser l’échantillonnage d’importance, c’est-à-dire sélectionner de manière probabiliste un nouveau rayon selon la distribution du BRDF. Par exemple, un matériau parfaitement spéculaire (miroir) ne fonctionnerait pas avec la méthode ci-dessus, car la probabilité que le nouveau rayon soit le rayon réfléchi correct – qui est le seul rayon à travers lequel tout rayonnement sera reflété – est nul. Dans ces situations, il faut diviser la réflectance par la fonction de densité de probabilité du schéma d’échantillonnage, selon l’intégration de Monte Carlo (dans le cas naïf ci-dessus, il n’y a pas de schéma d’échantillonnage particulier, donc le PDF s’avère être 1).

Il existe d’autres considérations à prendre en compte pour assurer la conservation de l’énergie. En particulier, dans le cas naïf, la réflectance d’un BRDF diffuse ne doit pas dépasser

d’abord Pi {displayStyle {frac {1} {pi}}}

ou l’objet reflétera plus de lumière qu’il ne le reçoit (cela dépend cependant du schéma d’échantillonnage utilisé et peut être difficile à bien faire).

Tracé de chemin bidirectionnel [ modifier ]]

L’échantillonnage de l’intégrale peut être effectué par l’une des deux approches distinctes suivantes:

  • Tracé de chemin vers l’arrière , où les chemins sont générés à partir de la caméra et rebondissent autour de la scène jusqu’à ce qu’ils rencontrent une source lumineuse. Ceci est appelé «vers l’arrière» car les chemins de départ de la caméra et se déplacer vers la source de lumière sont opposés dans la direction que la lumière se déplace réellement. Il produit toujours le même résultat car tous les systèmes optiques sont réversibles.
  • Tracé léger (ou tracé de chemin vers l’avant ), où des chemins sont générés à partir des sources de lumière et rebondir autour de la scène jusqu’à ce qu’ils rencontrent la caméra.

Dans les deux cas, une technique appelée Estimation de l’événement suivant peut être utilisé pour réduire la variance. Cela fonctionne en échantillonnant directement une caractéristique importante (la caméra dans le cas de tracé léger , ou une source légère dans le cas de tracé de chemin vers l’arrière ) Au lieu d’attendre un chemin pour le frapper par hasard. Cette technique est généralement efficace, mais devient moins utile lorsque des BRDF spéculaires ou presque spécifiques sont présents. Pour tracé de chemin vers l’arrière , cela crée une grande variance pour les chemins caustiques qui interagissent avec une surface diffuse, puis rebondissent sur une surface spéculaire avant de frapper une source de lumière. Estimation de l’événement suivant ne peut pas être utilisé pour échantillonner ces chemins directement à partir de la surface diffuse, car l’interaction spéculaire est au milieu. De même, il ne peut pas être utilisé pour échantillonner les chemins de la surface spéculaire car il n’y a qu’une seule direction que la lumière peut rebondir. Tracé léger A un problème similaire lorsque les chemins interagissent avec une surface spéculaire avant de frapper la caméra. Parce que cette situation est beaucoup plus courante et que des objets en verre bruyants (ou complètement noirs) sont très perturbateurs visuellement, tracé de chemin vers l’arrière est la seule méthode utilisée pour le traçage de chemin unidirectionnel dans la pratique.

Le traçage de chemin bidirectionnel fournit un algorithme qui combine les deux approches et peut produire une variance plus faible que l’une ou l’autre méthode seule. Pour chaque échantillon, deux chemins sont tracés indépendamment: un en utilisant la source lumineuse et une de la caméra. Cela produit un ensemble de stratégies d’échantillonnage possibles, où chaque sommet d’un chemin peut être connecté directement à chaque sommet de l’autre. L’original tracé léger et tracé de chemin vers l’arrière Les algorithmes sont tous deux des cas particuliers de ces stratégies. Pour tracé léger , il connecte les sommets du chemin de la caméra directement vers le premier sommet du chemin lumineux. Pour tracé de chemin vers l’arrière , il connecte les sommets du chemin lumineux vers le premier sommet du chemin de la caméra. De plus, il existe plusieurs stratégies d’échantillonnage complètement nouvelles, où les sommets intermédiaires sont connectés. La pondération de toutes ces stratégies d’échantillonnage utilisant un échantillonnage à importance multiple crée un nouvel échantillonneur qui peut converger plus rapidement que le traçage de trajet unidirectionnel, même si plus de travail est nécessaire pour chaque échantillon. Cela fonctionne particulièrement bien pour les caustiques ou les scènes qui sont principalement allumées par un éclairage indirect.

Performance [ modifier ]]

Le bruit diminue à mesure que le nombre d’échantillons par pixel augmente. Le haut à gauche montre 1 échantillon par pixel et double de gauche à droite chaque carré.

Un traceur de chemin échantillonne en continu les pixels d’une image. L’image commence à devenir reconnaissable après seulement quelques échantillons par pixel, peut-être 100. Cependant, pour que l’image “converge” et réduit le bruit à des niveaux acceptables prenne généralement environ 5000 échantillons pour la plupart des images, et bien d’autres pour les cas pathologiques. Le bruit est particulièrement un problème pour les animations, ce qui leur donne une qualité de “grain de film” normalement indésirable de la tache aléatoire.

Le goulot d’étranglement des performances central dans le traçage du chemin est le calcul géométrique complexe de la coulée d’un rayon. L’échantillonnage d’importance est une technique qui est motivée à lancer moins de rayons à travers la scène tout en convergeant correctement la luminance sortante sur le point de surface. Cela se fait en jetant plus de rayons dans les directions dans lesquelles la luminance aurait été plus grande de toute façon. Si la densité des rayons coulées dans certaines directions correspond à la force des contributions dans ces directions, le résultat est identique, mais beaucoup moins de rayons ont été coulés. L’échantillonnage d’importance est utilisé pour faire correspondre la densité des rayons à la loi sur les cosinus de Lambert, et également utilisé pour correspondre aux BRDF.

Le transport lumineux de métropole peut entraîner une image à faible bruit avec moins d’échantillons. Cet algorithme a été créé afin d’obtenir une convergence plus rapide dans les scènes dans lesquelles la lumière doit passer par des couloirs étranges ou de petits trous afin d’atteindre la partie de la scène que la caméra consulte. Il s’est également révélé prometteur en rendant correctement les situations pathologiques avec Caustics. Au lieu de générer des chemins aléatoires, de nouveaux chemins d’échantillonnage sont créés comme de légères mutations de celles existantes. En ce sens, l’algorithme “se souvient” des chemins réussis des sources lumineuses à la caméra.

Fonctions de distribution de diffusion [ modifier ]]

Fonctions de distribution de diffusion

Les propriétés réfléchissantes (quantité, direction et couleur) des surfaces sont modélisées à l’aide de BRDFS. L’équivalent pour la lumière transmise (lumière qui passe par l’objet) sont des BSDF. Un traceur de chemin peut tirer pleinement parti des fonctions de distribution complexes, soigneusement modélisées ou mesurées, qui contrôle l’apparence (“matériau”, “texture” ou “ombrage” en termes informatiques) d’un objet.

Voir également [ modifier ]]

  1. ^ Kajiya, J. T. (1986). “L’équation de rendu”. Actes de la 13e conférence annuelle sur l’infographie et les techniques interactives . ACM. Ciseerx 10.1.1.63.1402 .
  2. ^ Lupaturé, et, Modèles mathématiques et algorithmes Monte Carlo pour le rendu physiquement , (Thèse de doctorat), 1996.
  3. ^ Purcell, T J; Buck, je; Mark, w; et Hanrahan, P, “Ray Traçage sur le matériel graphique programmable”, Proc. Siggraph 2002 , 703 – 712. Voir aussi Purcell, T, Ray Traçage sur un processeur de flux (Thèse de doctorat), 2004.
  4. ^ Robison, Austin, “Traçage des rayons interactifs sur la vue d’ensemble du GPU et du NVIRT” , Slide 37, i3d 2009.
  5. ^ Démo vray ; D’autres exemples incluent Octane Render, Arion et Luxrender.
  6. ^ Seymour, Mike. “Le nouveau rendu de la production de Disney ‘Hyperion’ – oui, Disney!” . fxguide . Récupéré 16 septembre 2017 .
  7. ^ Veach, E. et Guibas, L. J. Metropolis Light Transport . Dans Siggraph’97 (août 1997), p. 65–76.
  8. Petit est un traceur de chemin éducatif de Kevin Beason. Il utilise 99 lignes de C ++ (y compris la description de la scène). Cette page a un bon ensemble d’exemples de bruit résultant de cette technique.

after-content-x4