Try   HackMD

ISIM - Rendu photorealiste

Rendu photorealiste

  • Objectif
    • Generation d'images realistes
    • Contrainte de temps faible
  • Strategies:
    • Object-based rendering algorithms
      • Illumination globale calculee independamment du point de vue
    • Image-based rendering algorithms
      • Illumination calculee partiellement, en fonction du point de vue
    • Deterministic rendering algorithms
    • Monte Carlo rendering algorithms

Les algorithmes qu'on va voir:

  • Raytracing
  • Path Tracing et Bidirectional Path Tracing
  • Radiosity
  • Photon map

Formation de l'image

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Capture de l'image:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Modele stenope:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Capture de l'image (capteur CCD, CMOS)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Dans notre cas nous pouvons faire passer des rayons avec differentes longueurs d'onde par le meme point

  • On peut facilement modeliser la camera

  • Il faut reussir a modeliser l'eclairage

    • Idee: "suivre" les rayons lumineux pour trouver le chemin parcouru depuis la source jusqu'a l'oeil
    • Principe: Lancer une "infinite" de rayons depuis la source pour esperer trouver ceux qui frappent l'oeil de l'observateur

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

C'est tres lourd!

Raytracing

  • Historique

    • 68, Appel (du raycasting?)
    • 80, Whitted (ajoute les effets optiques: reflexion, transparence)
  • Principe

    • Idee de base: Difficile de suivre tous les rayons partant de la source en revanche il est possible d'estimer le chemin inverse
    • Faire le chemin inverse pour trouver les objets "vus"

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

    • Pour chaque objet vu, on peut estimer une approximation de l'eclairage local

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

    • Approximation de 2 types de contributions:
      • la partie diffuse
      • la partie speculaire

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

Calcul de l'illumination locale:

  • Composante diffuse
  • Composante speculaire
  • Apport des sources primaires
  • Apport des sources secondaires

Sources primaires:

  • Lumieres ponctuelles
  • Spots
  • Lumieres directionnelles
  • Objets lumineux

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Sources secondaires:

  • Les autres objets eclaires

Modele local:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

La composante diffuse

  • La propriete de diffusion de la surface est
    kd
  • La couleur de la surface est
    C

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Voila ce que ca donne:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

"Mais vous avez triche monsieur il y a des ombres !"

C'est faux, il faut regarder l'effet de degrade: c'est la lumiere diffusante.

La composante speculaire

  • La propriete de reflexion de la surface est
    ks
  • L'intensite de la lumiere depend de l'angle fait par
    S
    et
    L

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

On a en resultat:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

La lumiere est blanche donc on a un reflet blanc sur les objets.

Il y a un coefficient de brillance, la tache speculaire est plus ou moins piquee (ex: la lumiere dans les yeux des gens)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Les "

    kd" incluent la couleur
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

  • Il faut sommer toutes les sources lumineuse

    i

Resultat:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Encore une fois je triche comme un arracheur de dent car je n'ai pas explique comment avoir l'ombre, normalement ca devrait etre le degrade du bleu.

Est-ce qu'on peut affiner ce modele ?

  • On peut ajouter un coeff d'attenuation
    f(d)
    (
    d
    distance)
    • Estimer que ce n'est pas un rayon qui repart mais un cone
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
    • f(d)=1/d
    • f(d)=1/d2
    • f(d)=1/(d+k)

Quel modele de couleur prendre ?
Une synthese additive RVB.

Algorithme

Etape 1: Prise en compte des sources primaires

Pour l'ensemble des points de l''image:

  1. Calculer le vecteur directeur du rayon lumineux
    v
    partant de l'observateur
  2. Chercher les intersections de ce rayon lumineux avec l'integralite des objets de la scene et garder le plus proche
  3. Calculer le niveau d'eclairement au point d'intersection en sommant l'apport diffus et speculaire pour chaque source lumineuse

Problemes:

  • Ne tient pas compte des sources lumineuses secondaire
  • Ne gere pas les ombres

Prise en compte des sources secondaires:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

On ne considere pas tous les points de toutes les surfaces de l'espace, par contre on va aller explorer la direction du rayon rebondissant sur la table.
Pour y arriver, on calcule l'illumination au point sur la table, rien nous empeche de "relancer" un rayon et voir quel objet on intersecte. Une fois qu'on l'intersecte, on calcul l'illumination au point.

C'est du cast ray.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

La reponse "lancer plus de rayon" ca fonctionne.

Etape 2: Prise en compte des sources primaitres et certaines sources secondaire

