Projet

Le ray tracer ... e la rencontre de l'informatique, des mathematiques et de la physique

 

Auteur :   Simon Vezina (svezina@cmaisonneuve.qc.ca)

               Departement de physique

               College de Maisonneuve

 

 

Description du sujet

 

Le ray tracer est un programme informatique qui fut initialement developpe par Arthur Appel en 1968 et largement ameliore dans les annees 80 qui consiste e generer une image 2D e partir d'une description d'un environnement 3D par l'analyse du parcours d'un rayon de lumiere initialement lance depuis la position d'une camera et voyagement dans la scene e visualiser. En laneant un ou plusieurs rayon dans chacun des pixels d'une grille situee devant la camera, l'intersection de ces rayons avec les geometries de la scene permettre d'evaluer la visibilite de celles-ci par rapport e la camera et leur position par rapport au differentes sources de lumiere permet d'en determiner leur couleur ce qui determiner la couleur des pixels de la grille. L'image formee sur la grille devient la visualisation 2D de la scene.

 

De nos jours, l'algorithme du ray tracer est utilise dans plusieurs logiciels d'animation 3D afin d'y produire des films d'animations ou des effets speciaux au cinema. En raison de l'augmentation de la puissance de calcul des ordinateurs grece aux systemes multiprocesseurs, des chercheurs pensent etre un jour capable d'integrer cette technologie aux jeux video en temps reel.

 

Dans le cadre de ce projet, l'application SIMRenderer a ete developpee dans le langage JAVA. Elle correspond e une implementation simplifiee d'un ray tracer.  Cette application e caractere pedagogique a ete coneue pour supporter les fonctionnalites suivantes d'un ray tracer :

 

Documentation :

e Documentation interne disponible en format javadoc (en franeais uniquement).

e Une javadoc en format HTML est disponible en ligne ici.

e Integration de JUnit Test permettant d'analyser la qualite des algorithmes implementes.

 

Chargement de l'application :

e Configuration de l'application e l'aide d'un fichier configuration.cfg .

e Chargement de scene par lecture de fichier de format txt .

e ecriture d'un fichier log.txt apres l'execution du programme pour decrire l'etat de l'execution du programme.

e Affichage de message d'erreur lors d'une mauvaise definition d'un fichier de scene avec numero de ligne et suggestion pour corriger l'erreur.

 

Geometrie :

e Intersection de geometrie de base (plan, triangle, disque, sphere, tube, cylindre, cene).

e Intersection de geometrie avancee (coquille spherique, tore, lentille).

e Transformation des geometries dans l'espace (translation, scale, rotation) par calcul matriciel de format 4e4.

e Chargement de modele 3D (obj Wavefront)

 

Illumination :

e Modele d'illumination direct par reflexion ambiante, diffuse et speculaire.

e Source d'eclairage multiple avec facteur d'attenuation (ambiante, directionnelle, ponctuelle).

e Source d'eclairage composee d'oscillateurs pouvant generer des ondes afin de reproduire des patrons d'interference et de diffraction (ouverture rectangulaire, ouverture circulaire, ouverture obstruee par une texture).

e Calcul d'ombrage par rayon d'ombre (shadow ray).

e Modele d'illumination indirecte par reflexion et refraction avec niveaux de recursivite variables.

 

Texture :

e Chargement de texture de couleur (gif, png, jpg, tga, dds (en developpement))

e Application de texture de couleur (texture mapping) sur des geometries (triangle, sphere).

 

Amelioration/optimisation :

e Solution d'anticrenelage par lance de rayons multiples (supersampling).

e Infrastructure supportant le multiprocesseur (multithreading).

e Partitionnement de l'espace (lineaire, voxel, multi-voxels). 

 

Pour avoir acces e l'ensemble des fonctionnalites de l'application SIMRenderer, la realisation de ce projet sera necessaire. Il est possible d'obtenir l'application dans son integralite sous certaines conditions (contactez svezina@cmaisonneuve.qc.ca pour plus de detail).


