tutoriel : utilisation des softbodies de Blender en architecture

Introduction

Dans ce tutoriel, nous allons voir comment utiliser la simulation de corps mous (les softbodies) de Blender pour modéliser des voutes, coupoles et même des formes bien plus libres. Ca peut paraître une idée un peu bizarre comme ça, mais en fait ça marche très bien et en plus c’est rigolo.

Dans l’idée, on va adapter la méthode que Antoni Gaudi a utilisé pour dessiner les coupoles de la Sagrada Familia à Barcelone. Il a réalisé une maquette funiculaire du bâtiment; pour simplifier on va dire qu’il a suspendu des bouts de ficelles lestés par des sacs de sable (qui simulent les
charges s’appliquant à la structure), et la forme prise par ces bouts de ficelle donne une fois retournée la forme de la coupole
qui resistera le mieux à ces efforts. On peut faire plus simple avec juste un bout de ficelle qui va prendre sous son propre poids la forme d’une chainette. Cette courbe retournée est celle d’un arc idéal du point de vue de la descente de charges. On retrouve cette forme d’arc dans de nombreuses cultures constructives, par exemple la voute dite nubienne.

Bref, revenons à Blender, qui va nous permettre de simuler tout ça avec des softbodies ou corps mous (ou corps élastiques).

Etape 1 : Une grille et un vertex group

On va commencer avec une simple grille. Dans la vue de dessus: Espace/Add/Mesh/Grid. On va mettre une grille de 20 par 20 (en mettant X res et Y res à 20) , ça suffira pour le moment:

On va maintenant dire à Blender quelles parties de notre grille vont être fixes, et lesquelles vont pouvoir se déformer. Il faut en effet imaginer que notre grille est maintenant un bout de tissu élastique. On va en fixer deux bords, et laisser le reste pendouiller et on va voir ce qui se passe.

Il faut pour ça aller dans le panneau Editing dans une fenêtre de boutons (raccourcis F9) et sur la partie gauche, on a la partie qui concerne les Vertex Groups. Un Vertex Group ça permet d’assigner une valeur (weight ou poids en français) entre 0 et  1 à chaque point de notre mesh. Ca permet aussi de conserver en mémoire une sélection de points de notre mesh. On peut avoir autant de vertex group que l’on veut. Cela peut avoir plusieurs utilités, mais pour nous, les points qui ont un weight de 0 sont complètement libres et les points à 1 sont fixes.

On va déjà créer un nouveau groupe en cliquant sur New:

http://viralata.fr/wp-content/uploads/Vgroups.jpg

On a alors quelques options:

  • On peut changer le nom du groupe (par défaut Group) en cliquant dessus, passer d’un groupe
    à l’autre le cas échéant en cliquant sur la double flèche à gauche du nom.
  • Avec Delete on peut bien sûr effacer le groupe.
  • Pour affecter la selection de points au groupe on clique sur AssignPour les softbodies, il n’y a aucun intérêt à ne pas assigner tous les points du mesh au vertex group.
  • Pour changer le weight d’un groupe de points, il faut d’abord les sélectionner, choisir un poids (Weight, on clique dessus pour changer la valeur), et donner cette valeur aux points avec Assign. On voit donc que Assign sert à deux choses en même temps: affecter un point au group et lui donner un poids.
  • Pour enlever une selection de point au groupe on clique sur Remove.
  • On peut selectionner le vertex group avec Select ou le deselectionner avec desel.

http://viralata.fr/wp-content/uploads/grille.jpg

Dans notre cas, on veut que tous les points soient utilisés dans la simulation de corps élastique. On va donc avec tous les points sélectionnés cliquer sur Assign. Si vous n’avez rien touché; Weight doit être à 1 et on a donc en même temps donné un poids de 1 à tous les points. (Si ce n’est pas le cas, on va ensuite sélectionner deux bords de la grille comme sur l’image ci-dessus, on règle le Weight à 1, et on clique sur Assign).

On sélectionne maintenant tous les  points sauf les deux bords de l’image ci-dessus, on règle Weight à 0 et on clique sur Assign.

Pour vérifier que ça ce soit bien passé, dans une vue 3D, on clique sur le bouton  qui permet de choisir le mode (il doit être sur Edit Mode à priori, ou Object éventuellement), et on choisi le mode Weight Paint, qui affiche les valeurs de poids des points, 1 en rouge et 0 en bleu. On devrait donc avoir cela:

http://viralata.fr/wp-content/uploads/Vgroupbleu.jpg

 

Attention:Si on passe en weight paint avant d’avoir modifié les valeurs de weight, on voit que notre grille est toute bleue. On en déduirait donc que par défaut le weight est réglée à 0. Et ben non. Les points qui n’ont pas été assigné au vertex group utilisé sont déssiné en bleu, comme si ils avaient un poids de 0 (et c’est dommage), mais comme ils ne font pas partie du groupe on aura des résultats bizarres. Bien penser donc à d’abord assigner tous les points au groupe, puis seulement leur donner un poids.

