27
Ray-Tracing CASANAS Sylvain PASTOR Antoine PERCHET Frederic

Ray- Tracing

Embed Size (px)

DESCRIPTION

Ray- Tracing. CASANAS Sylvain PASTOR Antoine PERCHET Frederic. 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.75} - PowerPoint PPT Presentation

Citation preview

Page 1: Ray- Tracing

Ray-TracingCASANAS SylvainPASTOR Antoine

PERCHET Frederic

Page 2: Ray- Tracing

Plan

PrincipeUtilisation dans le RenderingDétection des collisionsDiffusion de l’éclairage et des matériauxRéflexion et réfractionConclusion

Page 3: Ray- Tracing

Principe

#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 =union {

// 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 } } // Inside of box sphere { <-1.5, 1.25, 0.5>, 1 texture { T_Wood18 finish { specular 0.25 roughness 0.025 ambient 0.35 } scale 0.33 translate x*1 rotate <10, 20, 30> translate y*10 } } // Inside of box sphere { <-0.75, 1.0, -1.5>, 0.75 texture { T_Wood10 finish { specular 0.5 roughness 0.005 ambient 0.35 } translate x*1 rotate <30, 10, 20> } }

Page 4: Ray- Tracing

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 collisionSimule 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 Easy Slower, less

control Faster, More control Need separate pass

Geometry Requires more memory

Requires less memory

Page 5: Ray- Tracing

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

Page 6: Ray- Tracing

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)

Page 7: Ray- Tracing

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;

Page 8: Ray- Tracing

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

Page 9: Ray- Tracing

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)

Page 10: Ray- Tracing
Page 11: Ray- Tracing

Eclairage

Un peu de lumière et de couleur !

Page 12: Ray- Tracing

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

Page 13: Ray- Tracing

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

Page 14: Ray- Tracing

Eclairage

Notion d’angle d’incidence◦Les produits scalaires

0<s<1 s=1s=0

Page 15: Ray- Tracing

Eclairage

Notion d’angle d’incidence

Couleur = Couleur(S) * scal * Couleur(L)

Page 16: Ray- Tracing

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).

Page 17: Ray- Tracing

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.

Page 18: Ray- Tracing
Page 19: Ray- Tracing

Réflexion

Page 20: Ray- Tracing

Réfraction

Réfraction◦Lois de Descartes-Snell

n2 / n1 = sin(ThetaT) / sin(ThetaI)

n1n2

Page 21: Ray- Tracing

Réflexion + Réfraction

Page 22: Ray- Tracing

Recursive Réflexion + Réfraction

Page 23: Ray- Tracing
Page 24: Ray- Tracing

Conclusion

Très puissant mais coûteux en temps

Des premières applications en temps réel

Page 25: Ray- Tracing

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

Page 26: Ray- Tracing

Conclusion

Année Puissance Resolution affichée

FPS

2004 50 Processeurs Xeon

640x480 4

2007 1 processeur quadri-coeurs Yorkfield en

45nm

768x768 90

2007 2 processeurs Xeon X5365

1280x720 90

“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. ”

Page 27: Ray- Tracing

Références

Développement d’un Raytracer◦http://www.alrj.org/docs/3D/raytracer/◦http://www.massal.net/article/raytrace/page1.ht

ml

Raytracer POV-Ray◦http://www.povray.org/

Raytracer temps réel◦http://softwarecommunity.intel.com/articles/eng

/2658.htm◦http://www.zgdv.de/GameDays2007/Pages/

Talks/Slusallek.pdf