https://en.wikipedia.org/wiki/Ray_tracing_(graphics)
Le ray tracer permet de realiser la projection d'un univers virtuel e 3D sur un plan e 2D afin de genere une image.


http://leaks.wanari.com/2017/05/31/ray-tracing-akka-part-1/
Le ray tracer lance des rayon recursif afin d'evaluer la couleur appropriee e affecter e chacun des pixels d'une image.


https://en.wikipedia.org/wiki/Ray_tracing_(graphics)
La qualite d'un ray tracer depend de son aptitude e bien simuler le comportement physique de la lumiere.

 

 

La galerie du projet

 

Vous pouvez visualiser quelques realisations de l'application SIMRenderer au lien suivant :

 

http://profs.cmaisonneuve.qc.ca/svezina/projet/ray_tracer/galerie.html

 


SIMRenderer

https://giphy.com/gifs/laughing-despicable-me-minions-ZqlvCTNHpqrio

 

Description du projet

 

Le projet consiste e faire des liens entre l'informatique, les mathematiques et de la physique par l'etude de differentes fonctionnalites d'un algorithme de ray tracing. En d'autres mots, un ray tracer est un programme hautement multidisciplinaire oe les contributions de plusieurs competences sont necessaires au bon fonctionnement du programme. Voici une liste abregee de quelques contributions disciplinaires :

 

Informatique Physique Mathematique
e Le ray tracer comporte plusieurs elements (camera, ecran de vue, pyramide de vue, geometrie, materiel, source de lumiere, etc) dont l'integration doit etre realisee dans une bonne architecture.

e L'etude des structures des donnees permet de partitionner les geometries d`une scene afin de reduire le nombre de calculs d'intersection entre les rayons lances et les geometries ce qui permet de generer plus rapidement les images.

e Le ray tracer permet de lancer de faeon recursive des rayons afin d'y genere des effets visuels plus complexes.

e Le ray tracer peut etre acceleree e l'aide d'une strategie de parallelisme (multithreading) ce qui rend la programmation et la gestion de la memoire plus complexe.
e En appliquant des lois de l'optique geometrique, on peut simuler des effets visuelles comme la reflexion et la refraction.


e En appliquant des lois de l'optique ondulatoire, on peut simuler des effets visuelles comme l'interference et la diffraction.


e En analysant le comportement de la lumiere-matiere, on peut determiner la couleur d'un objet par le developpement d'un algorithme d'illumination.
e En appliquant du calcul vectoriel, on peut realiser le calcul de l'intersection entre un rayon et plusieurs formes geometriques (plan, triangle, sphere, cylindre, cene, etc).


e En appliquant du calcul matriciel, on peut deformer et visualiser des modeles 3D complexes de haute qualite.


e En appliquant du calcul statistique, on peut reduire le temps de calcul d'une scene en partitionnant judicieusement un ensemble de geometries par une analyse de leur taille et leur forme.

 

Ainsi, le projet consistera e

(1) se documenter sur le sujet du ray tracer par des lectures de notes de cours,

(2) cheminer dans un laboratoire informatique oe des directives sont disponibles pour etre orienter dans l'implementation des differentes fonctionnalites manquantes d'un programme de ray tracing deje existant (SIMRenderer) mais partiellement fonctionnel,

(3) visualiser des scenes deje construites afin de verifier la qualite des implementations,

(4) repondre e des questions theoriques afin de realiser les avantages et les defaillances d'un algorithme de visualisation 3D comme le ray tracing.

 

Completer le laboratoire redonnera la grande majorite des fonctionnalites au programme SIMRenderer.

 

 

Conference en lien avec le projet

 

Voici quelques conferences qui ont ete realisees dans le cadre de la mise en euvre de ce projet. Les contenus des presentations sont disponibles e l'aide des liens suivants :

 

5 fevrier 2015 : Appel de projet - Le ray tracer - Simon Vezina 2015-2016
1ier octobre 2015 : Conference - Le ray tracer - Les calculs matriciels dans le ray tracing

 

 

