CASANAS Sylvain PASTOR Antoine PERCHET Frederic

Slides:



Advertisements
Présentations similaires
CoRoT S.C. - 24/09/07 - S.Chaintreuil Production N0/N1/N2 Status of current software Proposed evolutions foreplanned production.
Advertisements

Chaîne de Synthèse Réel Modélisation Rendu Image Fichier Scène
Université de Bordeaux I DESS IMM Synthèse d’images
Environmental Data Warehouse Cemagref, UR TSCF, TR MOTIVE 2011 – projet Miriphyque.
Revenir aux basiques !. 1 Revenir aux basiques Processus Nécessité daméliorer la Maîtrise les Offres et Projets: lanalyse des causes racines montre un.
ContractionsContractions How the French get around.
Tout All you need to know. Weve learned possessive adjectives My in french is __________? Your in french is ___________? His/her/its in french is ________?
les fournitures scolaires masculin! féminin! un crayon un stylo
Synthèse d’images.
Delagnes 15/10/07 1 Resist Meeting Saclay 15/10/07 E. Delagnes.
Rendu de pierres taillées en temps réel Stéphane Guy Directeur de stage: Cyril Soler.
Les technologies 3D appliquées à la formation aéronautique ETAT DE L ART et PERSPECTIVES.
Biométrie Ecriture. Capteur standard: tablette Résolution :une résolution de 5080 lpp, le double de son prédécesseur.
Biométrie main. Hand ID System US Patent ,1971 Richard H. Ernst.
Cinématique Étude du mouvement d’un corps en fonction du temps, indépendamment de toute cause pouvant le provoquer ou le modifier. Le mouvement s’effectue.
Cinématique dans l'espace-temps d'un observateur
Minimisation Techniques 1 Assimilation Algorithms: Minimisation Techniques Yannick Trémolet ECMWF Data Assimilation Training Course March 2006.
Les lois de la réflexion et la formation d’images par les miroirs
جامعــــــة محمد خيضــــــــــــر
GTI 350 Travail pratique Android sur tablettes Xoom de Motorola.
DETECTORS EPFL / CERN Visible and invisible light Lumière visible et invisible High energetic: Violet is the highest energetic light our eye can see. UV.
Cliquez et modifiez le titre Cliquez pour modifier les styles du texte du masque Deuxième niveau Troisième niveau Quatrième niveau Cinquième niveau 1 Cliquez.
203-NYA-05 Physique mécanique Cinémato 1 Par André Girard.
1 Report on InWor2003 ADOPT Meeting, CEA_Saclay Dec.17, 2003 P. Dhondt.
2.1.5 Rotations in 3D: Rotation axis
IFT313 Introduction aux langages formels
Transformations de visualisation en OpenGL
La Salle de Classe Ms. De Arcos. Faire Maintenant 1. paper 2. a sheet of paper 3. notebook 4.binder 5. desk 6. chair 7. school disk 8. clock 9.poster.
Proposition for a new policy for MAPMT Gain Control Sylvie Dagoret-Campagne LAL EUSO-BALLOON 8th Progress meeting1.
Les verbes comme acheter
Chapitre 3 : lois de la réflexion et de la réfraction
DETECTORS The AX-PET Detector – Le Détecteur AX-PET AXPET collaboration: CERN, ETH Zurich (CH) - INFN Bari, INFN Cagliari (IT) - IFIC and University of.
AN ENGINEERING MASTER PIECE Une réalisation de maître dans le domaine de lingénierie.
Passage entre quaternions et matrice des cosinus directeurs Transition from Quaternions to Direction Cosine Matrices.
IFT3355: Infographie Illumination globale
IFT3355: Infographie Visualisation
SUJETS SPÉCIAUX EN INFORMATIQUE I
Cinématique du point Chapitre 1
Méthodes basées sur la réflexion des ondes ii R(i) Les ondes refléchies sont en général sommées (stackées) afin d'améliorer la résolution, diminuer le.
Système de coordonnées
IFT3355: Infographie Illumination locale
Insertion d’objets virtuels, suite GIF-4105/7105 Photographie Algorithmique Jean-François Lalonde Merci à A. Efros et P. Debevec!
Commande en espace d’état
DIFFUSION PAR UNE SPHERE CONDUCTRICE LA THEORIE DE MIE
Z SILICON DRIFT DETECTOR IN ALICE When a particle crosses the thickness of SDD electrons are released. They drift under the effect of an applied electric.
Les pronoms interrogatifs. Step 1: avec des prépositions  If the expression requires a preposition, the choices of pronouns differ  Common prepositions:
Belgian Breast Meeting Senator F. Roelants du Vivier 13th october.
Cinématique du point Chapitre 1
GRAPHISME PAR ORDINATEUR
Produit scalaire.
Réflexion de la lumière
Les images de synthèses Duprat Anatole. Les images de synthèses consistent en la création assistée par ordinateur, d'images numériques. Il existe différentes.
Electrostatique- Chap.2 CHAPITRE 2 CHAMP ELECTROSTATIQUE Objectif :
KF-RAY Raytracer parallèle Projet long d’informatique
Création en images de Synthèse Modèles de rendu d’une scène 3D
Couleurs et images.
Projet Lancer de Rayons
Le Chaos dans le gaz de Lorenz
Credits : Joëlle Thollot, Hector Briceño, Edmond Boyer
Les lois de la réflexion et les images formés dans des miroirs simples
Les Prépositions.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.
Synthèse d’images Introduction Doc. non diffusé En cours d’élaboration.
Centres de rotation déplacements dans le plan sagittal (mésio-distaux), dans le plan frontal (droite gauche) et dans le plan occlusal (horizontal) : la.
Éléments cinétiques des système matériels
GRAPHISME PAR ORDINATEUR
Correction du contrôle Radiographie et propagation de la lumière.
written by Catherine Cheater to the tune A Pizza Hut
Les Prépositions.
BUSINESS TEMPLATE ADD YOUR TITLE HERE Catalog Part 01 /YOUR TITLE Part 02 /YOUR TITLE Part 04 /YOUR TITLE Part 03 /YOUR TITLE.
Transcription de la présentation:

