Exemple de mise en oeuvre dans Mcm3D

Afin de lire les fichiers .obj dans Mcm3D, il est nécessaire d'ajouter la shape wavefront.cpp [4] développé par Mark Colbert dans le répertoire Mcm3D/shapes. Il est également nécessaire d'adapter le Makefile en ajoutant wavefront à la section SHAPES.

Afin d'illustrer l'utilisation de la shape wavefront nous allons calculer la moyenne $ \left\langle L \right\rangle$ des chemins optiques d'un milieu purement diffusant. En effet pour un ensemble de photons entrant uniformément de façon isotrope à la frontière d'un domaine de volume $ V$ et dont la frontière est de surface $ S$, il a été montré [5] que cette moyenne est indépendante des propriétés de diffusion des photons:

$\displaystyle \left\langle L \right\rangle$ $\displaystyle =$ $\displaystyle \dfrac{4 V}{S}$  

Voici le fichier de géometrie .pbrt à utiliser comme fichier d'entrée de Mcm3D.
Sampler "bestcandidate" "integer pixelsamples" [4]
LookAt 0.3 0.3 0.3  0 0.1 0   0 1 0
Camera "perspective" "float fov" [28]
Film "image" "integer xresolution" [400] "integer yresolution" [400]
SurfaceIntegrator "directlighting"
Accelerator "grid"

WorldBegin

LightSource "point" "point from" [0.3 0.3 0.3] "color I" [100 100 100]

#surface 0
AttributeBegin
Translate 0 0 0
ReverseOrientation
AreaLightSource "area" "color L" [1 1 1] "integer nsamples"  [8] "bool mcmSurfaceIntegrable" ["true"]
Texture "cstc" "color" "constant" "color value" [1 0 0]
Texture "csti" "int" "constant" "integer value" [0]
Material "matte_mcm"
         "texture Kd" "cstc"
         "texture numero" "csti"
Shape "wavefront" "string filename" ["dragon.obj"]
AttributeEnd

WorldEnd
Ce qu'il faut remarquer dans ce .pbrt est la ligne Shape qui indique que la shape est de type "wavefront" et que le fichier contenant la géométrie est "dragon.obj". Il faut remarquer également que toute la surface du dragon est indéxée par le même numéro. S'il doit y avoir une distinction entre différentes régions de la surface du dragon, il faut alors découper le dragon en autant de fichiers .obj. La figure [*] est le résultat de la synthèse d'image obtenue à partir de ce fichier .pbrt.

Figure: Image de synthèse du dragon obtenue à partir du fichier .pbrt
Image dragon

La figure [*] représente la valeur moyenne $ \left\langle L \right\rangle$ des chemins optiques dans le dragon pour différentes épaisseurs optiques de $ 0.01$ à $ 1000$. Cette moyenne a été obtenu par un algoritme Monte-Carlo codé dans Mcm3D pour $ 100000$ réalistions et une fonction de phase isotrope. La valeur exacte a été obtenu par un code fortran (disponible ici ? surf_vol_obj.f90 à mettre sur le site web) qui permet de calculer la surface et le volume d'une géométrie $ 3D$ lue dans un fichier .obj.

Figure: Moyenne $ \left\langle L \right\rangle$ des chemins optiques dans le dragon adimensionnée par la valeur exacte de $ 4V/S$ en fonction de l'épaisseur optique $ \tau=k 4V/S$ où k est le coefficient de diffusion. $ \tau$ est évaluée en prenant la valeur exacte de $ 4V/S$ comme dimension de référence. Le temps de calcul est de $ 22 \ s$ dans le cas d'une épaisseur optique nulle sur un processeur Intel Core $ 2$ Duo $ 2.26\ GHz$.
Image L
Richard Fournier 2011-01-25