Article : Blender
Titre : Et la lumière fut !

Cette leçon est en effet consacrée à l'un des composants les plus importants d'une scène, puisque c'est grâce aux sources de lumières que sera donnée l'ambiance de vos réalisations.

Notre première scène va mettre en action un couple de ventilateurs d'aération. Ils vont nous permettre d'obtenir un effet de halo comme vous avez pu en voir dans bon nombre de séries et films. La lumière extérieure sera en effet filtrée par les pales des ventilateurs en mouvement. Commençons sans plus attendre.

Dans la vue de dessus, créez un plan à l'origine des axes, puis sans quitter l'édition, multipliez sa taille par dix (touche 'S'). Pressez la touche 'W' et subdivisez le nombre de faces du plan par deux fois en sélectionnant 'Subdivise'. Désélectionnez tous les points en pressant deux fois la touche 'A' et activez uniquement les neuf points du centre. Pour cela, pressez deux fois la touche 'B' et passez le cercle de sélection sur les points à activer en maintenant le bouton de gauche de la souris enfoncé. Pressez la barre d'espace pour quitter le mode de sélection. Effacez enfin la sélection en pressant la touche 'X' et en cliquant sur 'Erase->Vertices'. Il ne vous reste plus que les points formant la périphérie du plan.
Toujours en mode édition, créez un cercle de 32 points à l'origine des axes. Multipliez sa taille 1,5 fois. Déplacez le cercle de trois carreaux vers la gauche (touche 'G'). Pressez 'Shift D' pour créer un double du cercle que vous placerez six carreaux à droite de l'original.
Pressez deux fois la touche 'A' afin d'activer tous les points. Actuellement, les cercles et le carré sont des maillages séparés mais appartenant à un seul et même objet. Pressez les touches 'Shift F' afin de recréer les faces du plan. Cette fois, le plan est traversé par deux trous circulaires.
Dans la vue de face, pressez la touche 'E' et extrudez le plan de deux carreaux vers le haut. La figure 1 détaille la marche à suivre pour modéliser le plan percé.

La seconde étape est la modélisation d'un ventilateur que nous logerons dans les trous cylindriques du plan. Dans la vue de dessus, placez le curseur 3D au centre d'un des deux trous, le plus proche de la grille. Pressez les touches 'Shift S' et sélectionnez 'Curs->Grid' dans le menu 'Snap'. Le pointeur est ainsi positionné précisément sur la grille.
Toujours dans la vue de dessus, créez à cet emplacement une sphère sans modifier les paramètres par défaut du maillage. Passez sa taille à 0,5 (touche 'S') et dans la vue de face, placez le maillage 0,9 carreau au-dessus de sa position d'origine (Dz). Désélectionnez tous les points, puis dans la vue de face, pressez la touche 'B' et sélectionnez la demi-sphère supérieure. Effacez les points qui la composent en pressant 'X' et en cliquant sur 'Vertices'. Sélectionnez la base de la demi-sphère restante et extrudez-la de 1,1 carreaux vers le haut (touche 'E'). Lors de cette opération, maintenez les touches 'Shift + Ctrl' enfoncées lorsque vous approchez de la position voulue afin que le déplacement se fasse avec un pas de 0,1 carreau. Finalement, pressez sur 'Shift F' afin de créer des faces au niveau du cercle sélectionné et ainsi fermer le maillage qui fera office de moteur du ventilateur.

Passons à la modélisation des pales. Désactivez tous les points, puis sans quitter l'édition, créez un cylindre de 28 points de circonférence dans la vue de dessus. Augmentez sa taille de 1,44 (touche 'S'). Puis dans la vue de face, pressez de nouveau la touche 'S'. Cette fois-ci, nous allons réduire la longueur du cylindre. Pour cela, déplacez le pointeur de la souris verticalement, puis cliquez sur le bouton du milieu de la souris (ou simultanément sur le bouton de gauche et la touche 'Alt'). Ainsi, seule la longueur du cylindre varie. Si l'on avait déplacé le curseur horizontalement dans la vue de face, c'est la taille du cylindre sur l'axe X qui aurait varié. Lorsque la variable 'SizeZ' est égale à 0,05, cliquez sur le bouton de gauche de la souris pour valider la modification.
Déplacez le cylindre de 1,2 carreaux vers le haut (Dz). Désélectionnez tous les points, puis dans la vue de dessus, pressez la touche 'B' et sélectionnez deux points voisins sur la circonférence, tous les cinq points, comme le représente la figure 3. La première sélection est le troisième point en haut à droite en partant de l'axe vertical dans la vue de dessus. Lorsque vous avez sélectionné quatre groupes de deux points, pressez la touche 'S' et déplacez le pointeur de la souris vers le centre du cylindre tout en maintenant la touche 'Ctrl' enfoncée. Validez lorsque les variables de la taille sont égales à zéro sur les trois axes.

