Rendu d`une goutte - Calcul Scientifique

publicité
Rendu d'une goutte
Extrait du Calcul Scientifique
http://cs-ljk.imag.fr/visualisation-46/examples/article/rendu-d-une-goutte
Rendu d'une goutte
- Visualisation - Examples -
Date de mise en ligne : jeudi 21 juin 2012
Calcul Scientifique
Copyright © Calcul Scientifique
Page 1/6
Rendu d'une goutte
Informations et images fournies par Roland Denis.
Objectif : à partir de données 2D obtenues par simulation, réaliser le rendu 3D réaliste d'une goutte d'eau.
Données d'entrée : elles sont sous la forme d'une grille rectilinéaire au format vtk (fichier .vtr), contenant entre autre
la distance à l'interface.
[Distance à l'interface]
Image finale : Ci dessous, une des images finale obtenue
[Rendu réaliste d'une goutte - Auteur : R.Denis]
3 Outils successifs ont été utilisés pour réaliser ce rendu :
Paraview pour la génération 3D du maillage de la surface de la goutte ;
Blender pour la composition de la scène de rendu ;
Luxrender pour le calcul du rendu
Paraview
L'idée générale est d'extraire le contour 2D de la goutte, puis d'utiliser le filtre paraview 'rotational extrusion' qui
génère une surface 3D par rotation des données d'entrée autour de l'axe des Z. Enfin, les données sont exportées
dans un format lisible par Blender.
La suite du paragraphe détaille tout d'abord une série de problèmes rencontrés, quels filtres ont été utilisés pour les
résoudre, avant de faire un tableau récapitulatif du pipeline.
Axe de rotation fixé
Problème : L'extrusion rotationnelle s'applique autour de l'axe des z, or les données d'entrée sont dans un plan x/y
avec l'axe de rotation en y.
Solution : appliquer une rotation (= filtre 'transform') de 90° avant et de -90° après l'extrusion.
Trou dans la surface
Problème : Les données en x ne commencent pas exactement à 0, elles sont légèrement décalées. Conséquence :
quand on applique l'extrusion, il y a un trou dans la surface autour de l'axe de rotation.
Copyright © Calcul Scientifique
Page 2/6
Rendu d'une goutte
Contournement :
Copie des données en miroir autour de l'axe y (filtrer 'reflect').
Filtre Delaunay 2D pour remailler le tout, ce qui a pour effet de connecter les points qui ne le sont pas, c'est à dire
les points de part et d'autre de l'axe des y.
On recoupe en 2 (Clip) pour ne garder que les x positifs.
Inconvénient : Gourmand en temps de calcul.
Bord dans le maillage, points dupliqués
Problème : La surface n'est pas jointe entre le début et la fin de la rotation. On peut voir les zones concernées avec
le filtre "Feature Edges" (décocher l'option "feature edges'). Cela pose peut poser des problèmes de rendu par la
suite
Solution : Le filtre "Clean" permet de fusionner les points qui sont proches. Il faut choisir une tolérance faible, de
l'ordre de 10^-10, et appliquer également le filtre avant l'extrusion pour éviter les conflits.
Maillage irrégulier
Problème : Le maillage est irrégulier, les points inégalement espacés. C'est le cas pour les points de la ligne de
contour, qui semblent alignés sur le maillage cartésien.
Solution : Régulariser le maillage avec le filtre 'smooth'. Choisir un nombre d'itération élevé, 400 par exemple.
Inconvénient : 'Smooth' entraîne une perte de volume, mais d'autant plus faible que le maillage est fin.
Pour les tests : ré-échantillonage
On peut utiliser le filtre 'Extract subset' pour ne garder qu'une partie des données en test. Cela permet entre autre
d'avoir un temps de réponse correcte dans paraview - temps de réponse mis à mal par l'application du filtre
Delaunay 2D.
Tableau récapitulatif du pipeline
Filtre
Pipeline
Commentairegoutte
Paraview visualisation
Extract Subset
Mettre par exemple les samples rates à 4.
Dans les VOI, bien mettre les min et max voulus. Attention, à la ré-ouverture ces valeurs sont parfois ré-initialisées à 0
Reflect
Plane : X ; center 0
Delaunay2D
Valeurs par défaut
Copyright © Calcul Scientifique
Page 3/6
Rendu d'une goutte
Clip
Restriction à x positif. Avec les valeurs par défaut (X Normal) c'est bon.
Contour
contour 2D de la moitié de la goutte.
Contour by : choisir phi ; value range : 0
Clean
Tolérance : 1e-10
Transform
rotation 90°
Ligne rotate : saisir 90 ; 0 ; 0
Rotational Extrusion
Augmenter la résolution (par ex 180) et décocher l'option capping
Tranform
rotation -90°
Ligne rotate : saisir -90 ; 0 ; 0
Clean
Tolérance 1e-15
Smooth
400 Itérations
Generate Surface Normals
Options cochées : Consistency, Flip Normals (sinon les normales pointent vers l'intérieur de la goutte) et Piece invariant
Blender
Ce paragraphe détaille un exemple de construction d'une scène Blender qui permet de réaliser un rendu réaliste de la
goutte. Certains des paramètres sont liés à luxrender - l'exemple suppose donc que luxrender est installé et activé
pour blender. (article à venir, mais c'est simple et tout est très bien expliqué sur le site de luxrender)
Exemple testé sous Blender 2.61 + luxrender 1.0
Démarrage
Importer le maillage exporté à partir de paraview : File/import/X3D extensible puis choisir le fichier exporté sous
Paraview
Clean éventuel des objets : dans l'outliner, à droite, ne garder que les 3 objets caméra/Lamp/Goutte (Renommer
les objets si besoin, l'objet importé étant nommé initialement 'ShapeIndexedFaceSet')
Lier la caméra à la goutte : sélectionner la caméra, fenêtre 'property', onglet 'Object constraint', dans add constraint
choisir 'Track to' ; target : la goutte ; To : -Z ; Up : Y
(Dans la suite, pour liéer les lampes à la goutte c'est la même chose)
Réglage de la caméra
La goutte est petite. Pour pouvoir la voir dans la caméra on augmente la distance focale de cette dernière et on la
rapproche de la goutte.
Par exemple :
Onglet 'camera', partie Liens, saisir dans 'Field of view' 4.5°,
Onglet 'Objet', partie 'Transform', Location(m) : 0.11 ; -0.12 ; 0.025
Il faut éventuellement redéfinir le clipping range de la caméra : Onglet 'Camera', partie Liens, saisir dans Clipping
Copyright © Calcul Scientifique
Page 4/6
Rendu d'une goutte
Start à 0.1, end à 100
On décale légèrement la caméra pour que la goutte et son ombre soit bien positionnée dans le cadre : Onglet
'Camera', partie Liens, saisir dans Shift : 0.03 en X, 0.14 en Y
Normalement, à ce stade, on visualise la goutte à une taille raisonnable dans la caméra (numpad 0 à partir de la
fenêtre view3D)
Réglage des lampes
Pour améliorer l'éclairage de la goutte, on peut par exemple :
Ajouter une 2me lampe de l'autre coté de la goutte ayant un éclairage plus large, mais à plus faible énergie.
Ajouter un 'ciel' : lampe hémisphérique sur laquelle on plaque une image de ciel.
Rapprocher les lampes.
Lampe de type 'spot'
Location : X -0.07 /Y -0.2 / Z 0.37
Onglet Lamp : type area, size 0.1
Lampe de type 'area'
Menu add/Lamp/Area
Location X 0.06 / Y 0.6/ Z 0.7
Onglet Lamp : type area, Gain 0.2
Lampe pour le ciel
Menu add/Lamp/Hémi
Location : X 0/Y 0.04/Z 0.3
Onglet lamp, gain = 0.5
Dans HDRI map, choisir un fichier hdr de ciel
Ajout d'un plancher
Fenêtre 2D, Add/Mesh/plane
Location : 0 ; 0 ; -0.0005 (à adapter si on fait un scale de la goutte)
Onglet material, dans LuxRender matérials database, cliquer sur enable, puis choisir par exemple dans la catégory
'Walls and Flooring' le 'HerringboneFlooring'. (S'il n'y a qu'une option 'add' dans l'onglet, cliquer sur 'add')
Onglet Texture, choisir par exemple WoodTex
Copyright © Calcul Scientifique
Page 5/6
Rendu d'une goutte
La goutte
1) Dans l'onglet world on défini 2 milieux : l'eau et le reste du monde (water et world)
Dans 'Luxrender Volume', ajouter un volume. Modifier son nom (water) et aller cherche un volume par défaut :
water 100 °
Ajouter un deuxième volume, nommé word. Saisir un IOR de 1.000277
dans la partie LuxRender World Settings, sélectionner water dans default interior, et world dans default exterior.
2) Selectionner la goutte Dans l'onglet material, partie LuxRender Materials :
Choisir Glass2 comme material type
Interior : water
exterior : world
Eventuellement cocher dispersion
Profondeur de champ
A compléter
Luxrender
Copyright © Calcul Scientifique
Page 6/6
Téléchargement