Manuel d'utilisation

Arborescence de l'application

Répertoire source
Application/
Executable
Application/RayTracer.exe
Application/ComputeMatrix.exe
Fichiers de configuration
Application/config

Utilisation

Pour réaliser une image, il suffit de créer un fichier de configuration puis de le passer en paramêtre au programme principal. Le programme "ComputeMatrix.exe" sert à calculer une matrice de positionnement pour un objet à placer dans une scène.

Format des fichiers utilisés

Nous avons créé un model de fichier de programmation simple pour ce projet. En effet, grâce à celui-ci, nous pouvons rendre n'importe quelle scène en paramêtrant correctement ce fichier.

(Il faut supprimer les commentaires pour que le fichier soit valide.)

  1. Scène

  2. SCENE
    {
     output // fichier de sortie (*.ppm)
     6 1 // profondeur des rayons et nombre de processus
     640 480 // largeur et hauteur du fichier de sortie
     1 2 // mode de lancé et illumination
     <1 1 1 1> // lumière ambiente (rgba)
     <1 0 0 0> // couleur du fond de la scène (rgba)
     0 1 // mode d'antialiasing et supersampling
     1 // précision de l'ombre
     CAMERA
     {
      <0 20 -10 1> // position de la caméra (xyzw)
      <0 20 40 1> // le point regardé (xyzw)
      <0 1 0 1> // vecteur haut de la caméra (xyzw)
      30 // angle de la focale
     }
    }

    Différents modes pour paramêtrer le lanceur de rayons

    // mode de lancer de rayon
    #define RAY_TRACING 1
    #define RAY_CASTING 2

    // models d'illumination
    #define PHONG 1
    #define BLINN_PHONG 2
    #define CELLSHADING 3
    #define MICRO_FACETTE 4

    // mode de suréchantillonage
    #define REGULAR 0
    #define RANDOM 1


  3. Lumière

  4. LIGHT
    {
     <60 100 -50 1> // position
     1 0 0 // atténuations 0, 1 et 2
     1 // rayon
     MATERIAL
     {
      0.2 <1 1 1 1> // ka et couleur ambiente
      0.5 0.3 <1 1 1 1> // kdR, kdT et couleur diffuse
      1 1 <1 1 1 1> 30 // ksR, ksT, couleur spéculaire et shininess
      1 <1 0 0 0> // ke et couleur émise
     }
    }

  5. Objet

  6. OBJET
    {
     0 // mode de couleur
     MATERIAL
     {
      0.2 <1 0.1 0.1 0> // ka et couleur ambiente
      1 0 <1 1 1 0> // kdR, kdT et couleur diffuse
      1 1 <1 1 1 1> 100 // ksR, ksT, couleur spéculaire et shininess
      1 <1 0 0 0> // ke et couleur émise
     }
     0 0.5 1 // booléen transparent, coéficient de réfraction et indice
     0 0.5 // booléen de réflexion et coéficient de réflexion
     (0.707107 0.5 0.5 0 // matrice de l'objet
     0 0.707107 -0.707107 20
     -0.707107 0.5 0.5 60
     0 0 0 1)
    }

    Différents modes pour paramêtrer le lanceur de rayons

    // mode de couleur
    #define DIFFUSE 0
    #define PROCEDURALE 1
    #define TEXTURE 2


  7. Primitives

  8. BOITE
    {
     <0 0 0 1> // position
     20 // largeur
     20 // hauteur
     20 // profondeur
     OBJET
     {
      ...
     }
    }

    PLAN
    {
     <0 0 0 1> // point appartenant au plan
     <0 1 0 1> // normale
     OBJET
     {
      ...
     }
    }

    SPHERE
    {
     <0 0 0 1> // centre de la sphère
     20 // rayon
     OBJET
     {
      ...
     }
    }

    CYLINDRE
    {
     <0 0 0 1> // centre du cylindre
     10 // largeur
     100000 // longeur (100000 = infini)
     OBJET
     {
      ...
     }
    }

    PLY
    {
     data/mesh/teapot.ply // fichier ply a charger
     20 // rayon de la mesh
     OBJET
     {
      ...
     }
    }

    TORE
    {
     5 // rayon intérieur
     20 // rayon extérieur
     OBJET
     {
      ...
     }
    }

    SLABS
    {
     1 // nombre de slabs
     // de 1 à n

     <0 0 0 1> // centre
     <0 1 0 1> // vecteur
     10 // distance
     OBJET
     {
      ...
     }
    }


    TRIANGLE
    {

     <0 1 0 1> // sommet 1
     <0 1 0 1> // sommet 2
     <0 -1 0 1> // sommet 3

     OBJET
     {
      ...
     }
    }


  9. Brouillard

  10. FOG
    {
     <1 0.8 0.8 1> // couleur (rgba)
     40 500 0.33 // début, fin et densité
     1 // mode du brouillard
    }

    // mode du brouillard
    #define LINEAR 1
    #define EXP 2
    #define EXP2 3


  11. Couleur d'un objet
    DAMIER
    {
     5 // taille d'un carré
     <1 0 0 0> // couleur 1 (rgba)
     <1 1 1 1> // couleur 2 (rgba)
    }

    PERLIN
    {
     32 // taille tableau 3D
     2 // type de perlin
     5 5 5 10 // période x, y, z et la turbulence
     <1 0.3 0.3 0.7> // couleur 1 (rgba)
     <1 0.7 0.7 1> // couleur 2 (rgba)
    }

    TEXTURE
    {
     data/texture/paysage.ppm // nom de la texture a charger
    }

    // type de Perlin
    #define PERLIN 1
    #define MARBRE 2
    #define BOIS 3

    Aller voir dans le dossier "cfg" pour avoir quelques exemples de fichiers de configuration.