Documentation du projet

 

Pour realiser ce projet, il est important de se documenter sur le sujet du ray tracer. e partir des notes de cours disponible ici-bas, une lecture permettra de s'initier e plusieurs caracteristiques du ray tracer ainsi qu'aux differents calculs realises lors de l'execution du programme.

               

Reference :   Note de cours en lien avec la realisation du projet (Le ray tracer ... e la rencontre de l'informatique, des mathematique et de la physique).

                    Note de cours redigee par Simon Vezina, College de Maisonneuve

 

Lien

Titre (sujet : Ray tracer)

NYC XXI - Chapitre 6.1 Le ray tracer en infographie
NYC XXI - Chapitre 6.2a L'intersection dans le ray tracer
NYC XXI - Chapitre 6.2b L'intersection d'un triangle dans le ray tracer
NYC XXI - Chapitre 6.2c L'intersection de geometrie complexe dans le ray tracer
NYC XXI - Chapitre 6.3 Les couleurs dans le ray tracer
NYC XXI - Chapitre 6.4a

L'illumination direct dans le ray tracer

NYC XXI - Chapitre 6.4b L'illumination avancee dans le ray tracer
NYC XXI - Chapitre 6.5 Les matrices de transformation dans le ray tracer
NYC XXI - Chapitre 6.6 Les transformations dans le ray tracer
NYC XXI - Chapitre 6.7 Les textures dans le ray tracer
NYC XXI - Chapitre 6.X1 Autres applications des matrices dans le ray tracer
NYC XXI - Chapitre 6.X2 Le partitionnement de l'espace des geometries dans le ray tracer

 

Reference :   Note de cours en lien avec le cours de physique 203 - NYC : Ondes et physique moderne

                    Note de cours redigee par Simon Vezina, College de Maisonneuve

 

Lien

Titre (sujet : Physique, optique geometrique)

NYC XXI - Chapitre 2.2 La reflexion et les miroirs plans
NYC XXI - Chapitre 2.4 La refraction

Articles scientifiques

Voici quelques articles scientifiques qui ont ete consultes pour l'elaboration de ce projet.

 

- A_Fast_Voxel_Traversal_Algorythm_For_Ray_Tracing.pdf

 

Realisation du projet : Le ray tracer

version : 2.2.0.2

 

La realisation de ce projet se fera lors d'une activite de laboratoire. Pour ce faire, il faudra realiser l'installation d'une plateforme de developpement JAVA, telecharger le code source en lien avec le laboratoire.

 

Initialement, le programme ne fait que generer des images noire. Tout au long de ce laboratoire separe en trois parties, le programmeur est invite e suivre des directives proposees dans des protocoles de laboratoire et de remplir des feuilles de donnees electroniques au fur et e mesure que les etapes sont completees. Des images illustrant l'evolution et l'amelioration du programme seront generes afin de permettre au developpeur de verifier la qualite de sa programmation.

 

Installation de la plateforme de developpement JAVA 

Voici les liens vous permettant de telecharger l'environnement de developpement JAVA :

e Installation de la plateforme JDK :     http://docs.oracle.com/javase/7/docs/webnotes/install/windows/jdk-installation-windows.html 
e Installation du logiciel de developpement Eclipse : https://eclipse.org/downloads/ 

 

 

Laboratoire : Le ray tracer - Partie 1  

La 1re partie du laboratoire consiste e introduire le developpeur au programme de ray tracer dont plusieurs fonctionnalites sont manquantes. Le developpeur pourra implementer quelques fonctions de base necessaire au fonctionnement d'un ray tracer comme l'evaluation des racines reelles d'un polyneme et d'utiliser ce calcul pour evaluer l'intersection entre un rayon et un plan. Des images contenant des plans, des cubes ainsi que des disques pourront etre visualisees. Afin de se preparer e cette 1re partie, il sera preferable de completer le prelaboratoire suggere.

 

Activites preparatoires :  
https://tenor.com/view/firststep-chick-snow-gif-4934800
Mes premiers pas dans un programme
de
ray tracing.
e Pre requis : Avoir des connaissances de base en programmation JAVA
e Lecture prealable : Chapitre 6.1, 6.2a
e Document du prelaboratoire : Prelaboratoire-Raytracer-Partie_1.pdf
   
Documents lors du laboratoire :  
e Protocole de laboratoire : Laboratoire-Raytracer-Partie_1.pdf
Feuille des donnees : Ray_tracer-Feuille_des_donnees-Partie_1.doc
Grille de correction : Grille_de_correction-Raytracer-Partie_1.pdf
   
Programme :  
Projet Java (code source) : SIM-RayTracer.zip (v2.2.0)
Javadoc (en HTML) :  javadoc/index.html

 

 

Laboratoire : Le ray tracer - Partie 2

La 2e partie du laboratoire consiste e introduire le developpeur au algorithme d'illumination. En implementant des modeles d'illumination comme la reflexion ambiante, diffuse et speculaire, le developpeur pourra visualiser des images avec des couleurs influencees par une ou deux sources de lumiere. Un modele simple d'illumination indirecte comme la reflexion et la refraction sera implemente pourra ajouter des effets visuels supplementaires. Avec des calculs d'intersection entre des rayons et des nouvelles geometries comme la sphere et le tube, le developpeur pourra visualiser des scenes plus diversifiees. Entre autre, un modele 3d de type AGP pourra etre visualise. Afin de se preparer e cette 2e partie, il sera preferable de completer le prelaboratoire suggere.

 

Activites preparatoires :  
http://stores.ebay.com/SECOND-STEP-SHOES
Je progresse dans mon apprentissage
du
ray tracing.
e Pre requis : Avoir complete le laboratoire Le ray tracer - Partie 1.
e Lecture prealable : Chapitre 6.2c, 6.3, 6.4a, 6.4b et Chapitre 2.2, 2.4
e Document du prelaboratoire : Prelaboratoire-Raytracer-Partie_2.pdf
   
Documents lors du laboratoire :  
e Protocole de laboratoire : Laboratoire-Raytracer-Partie_2.pdf
Feuille des donnees : Ray_tracer-Feuille_des_donnees-Partie_2.doc
Grille de correction : Grille_de_correction-Raytracer-Partie_2.pdf
   
Donnees supplementaires :  
Modeles AGP : modele_agp.zip

 

 

Laboratoire : Le ray tracer - Partie 3

La 3e partie du laboratoire consiste e introduire le developpeur aux matrices de transformation. Le developpeur devra implementer des algorithmes d'intersection entre des rayons et des triangles, visualiser ces triangles regroupes dans des modeles 3d et transformer ceux-ci e l'aide de matrice de transformation. Finalement, un algorithme d'intersection d'un rayon avec une geometrie dans son espace objet devra etre integre au programme. Aucun prelaboratoire n'est suggere pour debuter cette 3e partie de laboratoire.

 

Activites preparatoires :  
http://knowyourmeme.com/photos/1201477-sun-and-moon-animations
Je cours vers la reussite du ray tracing.
e Pre requis : Avoir complete le laboratoire Le ray tracer - Partie 2.
e Lecture prealable : Chapitre 6.2b, 6.5, 6.6, 6.7, 6.X2.
e Document du prelaboratoire : Aucun
   
Documents lors du laboratoire :  
e Protocole de laboratoire : Laboratoire-Raytracer-Partie_3.pdf
Feuille des donnees : Ray_tracer-Feuille_des_donnees-Partie_3.doc
Grille de correction : Grille_de_correction-Raytracer-Partie_3.pdf
   
Donnees supplementaires :  
Scene du chevreuil : deer.zip
Scene de Star Wars : star_wars.zip

 

Retour e la page d'accueil  

 

Derniere mise e jour : 2025-02-10