Les pales étant matérialisées, nous allons leur donner un angle d'inclinaison. Dans la vue de dessus, sélectionnez le cylindre représentant les pales en pressant la touche 'L', le pointeur de la souris sur le maillage. Faites tourner le cylindre de +6 degrés (Ctrl + Shift). Désélectionnez tous les points, puis activez ceux de l'extrémité de la pale de gauche (touche 'B'). Dans la vue de côté, pressez la touche 'R' et faites tourner la sélection de -25 degrés. Dans la vue de dessus, sélectionnez la pale de droite après avoir désactivé les points de celle de gauche. Dans la vue de côté, faites tourner cette fois la sélection de +25 degrés. Pour les pales du haut et du bas, la manipulation est similaire sauf que la rotation se fera dans la vue de face avec respectivement un angle de -25 et +25 degrés. La figure 3 représente la modélisation des pales. Quittez l'édition avec la touche 'TAB'.

La modélisation du ventilateur étant terminée, nous allons pouvoir l'animer. Dans ce cas, c'est chose facile, puisque l'animation se limitera à la rotation de l'objet autour de son axe vertical. Si ce n'est pas déjà fait, placez la scène sur l'image 1. Dans une des vues, le ventilateur étant activé, insérez une position angulaire clé sur cette image en pressant la touche 'I' et en cliquant sur 'Rot' dans le menu 'Insert Key'.
Placez la scène sur l'image 40 et faites tourner le ventilateur de +100 degrés. Insérez une nouvelle position clé à cet endroit. Actuellement, le ventilateur est à l'arrêt sur la première image, puis tourne jusqu'à l'image 40 où il s'arrête de nouveau. Dans notre cas, il faut modifier la courbe d'animation pour que le ventilateur une fois en mouvement ne s'arrête plus. Pour cela, il faut éditer la courbe de contrôle de l'animation 'RotZ'.
Ouvrez la fenêtre de gestion des courbes de contrôle d'animation. Cliquez sur le carré violet qui se trouve devant la légende 'RotZ' pour activer la courbe et pressez la touche 'TAB'. Avec le bouton de droite de la souris, cliquez sur le point de contrôle de droite du segment de l'image 40. Pressez la touche 'G' et placez-le de façon à ce que le segment de contrôle soit oblique et que la portion de courbe comprise entre les images 1 et 40 représente un arc de cercle orienté vers le bas (cinquième partie de la figure 4). Dans la barre d'icônes de la fenêtre, cliquez sur celle représentant une flèche orientée vers le haut afin d'obtenir une courbe sans cassure et donc une rotation continue et de vitesse constante. C'est le degré de la pente qui donne la vitesse de rotation. Pour régler cette vitesse à votre convenance, il vous suffit de modifier la position angulaire du segment de contrôle de l'image 40. Suite à ces manipulations, rectifiez si nécessaire la position du segment de la première image afin de partir d'une vitesse réellement nulle. Enfin, pressez la touche 'TAB' pour abandonner l'édition de la courbe.

Dans la vue de dessus, le ventilateur étant actif, dupliquez-le en pressant les touches 'Shift D' et placez-le au centre du second trou resté vide. En copiant l'objet, tous les paramètres qui lui sont liés sont aussi copiés. Il n'est donc pas nécessaire de déclarer la liaison entre la copie et la courbe d'animation que nous venons de définir.

Avec la version 2.2 de Blender, il est maintenant possible de lier le comportement d'un objet à un autre. Dans ce cas, si nous avions mis en place les deux ventilateurs avant de définir la courbe d'animation, nous aurions pu procéder comme suit.
D'abord, nous aurions paramétré la rotation sur l'un des deux ventilateurs comme expliqué plus haut. Après avoir relevé le nom de ce dernier, il aurait suffit d'activer l'autre ventilateur et d'ouvrir le menu de définition des contraintes (icône représentant deux maillons d'une chaîne). En cliquant sur le bouton 'ADD', Blender donne accès à une fenêtre de paramétrage de contraintes. Le bouton déroulant disponible offre plusieurs possibilités de liaison. Dans notre cas, celle qui nous aurait intéressé aurait été 'Copy Rotation'. Puis, dans le bouton 'OB:', il aurait suffit d'y indiquer le nom de l'objet source, ici donc l'autre ventilateur. Ainsi, le second ventilateur calquerait automatiquement sa position angulaire sur celle du ventilateur pour lequel nous aurions configuré la courbe d'animation. La figure 5 représente ce nouveau menu.