Etape 2 : Tansformer notre grid en softbody

Avec notre grille sélectionnée, on va aller dans le panneau de bouton Object (raccourci F7), on va choisir le panneau Physics comme ci dessous et on va cliquer sur le gros bouton Soft Body.

http://viralata.fr/wp-content/uploads/bouttonssoft.jpg

 

On a alors un beau paquet de
réglages possibles. Le plus important pour qu’il se passe
quelque chose, c’est de dire à Blender d’utiliser le Vertex
Group que l’on a défini en cliquant sur la double fleche à droite de Use Goal
et en choisissant le groupe que l’on veut (dans notre cas, il n’y en a
qu’un qui s’appelle Group. On pourra après changer la valeur
d’élasticité de notre tissu en réglant E Stiff :

http://viralata.fr/wp-content/uploads/bouttonssoft2.jpg

 

Etape 3 : Admirer

C’est très simple, il suffit de place la souris sur une vue 3D et de faire Alt+A pour voir s’animer notre tissu. On arrête l’animation avec Echap :

http://viralata.fr/wp-content/uploads/voute.jpg

 

Si on veut le voir s’animer dans toutes les vues, on fait Schift+Alt+A (ou Maj+Alt+A pour
parler français). On peut aussi voir une image après
l’autre en utilisant la flèche droit du clavier. On revient en
arrière avec la flèche gauche mais cela remet à
zero le calcul du tissus. Pour rappel, la durée de l’animation
se règle dans le panneau de rendu (raccourci F10) dans l’onglet
Anim où l’on précise l’image de départ (Sta, ici 1) et l’image de fin (End ici 250):

http://viralata.fr/wp-content/uploads/panorendu.jpg

 

Etape 4 : Quelques réglages

Ce n’est pas encore très amusant,
mais ça va s’améliorer. Pour cela on va maintenant faire
une coupole. On peut garder la voûte dans un coin ou sur un autre
calque. On remet une grille de 20 par 20 (Espace/Add/Mesh/Grid). On sélectionne tous les points, on crée un nouveau Vertex Group, on met le weight à 0 et on clique sur Assign, puis on sélectionne les quatre points des coins, on met weight sur 1 et on clique Assign. On va cliquer sur Set Smooth
en mode objet dans ce même panneau pour adoucir les facettes. On
retourne dans le panneau Object (F7) Physics pour activer le Soft Body,
on n’oublie pas de choisir le Group à côté de Use
Goal
, et on peut relancer l’animation avec Alt+A.

On peut maintenant faire des essais en
changeant les valeurs de E STiff qui règle
l’élasticité, on voit ci dessous la même coupole
à l’image 34 avec trois valeurs de E Stiff différentes:

http://viralata.fr/wp-content/uploads/ESTIFF.jpg

 

On peut aussi cocher Stiff Quads
qui rend les faces carrées (les quads) plus rigides comme si
elles avaient des ressorts dans leurs diagonales. Ca donne en
général des résultats plus réalistes, moins
« chewing-gum » et parfois moins rigolos. On voit ci dessous la
même coupole avec E Stiff à 0.2 et pour la bleue des Stiff
Quads mais pas pour la rouge, à deux moments différents
de l’animation:

http://viralata.fr/wp-content/uploads/Stiffquads1.jpg

http://viralata.fr/wp-content/uploads/Stiffquads2.jpg

Etape 5 :Sauvegarder l’animation (Bake)

Suivant la compléxité de votre mesh, et la puissance de
votre ordi, ces calculs peuvent être très longs. Par
ailleurs, si l’animation nous a plu à un moment, on ne peut pas
revenir en arrière, ce qui est un peu agaçant. Pas de
panique, on va régler ce problème. Dans notre panneau de
réglage de soft body, on a un bouton Bake Settings, on va cliquer dessus.

http://viralata.fr/wp-content/uploads/bakesettings.jpg

Et voilà encore de nouveaux boutons… Mais ceux là sont
plutôt simples à comprendre. On va décider quand
doit commencer la sauvegarde de l’animation, et quand elle doit finir
avec Start et End. Le bouton Interval
permet d’accélerer le calcul en ne calculant les softbodies
qu’à certaines http://viralata.fr/wp-content/uploads (par défaut toutes les 10 http://viralata.fr/wp-content/uploads).
Blender va ensuite interpoler entre ces http://viralata.fr/wp-content/uploads pour calculer le
mouvement. On va le laisser comme ça pour le moment, il n’est
utile de le baisser que si la simulation fait des choses bizarres
(notament quand on utilise les collisions, ce que l’on verra plus
tard). Une valeur plus faible va aussi augmenter la mémoire
nécessaire au baking. Il ne reste plus qu’à cliquer sur
Bake et patienter.

Une fois qu’il a finit de calculer on a une animation dans laquelle on
peut aller en avant et en arrière avec les flèches du
clavier, et beaucoup plus rapidement vu que c’est déjà
calculé. On peut effacer ce calcul en cliquant de nouveau sur le
bouton qui est devenu Free Bake, pour libérer de la
mémoire ou changer les réglages.

Remarque:
Si vous voulez pouvoir ensuite déplacer ou tourner votre soft
body qui a été « baké », il faut avant de cliquer
sur Bake, cocher le bouton Local. Vous pourrez ensuite par exemple remettre la coupole à l’endroit en la tournant.

Attention:
Si vous rentrez en Edit Mode vous perdez le Baking de votre objet, qui
peut avoir duré des heures… Pensez donc à
sauvegarder.

Enfin, si la forme vous plaît
à un instant donné, et que le reste de l’animation ne
vous intéresse plus, vous pouvez figer votre tissus pour qu’il
redevienne un mesh comme les autres, editable à souhait. Pour
cela, on se place à l’image qui nous intéresse, et dans
le panneau Editing, sur la droite, il y a l’onglet Modifier dans lequel
on a un modificateur Softbody. Et oui, le Soft Body est un
modificateur. Si on clique sur Apply, notre tissu se fige
définitivement à la position dans laquelle il se trouve.
On peut faire ça sans avoir baké avant.

http://viralata.fr/wp-content/uploads/softfige.jpg

Rien ne vous empeche maintenant de remettre du softbody sur ce mesh, après l’avoir retourné par exemple:

http://viralata.fr/wp-content/uploads/doublebake.jpg

 

Etape 6 : Lachons nous

Nous avons vu que l’on peut en mode Weight Paint voir le weight
assigné à chaque point. On peut en fait faire
bien mieux
que ça, on peut directement peindre ce poids avec une brosse
sur
le mesh, comme on le ferait dans un logiciel de retouche d’image. Pour
cela on passe donc en mode Weight Paint et dans le panneau Editing (F7) on a
un onglet Paint que l’on retrouve dans la vue 3D dans la fenêtre Properties qui apparait avec la touche N:

http://viralata.fr/wp-content/uploads/weightpaint.jpg

En haut, il y a le slider Weight
pour régler le poids que l’on va peindre, de 0 à 1. En
dessous on a des boutons qui permettent de règler directement
cette valeur par incréments de 1/4. Encore en dessous le slider Opacity
permet de régler l’opacité de la brosse avec les boutons
de réglage rapide aussi en dessous. Et enfin en dessous il y a
Size pour régler la taille de la brosse. On remarquera que la
taille de la brosse est réglée par rapport à la
fenêtre 3D. En zoomant on aura donc une brosse plus fine par rapport à l’objet.

Sur la partie droite il y a les modes de peintures habituels, on va rester sur Mix. Spray permet d’avoir une brosse qui applique de plus en plus de couleur si on reste au même endroit. Et enfin Soft permet d’avoir une brosse douce ou dure.  Le reste on ne va pas y toucher pour le moment, à part peut-être X-Mirror
qui permet de dessiner de manière symétrique. Bon le
mieux est d’essayer pour pratiquer, on clique dans la vue 3D là
où on veut peindre, pour avoir par exemple:

http://viralata.fr/wp-content/uploads/painted.jpg

Qui va nous donner un truc du genre:

http://viralata.fr/wp-content/uploads/jolivoute.jpg

Conclusion

On va s’arrêter là pour le moment.

Pour ceux qui voudraient des formes qui tiennent vaguement
debout (du genre des voutes et coupoles), il faudrait alors prendre le
resultat de l’animation une fois les mouvement stabilisés. Il
faut parfois rallonger l’animation, ou jouer sur la valeur de Speed du panneau Soft Body pour accélerer le mouvement.

On peut aussi bien sûr jouer avec les colisions
en mettant des objets qui bloquent les soft bodies, et même des
ventilateurs. On verra ça plus tard.

Juste pour vous donner
quelques idées de comment on peut utiliser cet outil pour
créer des formes un peu différentes en s’amusant, voici
des constructions de Soft City ( vous préferez peut-être
Mouville ?) Ca sera à vous de réflechir aux concepts qui
sous-tendent tout ça…:

http://viralata.fr/wp-content/uploads/twintowers.jpghttp://viralata.fr/wp-content/uploads/truc.jpg

http://viralata.fr/wp-content/uploads/blob.jpghttp://viralata.fr/wp-content/uploads/truc1.jpg

http://viralata.fr/wp-content/uploads/quadruple.jpg

http://viralata.fr/wp-content/uploads/blob2.jpghttp://viralata.fr/wp-content/uploads/blob1.jpghttp://viralata.fr/wp-content/uploads/singletower.jpg

tutoriel rédigé pour le Blender Clan par Viralata29 novembre 2007

Architecture écologique, logiciels libres et impression 3D