2011-09-11

Dessine-moi des objets en verre avec Blender et Cycles

Cycles permet lui aussi d'utiliser des matériaux transparents réalistes et d'obtenir de jolis effets de lumière.












Cycles est un moteur de lancer de rayons plus réaliste que le moteur de rendu interne de Blender ("Blender Render"), un peu à la manière de Luxrender. Cycles est en développement et n'est pas encore très stable, mais un de ses avantages est qu'il sera directement intégré à Blender, à la différence de Luxrender. L'autre énorme avantage pour moi est qu'il peut facilement utiliser les processeurs de la carte graphique pour accélerer la phase de rendu. D'après ce qu'on peut lire ici, les cartes graphiques NVidia sont directement supportées, et le support pour les cartes ATI est en cours avec OpenCL. Il se trouve que par un heureux hasard qui n'en est pas un, je dispose d'une carte NVidia avec le support de CUDA, et qu'elle est directement et facilement utilisable avec Blender et Cycles.


lspci -v -q


(...)
02:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce GTS 250] (rev a2) (prog-if 00 [VGA controller])
 (...)
 Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
 Memory at e0000000 (64-bit, prefetchable) [size=256M]
 Memory at f8000000 (64-bit, non-prefetchable) [size=32M]
 (...)
 Kernel driver in use: nvidia
 Kernel modules: nvidia-current, nouveau, nvidiafb
(...)

Cycles n'utilise pas aussi exactement les propriétés physiques des matériaux que Luxrender. Par exemple, pour définir l'indice de réfraction (IOR) d'un objet transparent ou semi transparent, Luxrender utilise directement la valeur IOR réelle du matériau (eau, air, verre, verre avec 52 pourcent de plomb, etc), alors qu'avec Cycles, on obtient un effet similaire en faisant varier un paramètre nommé "fresnel", dont la valeur varie entre 0 et 1, et qui ne représente pas réellement cet indice d'IOR.

La manière simple d'utiliser Cycles est de récupérer une version précompilée de Blender et Cycles que l'on peut trouver sur le site http://graphicall.org/. Par exemple pour une architecture GNU/Linux 32 bits, il suffit de télécharger une des versions précompilées qui se trouve ici.

Voici ce que ça donne pour installer tout ça, avec les versions actuelles de Blender et Cycles. Pour cet exemple, j'utilise une version compilée par Fish.


0. Installer Blender et Cycles :

Pour une partie de ce qui suit, il faut être root.


sudo -i
cd /tmp
wget http://graphicall.org/47/download

Le fichier téléchargé est nommé "download", il peut être décompressé avec l'outil "7z" qui vient avec le paquet "p7zip-full". L'extraction de cette archive produit un répertoire nommé "blender25_cycles".


7z x download
chown --recursive root:root blender25_cycles
chmod --recursive go+rx blender25_cycles
mv blender25_cycles/ /usr/local/bin/blender259cycles/

Avec cette version précompilée de Blender+Cycles, il faut aussi installer le package "libsamplerate0" pour régler une dépendance.


aptitude install libsamplerate0
exit

1. Activer Cycles dans Blender :

On lance Blender avec :


/usr/local/bin/blender259cycles/blender

Dans l'interface de Blender, on active Cycles en allant dans le menu "File::User Preferences", puis en choisissant "Add-Ons", puis "Render", puis en cochant la petite case pour activer l'addon nommé "Cycles Render Engine". Normalement, avec cette version précompilée, cette case est déjà cochée par défaut.

Toujours dans l'interface de Blender, dans le bouton qui se trouve tout en haut, il faut ensuite changer la valeur "Blender Render" par "Cycles". Normalement, avec cette version précompilée, c'est déjà le moteur "Cycles" qui est actif par défaut.

Toujours dans l'interface de Blender, dans le menu de droite ("Properties"), dans l'onglet "Render", on peut renseigner le paramètre "Device" avec la valeur "GPU", puis renseigner le paramètre "GPU Type" avec la valeur qui correspond à la carte graphique dont on dispose, dans mon cas, il s'agit de la valeur "CUDA". L'autre solution est de n'utiliser que la valeur "CPU" pour le paramètre "Device", mais c'est vraiment dommage.

Il faut aussi renseigner le paramètre "Passes", qui indique le nombre de passes que le moteur Cycles doit effectuer avant de considérer le rendu comme terminé. Par défaut, ce nombre de passes est à 10, ce qui va bien pour faire des rendus rapides, mais est clairement insuffisant pour faire des rendus définitifs. Empiriquement, et à la louche pifométrique, il faut spécifier une valeur entre 500 et 5000 pour le paramètre "Passes: Render" pour avoir un résultat correct, et pour éviter les effets de pixélisation dans les zones de pénombre.


Et voilà, il ne reste plus qu'à modéliser une jolie scène, généralement avec des objets en verre un peu partout (car ça rend bien avec Cycles), à appuyer sur F12 pour lancer le rendu, et aller vaquer à d'autres occupations. Plusieurs minutes plus tard on obtient un joli rendu, dans Blender. Cycles s'arrête tout seul après avoir effectué le nombre de passes qu'on lui a spécifié.

Aucun commentaire:

Enregistrer un commentaire