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.)
- Scène
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 |
- Lumière
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
}
} |
- Objet
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 |
- Primitives
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
{
...
}
} |
- Brouillard
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 |
- 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.