CASANAS Sylvain PASTOR Antoine PERCHET Frederic Ray-Tracing CASANAS Sylvain PASTOR Antoine PERCHET Frederic

Plan Principe Utilisation dans le Rendering Détection des collisions Diffusion de l’éclairage et des matériaux Réflexion et réfraction Conclusion Plan

#declare Box = union { object { Box_Front translate -z. 2 #declare Box = union { object { Box_Front translate -z*2.75} object { Box_Front scale <1,1,-1> translate z*2.75} object { Left_End translate -x*3.75 } object { Left_End scale <-1,1,1> translate x*3.75 } object { Box_Lid } object { Box_Bottom } } #declare Spheres = // Inside of box sphere { <1.5, 1.5, -0.75>, 1.25 texture { T_Wood14 finish { specular 0.35 roughness 0.05 ambient 0.3 } translate x*1 rotate <15, 10, 0> translate y*2 sphere { <-1.5, 1.25, 0.5>, 1 texture { T_Wood18 finish { specular 0.25 roughness 0.025 ambient 0.35 } scale 0.33 rotate <10, 20, 30> translate y*10 sphere { <-0.75, 1.0, -1.5>, 0.75 texture { T_Wood10 finish { specular 0.5 roughness 0.005 ambient 0.35 } rotate <30, 10, 20> Les logiciels de modelisation comme 3DSMax, Maya, Lightwave, utilisent à la fois des moteurs de rendu par scanline et des raytracers. En effet lorsque dans 3DS Max vous visualisez une preview de votre scéne dans un des viewports, vous avez à faire sans le savoir à un moteur de rendu par scanline rapide. Par contre lorsque vous lancez le calcul du rendu final, c'est un raytracer qui prend le relai et commence son dur labeur. The ray tracing provides realistic reflection and refractions as well as shadows, while the scan line renders diffuse light and textures at high speed. On distingue les moteurs qualifiés de "scanline renderer" (rendu par scanline), et les moteurs dit "raytracer" (lanceurs de rayon pour ne pas vexer nos académiciens). Sans entrer dans le détail (rassurez-vous, nous aurons largemment l'occasion de nous y plonger), les moteurs de rendu par scanline vont calculer l'image finale pixel par pixel en commencant en haut à gauche de l'image, pour finir en bas à droite (le chemin de parcours pouvant varier selon le moteur). Le calcul de l'image finale se fera si necessaire par plusieurs passes successives, pour par exemple simuler l'éclairage et d'autres effets. Un raytracer n'est qu'une extension d'un moteur de rendu par scanline. Dans le sens qu'un raytracer va également calculer le rendu final pixel par pixel, cependant le calcul des refractions, reflections est fait en une passe et est exact, du fait qu'un raytracer va faire un calcul recursif (quand un rayon rentrera en collision avec un objet, deux nouveaux rayons seront émis : le rayon réfracté par l'objet (si il existe) et le rayon réfléchi (si il exite), et ainsi de suite), ce qui implique des temps de calcul considérables pour une précision inégalable. Les moteurs de rendu par scanline sont beaucoup plus rapide que les raytracers mais donnent également des résultats beaucoup moins satisfaisants, du fait que les ombres, reflections, éclairages ... sont purement simulés. A l'opposé un raytracer donnera des effets ultra réalistes pour la simple raison que le calcul de la lumiére et des autres effets seront exacts, se basant sur des formules physiques réeles, mais cela au depend de la vitesse de rendu (on ne peut pas avoir le beurre et l'argent du beurre). Le moteur de rendu Renderman de Pixar, lancé en 1989 et qui n'a cessé d'évoluer depuis, effectue quant à lui un rendu par scanline, pour la simple et bonne raison qu'un raytracer demande énormément de temps de calcul, et malgrés les fermes de serveurs démesurées utilisées par les studios de production, le temps de rendu reste considérable du fait de la résolution demandée, et attendre 50 ans avant d'avoir la copie finale du film n'est pas vraiment trés intéréssant ,) L'astuce dans ce cas réside dans le fait que sur les effets speciaux d'un film ou même sur un film d'animation, les images defilent tellement vite qu'il n'est pas nécéssaire d'avoir une qualitée de rendu hors du commun pour chaque image. De plus pour obtenir une qualitée de rendu optimale, Renderman à développé un systéme de shaders trés puissant qui permet réellement de personnaliser le rendu final à sa guise. Detection de collision avec des formes primitive pour détecter l’ordre dans lequel apparaissent les objets d’une scene Reflection, refraction, ombre Principe