Nous allons maintenant mettre en place les lampes. Les deux lampes qui vont servir à la matérialisation des halos sont des spots qui seront positionnés au-dessus des ventilateurs.

Dans la vue de face, activez l'un des ventilateurs et positionnez le curseur 3D sur celui-ci (Shift 'S', Curs->Sel). Créez une lampe à cet emplacement que vous placerez ensuite huit carreaux au-dessus de sa position originale (LocZ = 8). Ouvrez le menu de configuration des lampes et cliquez sur le bouton 'Spot'. Le spot n'étant pas orienté correctement, trois possibilités sont offertes pour y parvenir.
La première consiste à passer la valeur de la variable 'RotX' à zéro. L'inconvénient est qu'en cas de mouvement de la lampe, cette dernière ne restera pas orientée vers le ventilateur.
La seconde solution consiste à déclarer le ventilateur comme cible de la lampe. Pour ce faire, il faut activer la lampe puis le ventilateur et presser les touches 'Ctrl T'. Ici, il faut tout de même modifier la valeur de la variable 'RotX' comme précédemment, mais par contre la lampe restera orientée vers le ventilateur quelle que soit la position de l'un ou de l'autre.
La troisième solution, qui est celle que nous allons mettre en oeuvre, est de passer par le menu de définition des contraintes. Je vous rappelle que ce menu n'est disponible que depuis la version 2.2. Si vous utilisez une version antérieure, utilisez la seconde solution... mais n'attendez pas pour installer la nouvelle version de Blender ! Donc, dans le menu de définition des contraintes, cliquez sur le bouton 'ADD' puis entrez le nom du ventilateur cible sans modifier la configuration du bouton déroulant placé par défaut sur 'Track To'. Dans mon cas, j'ai renommé l'objet 'Ventilo2'. Le spot est alors automatiquement orienté vers le ventilateur. Les variables de positions angulaires ne sont plus prises en compte ! Si vous déplacez le spot, vous pourrez constater qu'il reste bien orienté vers l'objet cible. La figure 6 représente la mise en place du spot avec cette fonction.
Pour donner un nom particulier à votre ventilateur, il faut l'activer puis saisir le nom souhaité dans le bouton 'OB:
nom_par_défaut' situé dans la barre d'icônes du menu d'édition des objets.

Nous allons maintenant définir les paramètres du spot. Ouvrez donc le menu de configuration des lampes (figure 7). Saisissez les variables suivantes :

        
SpotSi: 45 ; SpotBi: 0,1 ; Energy: 2
         Dist: 60 ; HaloInt: 2,3 ; BufSi: 1024
         R: 0,8 ; G : 1 ; B : 1
         Samples: 6 ; HaloStep: 3
        
Soft : 20 ; ClipEnd: 40

Activez enfin les boutons 'Shadows' et 'Halo'. La figure 7 représente le menu de configuration des lampes correctement paramétré pour les spots.

On peut enfin placer un spot au-dessus de l'autre ventilateur. Pour cela, vous pouvez soit refaire toute la démarche déjà effectuée pour le premier spot, soit tout simplement le copier et le placer au-dessus de l'autre ventilateur. Il faudra cependant déclarer ce dernier comme cible, car lors de la copie, la cible est restée le premier ventilateur déclaré.

Pour finir avec les lampes, nous allons en ajouter une dernière qui éclairera faiblement les faces non soumises aux spots. Créez donc une lampe de type 'SUN' (soleil) sur les coordonnées suivantes :

         LocX et Y : 0 ; LocZ : -27 (touche 'N')

Configurez-la comme suit :

         Energy : 0,3 ; R, G et B : 1.

Pour visualiser le résultat, nous allons placer la caméra sur les coordonnées suivantes :

        
LocX : 0 ; LocY : -9 ; LocZ : -10

Créez un objet vide (Empty) via le popup-menu 'ADD' et placez-le sur les coordonnées ci-dessous :

        
LocX : 0 ; LocY : -1 ; LocZ : -3

Par l'intermédiaire du menu de définition des contraintes, déclarez-le comme cible de la caméra. (figure 8)