Pour l'ensemble des points de l'image:

  1. Calculer le vecteur directeur du rayon lumineux
    v
    partant de l'observateur
  2. Chercher les intersections de ce rayon lumineux avec l'integralite des objets de la scene et garder le plus proche
  3. Relancer un rayon dans la direction de
    S
    puis calculer le niveau d'eclairement recursivement
  4. Calculer le niveau d'eclairement au point d'intersection en sommant l'apport diffus et speculaire pour chaque source lumineuse ainsi que l'eclairement dans la direction de
    S

Etape 3: Prise en compte de l'ombre

Pour l'ensemble des rayons que l'on "lance" vers les sources primaires, il faut chercher si un objet de la scene ne s'est pas insere entre le point considere et la source. Pour cela, il faut a nouveau calculer l'intersection du rayon avec l'ensemble des objets de la scene et prendre le plus proche.

Resultats

Je triche plus (ou quasiment plus)

Je triche j'ai pas du tout parle de texture et d'anti-aliasing

  • L'algorithme du raytracing est un processus simple, recursif
  • Il faut etre capable, pour chaque objet, de calculer la normale en chaque point
  • Il faut reflechir a la condition d'arret

Avantages

  • Algorithme simple et rapide a mettre en oeuvre
  • Genere des images honorables

Inconvenients

  • Temps de calcul un peu eleve
  • Pas de gestion de la profondeur de champ et autres effets
  • Mauvaise gestion des ombres (frontieres trop brutales)
  • Sources secondaire pas suffisamment prises en compte (eclairage indirect incorrect)
  • Objets transparents
  • "Alisaing"

Les problemes du Raytracing

Probleme de l'aliasing

Probleme: si on lance un rayon c'est touche ou pas touche alors que ca devrait etre la proportion de chaque.

On risque aussi de louper les petits objets.

Solution

On lance plus de rayons (cast ray)!

  • Sur-echantillonage
    • Lancer plusieurs rayons pour chaque pixel
      • De maniere organisee
      • Au hasard
    • Lancer plusieurs rayons pour chaque pixel ou le gradient est eleve
      • Bon resultats mais peut etre tres lent
  • Post-filtrage
    • Resultat moyen mais tres rapide

Resultats

Avec anti-alisaing sur toute l'image (50 rays/pixel)
temps: de l'ordre de 7-8 secondes

Anti-aliasing sur les zones de gradient eleve (50 rays/pixel)
Temps: l'ordre de la seconde

Probleme du temps de calcul

On lance plus de rayons (cast ray)!

Solutions:

  • Volumes englobants
  • Projection sur un plan/partition de l'espace
  • Pre-trier les objets?
  • Calcul parallele
  • Utilisation d'OpenGL

Probleme des objets transparents

Solutions:

  • Comme nous avons relance le rayon reflechi, il faut "suivre" le rayon refracte
    • Loi de la refraction
  • Tenir compte du rayon refracte pour l'illumination locale:
    I=Id+Is+Is+ktT

Milieux transparents:

  • Loi de la refraction (Snell Descartes):
    n1sini1=n2sini2

Surfaces translucides:

  • Distribution probabiliste

Calcul de l'ombre

Solution approchee:
Ne pas devier le rayon mais filtrer les longueurs d'ondes

Probleme de l'eclairage indirect

Si on va sous notre bureau, d'apres nos calculs il devrait faire totalement noir alors que ce n'est pas le cas avec l'eclairage indirect.

Solution

  • Ajouter une lumiere ambiante:
    I=kaIa+Id+Ir+It
  • Solution vraiment approximative

Resultats:

Probleme de l'ombre

On lance un rayon pour savoir si on est eclaire mais ca donne une reponse binaire, c'est comme considerer la source comme ponctuelle.

Notre source lumineuse n'est pas ponctuelle.

Quel est la proportion de notre source ?
Comment faire pour avoir des ombres plus douces ?

Solution

Cast ray !

  • Ne plus considerer une lumiere comme ponctuelle
    • Probleme de temps de calcul

Bilan

Avantages

  • Algorithme tres simple
  • Donne des images honorables

Des problemes majeurs persistent

  • Les sources secondaires ne sont pas suffisamment bien geres
  • Les objets transparents non plus

Amelioration

  • Raytracing distrubue (84)
    • Sur-echantillonnage pour simuler
    • les ombres douces
    • la profondeur de champ
    • Ne regle pas le probleme de l'apport de la diffusion des sources secondaires
    • Quantite de calcul enorme

Conclusion

  • Algorithme simple
  • Necessite beaucoup d'ameliorations pour avoir des images photorealistes