Principe Permet le passage de la 3D à la 2D Moteurs de rendu : scan line / raytracer Temps réel / Non temps réel Permet la détection de collision Simule la diffusion de la lumière Raytracing Scanline Advanced Lighting Possible Slow More design control Need to cheat Shadows Easy Slower, less control Faster, more control Need separate pass Reflection Refraction Faster, More control Geometry Requires more memory Requires less memory Les logiciels de modelisation comme 3DSMax, Maya, Lightwave, utilisent à la fois des moteurs de rendu par scanline et des raytracers. En effet lorsque dans 3DS Max vous visualisez une preview de votre scéne dans un des viewports, vous avez à faire sans le savoir à un moteur de rendu par scanline rapide. Par contre lorsque vous lancez le calcul du rendu final, c'est un raytracer qui prend le relai et commence son dur labeur. The ray tracing provides realistic reflection and refractions as well as shadows, while the scan line renders diffuse light and textures at high speed. On distingue les moteurs qualifiés de "scanline renderer" (rendu par scanline), et les moteurs dit "raytracer" (lanceurs de rayon pour ne pas vexer nos académiciens). Sans entrer dans le détail (rassurez-vous, nous aurons largemment l'occasion de nous y plonger), les moteurs de rendu par scanline vont calculer l'image finale pixel par pixel en commencant en haut à gauche de l'image, pour finir en bas à droite (le chemin de parcours pouvant varier selon le moteur). Le calcul de l'image finale se fera si necessaire par plusieurs passes successives, pour par exemple simuler l'éclairage et d'autres effets. Un raytracer n'est qu'une extension d'un moteur de rendu par scanline. Dans le sens qu'un raytracer va également calculer le rendu final pixel par pixel, cependant le calcul des refractions, reflections est fait en une passe et est exact, du fait qu'un raytracer va faire un calcul recursif (quand un rayon rentrera en collision avec un objet, deux nouveaux rayons seront émis : le rayon réfracté par l'objet (si il existe) et le rayon réfléchi (si il exite), et ainsi de suite), ce qui implique des temps de calcul considérables pour une précision inégalable. Les moteurs de rendu par scanline sont beaucoup plus rapide que les raytracers mais donnent également des résultats beaucoup moins satisfaisants, du fait que les ombres, reflections, éclairages ... sont purement simulés. A l'opposé un raytracer donnera des effets ultra réalistes pour la simple raison que le calcul de la lumiére et des autres effets seront exacts, se basant sur des formules physiques réeles, mais cela au depend de la vitesse de rendu (on ne peut pas avoir le beurre et l'argent du beurre). Le moteur de rendu Renderman de Pixar, lancé en 1989 et qui n'a cessé d'évoluer depuis, effectue quant à lui un rendu par scanline, pour la simple et bonne raison qu'un raytracer demande énormément de temps de calcul, et malgrés les fermes de serveurs démesurées utilisées par les studios de production, le temps de rendu reste considérable du fait de la résolution demandée, et attendre 50 ans avant d'avoir la copie finale du film n'est pas vraiment trés intéréssant ,) L'astuce dans ce cas réside dans le fait que sur les effets speciaux d'un film ou même sur un film d'animation, les images defilent tellement vite qu'il n'est pas nécéssaire d'avoir une qualitée de rendu hors du commun pour chaque image. De plus pour obtenir une qualitée de rendu optimale, Renderman à développé un systéme de shaders trés puissant qui permet réellement de personnaliser le rendu final à sa guise. Detection de collision avec des formes primitive pour détecter l’ordre dans lequel apparaissent les objets d’une scene Reflection, refraction, ombre Principe

Le rendering Qu’est ce qu’un rayon ? Un rayon possède 3 caractéristiques : Une position de départ O Un vecteur directeur unitaire DIR Une distance t L’équation d’un rayon est : R = O + DIR * t Le rendering

Le rendering Comment passer d’une scène 3D à une visualisation 2D ? Une caméra (Position+ Orientation) Un viewplan (Largeur+ Hauteur+ DistanceCam) Une résolution d’image (xRes + yRes) En fait ce rectangle imaginaire situé devant la caméra et correspondant à l'image finale, est appellé le viewplane. Il est representé dans la classe CCamera, par trois attributs : une largeur (viewplaneWidth), une hauteur (viewplaneHeight) et une distance (viewplaneDist ... la distance correspondant à la distance entre le viewplane et la caméra). Ces valeurs dépdendent du fov (field of vision), de la caméra, cependant nous allons assummer pour le moment que la largeur est de 0.35, la hauteur de 0.5 et la distance de 1.0. Le rendering

Le principe est de tracer un rayon pour chaque pixel de l’image en partant de la caméra. viewPlaneUpLeft = camPos + ((vecDir*viewplaneDist)+(upVec*(viewplaneHeight/2.0f))) - (rightVec*(viewplaneWidth/2.0f)) pixViewPlan = viewPlaneUpLeft + rightVec*xIndent*x - upVec*yIndent*y Où xIndent et YIndent sont respectivement calculés de la facon qui suit : xIndent = viewplaneWidth / (float)xRes; yIndent = viewplaneHeight / (float)yRes; xRes et yRes correspondant à la résolution finale de l'image (par exemple 640x480). x et y correspondent quand à eux, à la position 2D du pixel sur l'image finale, dont on recherche la position dans l'espace sur le viewplane. On appelle donc ce calcul pour chaque pixel de l'image, qui nous retourne le vecteur directeur non normalisé du rayon. Il ne nous reste plus qu'à normaliser ce vecteur, pour obtenir un vecteur directeur unitaire, et bingo ! Nous avons désormais l'origine du rayon (la position de la caméra), le vecteur directeur de ce rayon pour chaque pixel, nous avons donc toutes les informations nécéssaires pour commencer le raytracing ! Let the fun start ! Le rendering

Les collisions Détermination des silhouettes Le but est de trouver le point P(t)=O+DIR*t Solution de l’équation des formes primitives Intersection du rayon et de l’objet Il faut trouver la solution t des polynômes de degré n (solutions analytiques) Degré 1 pour les plans Degré 2 pour les sphère et cylindres Degré 3 ou 4 pour splines et torques Les collisions

Les collisions Primitive de base : la Sphère Equation : (X-Xc)²+ (Y-Yc)²+ (Z-Zc)²= r² On substitue Ox+DIRx*t à X (idem pour Y et Z) On résoud l’équation polynomiale quadratique a*t² + b*t +c =0 obtenue, avec : a = DIRx² + DIRy² + DIRz² b = 2 * (DIRx * (Ox - Xc) + DIRy * (Oy - Yc) + DIRz * (Oz - Zc)) c = ((Ox - Xc)²+ (Oy – Yc)² + (Oz - Zc)²) – r² Calcul du déterminant det=b²-4*a*c Si det<0 pas de solution, det=0 une solution Si det>0 deux intersections telles que : t1 = (-b + sqrt(det)) / (2*a) t2 = (-b - sqrt(det)) / (2*a) Les collisions

Un peu de lumière et de couleur ! Eclairage

Eclairage for each screen pixel    generate a ray from the camera to the pixel    intersect the ray with all objects in the scene    for the closest intersection       for each light in the scene          generate a ray from the intersection to the light          if not obstructed: Apply illumination       spawn secondary rays (e.g., reflection, refraction)       combine results Eclairage

Eclairage Notion de distance Utilisation des lois de Beer Io : intensité initiale C : concentration "molaire" en produit colorant epsilon : propriété d'absorption du produit dissous l : la distance I1 = AbsorptionL *Io Eclairage

Eclairage Notion d’angle d’incidence Les produits scalaires

Couleur = Couleur(S) * scal * Couleur(L) Notion d’angle d’incidence Couleur = Couleur(S) * scal * Couleur(L) Eclairage

Textures Les matériaux Material ≠ Texture char* mName; // Le nom du material. CColor mSpecularColor; // La couleur Specular (rattaché à la brillance de l'objet). CColor mDiffuseColor; // La couleur Diffuse (éclairage diffus). CColor mAmbientColor; // La couleur Ambient (éclairage ambient). CColor mSelfIllumColor; // La couleur de Self Illum (objets éméttant eux même de la lumiére). float mShininess; // La "brillance" du material (utilisé pour la réfléxion). float mShinestrength; // La puissance de brillance (coefficient couplé avec la valeur précédente). float mTransmittivity; // Le coefficient de transmission (utilisé pour la réfraction). float mReflectivity; // Le coefficient de réfléxion (utilisé pour la réfléxion). Textures

Eclairage Détermination de la couleur d’un point Methode GetLightAt(Vector3D normal, Vector3D intersection, Material matl) retourne Couleur     Calculer le vecteur LIGHTVECTOR     Normaliser LIGHTVECTOR      Calculer l'angle de frappe     Si ANGLE <= 0 Alors         COULEURFINALE = Couleur de fond     Sinon         COULEURFINALE = mDiffuseColor(mat) * couleur lumiére * ANGLE * I1 ;     fsi     Retourne COULEURFINALE Fin Methode GetLightAt. Eclairage

Réflexion

n2 / n1 = sin(ThetaT) / sin(ThetaI) Réfraction Lois de Descartes-Snell n2 / n1 = sin(ThetaT) / sin(ThetaI) n1 n2 Réfraction

Réflexion + Réfraction

Recursive Réflexion + Réfraction

Conclusion Très puissant mais coûteux en temps Des premières applications en temps réel Conclusion

Conclusion Vers le temps réel Changements algorithmiques Traitement simultané de paquets de rayons Meilleurs algorithmes pour la construction de kd- trees Nouvelles structures d’index spaciaux pour les scènes dynamiques Implémentation optimisée Utilisation des dernières technologies processeur Optimisation générale du code Développement de nouveaux matériels Massivement multi-core, multi-thread Conclusion

1 processeur quadri-coeurs Yorkfield en 45nm Année Puissance Resolution affichée FPS 2004 50 Processeurs Xeon 640x480 4 2007 1 processeur quadri-coeurs Yorkfield en 45nm 768x768 90 2 processeurs Xeon X5365 1280x720 “Doing that math, at a 1024x768 resolution for a total of 786,432 pixels times 30 rays per pixel and 60 frames per second, you get 1.415 billion rays per second required. The team at Intel estimates that within 2 years or so, the hardware will exist that will allow "game quality" ray tracing on a desktop machine. ” Conclusion

Références Développement d’un Raytracer Raytracer POV-Ray http://www.alrj.org/docs/3D/raytracer/ http://www.massal.net/article/raytrace/page1. html Raytracer POV-Ray http://www.povray.org/ Raytracer temps réel http://softwarecommunity.intel.com/articles/en g/2658.htm http://www.zgdv.de/GameDays2007/Pages/Tal ks/Slusallek.pdf Références