Enfin, dans le menu de configuration de la scène, activez le bouton 'Shadows'. L'activation de ce bouton est aussi indispensable pour que les objets interceptent les faisceaux des halos. Pour donner un effet de flou de vitesse et accentuer le réalisme, vous pouvez activer le bouton 'MBLUR'. Il ne vous reste plus qu'à lancer les calculs après avoir bien entendu défini un chemin de sauvegarde des images et surtout après avoir pris soin de sauvegarder votre travail. Le mouvement des ventilateurs étant rotatif, il n'est pas nécessaire de calculer l'animation sur 200 images. Une centaine suffira très largement. Limitez aussi la taille des images afin de limiter les temps de calculs.

La figure 9 représente trois exemples d'images issues de cet exercice. En plus du ventilateur, un support placé au-dessus de celui-ci permet d'ajouter une zone d'ombre sur les faces des trous. Une grille peut aussi être placée sous le ventilateur qui divisera alors un peu plus les faisceaux de lumières. La dernière image est un rendu avec notamment des matériaux.

Pendant que Blender calcule l'animation, nous allons voir le rôle des paramètres que nous avons utilisés pour obtenir l'effet de halo. Pour que Blender trace cet effet, il faut avant tout que la lampe soit un spot et que le bouton `Halo' soit activé. Les paramètres à configurer sont donc les suivants :

- Spot : Type de la lampe.
- SpotSi : Définit l'angle d'ouverture du cône du spot.
- SpotBi : Définit le niveau de flou des contours de la lumière projetée du spot sur un objet. (figure 10-1)
- Energy : Niveau d'énergie de la source de lumière.
- Dist : Définit la portée du halo de lumière.
- R, G et B : Composantes de la couleur de la lumière.
- Halo : Bouton à activer si l'on souhaite obtenir un effet de halo de lumière.
- Shadows : Pour que les objets de la scène filtrent les halos de lumière, il faut que ce bouton soit activé. Dans le cas contraire, les halos ne rencontrent aucun obstacle. Il faut aussi activer le bouton du même nom dans le menu de configuration de la scène.
- BufSi : Taille du buffer utilisé pour le rendu des ombres portées. Plus sa valeur est importante et plus le contour de l'ombre est propre.
- Samples : Permet de diminuer les contraintes de proximités au niveau des contours des ombres. Plus sa valeur est grande et plus le contour des ombres est adouci.
- Soft : Permet de définir la taille de la zone de diffusion du contour des ombres.

Les trois dernières variables ci-dessus s'utilisent en association et permettent d'obtenir des ombres de bonne qualité pour peu que l'on trouve un compromis entre qualité et vitesse (ou lenteur !) de calcul. (figure 10-2)

- HaloStep : A zéro... pas de halo ! A 1 et plus, Blender trace le halo de lumière. Plus sa valeur est faible, et plus l'aspect du halo est bon... mais les temps de calcul en souffriront horriblement.
- ClipEnd : Limite de la zone d'influence de la source de lumière.

Je ne pouvais clore cet article sans dire quelques mots sur la dernière version de Blender. La version 2.2 apporte de nouvelles fonctions. Nous avons déjà vu l'une d'elles dans la présente leçon. Le menu de définition des contraintes nous a en effet permis d'orienter des objets vers d'autres simplement ou même de copier la position angulaire d'un objet sur un autre.

Le système de cinématique inverse a entièrement été revu. Les IKA ont en effet cédé leur place aux 'Armatures'. Une armature n'est pas foncièrement différente d'une chaîne de cinématique inverse telle qu'on la connaissait sous Blender. Par contre, sa mise en uvre et sa configuration sont vraiment différentes. Elle permet en tout cas d'obtenir des résultats plus convaincants. De plus, l'animation peut se faire de façon linéaire mais aussi de façon non linéaire. Cela apporte une souplesse dans la réalisation d'une animation de personnage bien supérieure aux IKA originaux. Nous aborderons très prochainement cette nouvelle fonction... genre heu !... heu !... le mois prochain quoi !! Parce que ce nouveau système d'animation ne peut attendre ! D'accord, nous sommes encore très loin des scanners 3D qui captent les mouvements d'acteurs réels, mais là franchement, Blender permet enfin de devenir productif. L'animation devient un vrai jeu d'enfant... pour peu que l'on ait compris les subtilités parfois déroutantes de ce fantastique programme. Pour vous mettre l'eau à la bouche, voyez juste la figure 11 qui représente un personnage en SubSurf (ex Smesh) modélisé à la sauvette et auquel j'ai appliqué l'armature, quant à elle modélisée en quelques minutes. Une fois tout cela lié, l'animation est d'une facilité déconcertante ! J'espère vous avoir donné envie de découvrir tout cela sans plus attendre ! Au mois prochain donc !


Franck Barnier
barnierf@club-internet.fr