Architecture et softbodies

Document sans nom

Modélisation architecturale avec les softbodies

Niveau :


Introduction

Version: 2.46
Pour faire ce tutoriel, il faut connaître les bases de Blender, mais on va reprendre les softbodies depuis le début, pas besoin de connaissances dessus. Ce tuto ne cherche pas à tout vous apprendre sur les softbodies de Blender, il va juste vous donner des bonnes bases d'une manière un peu détournée.

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 (enfin, moi ça m'amuse...).


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. En pratique on peut construire un arc en brique même sans mortier avec cette forme, il tiendra tout seul. On retrouve cette forme d'arc dans de nombreuses cultures constructives, par exemple la voûte dite nubienne où un exemple en Iran ci dessous.

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 :

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

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 :

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.

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) :

 

Etape 3 : Admirer

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

Si on veut le voir s'animer dans toutes les vues, on fait Shift + Alt + A (ou Maj + Alt + A pour parler français). On peut aussi voir une image après l'autre en utilisant les flèches droite et gauche du clavier. Si votre animation ne bouge plus après l'image 250, pas d'inquiétude, on va régler ça plus tard.



Etape 4 : Quelques réglages

Ce n'est pas encore très élaboré, 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. Et on recommence mais cette fois en ne fixant que les quatres angles.

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 va en profiter pour mettre notre coupole à l'endroit en mettant Grav à -9,8 (si vous avez des vagues souvenirs de physique, la valeur de G sur Terre est de 9,81...) 

On peut maintenant faire des essais en changeant les valeurs de E Pull et E Push qui règlent l'élasticité en traction (pull) et en compression (push), on voit ci dessous la même coupole à l'image 34 avec trois valeurs de E Push / pull différentes:

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:

On ne va pas pousser trop loin les explications, mais pour vous donner des pistes : EDamp règle l'amortissement (si le terme ne vous dit rien, plus la valeur de Edamp est élevée, plus le mouvement va ralentir et se stabiliser vite). Aero rend le tissu sensible au frottement de l'air, ce qui ne change pas grand chose dans notre cas.
La partie Goal du panneau ne nous intéresse pas plus que ce qu'on en a déjà vu, elle concerne plus les corps mou massif de type gelée, en déterminant avec quelle force le mesh va avoir tendance à reprendre sa forme initiale.

Etape 5 : cache et bake (ou ce qui se passe derrière tout ça)

Si vous avez utilisé les softbodies avant la version 2.46, vous avez du remarquer des changements concernant le baking (ça a même changé entre les RC de la 2.46, j'ai du refaire tous mes screenshots...). Sinon, en gros, c'est beaucoup plus simple maintenant.
La simulation de corps mous demande beaucoup de calculs. Pour éviter d'avoir à les refaire à chaque fois que vous lancez l'animation, Blender enregistre le résultat des calculs sur le disque dur de l'ordinateur à chaque image (on dit "mettre en cache"). Vous remarquerez juste que l'animation est beaucoup plus rapide après la première fois.

Chaque fois que vous changez un réglage de softbody, ces calculs enregistrés sont remis à zero (en pratique votre softbody va reprendre sa forme initiale). Il faudra alors retourner à l'image 1 et recommencer l'animation avec Alt + A ou les flèches.
Les réglages de cache sont cachés dans le panneau Soft Body Collision (et un jeu de mot est caché dans cette phrase). Pourquoi dans le panneau des collisions ? Ben je n'en sais rien, mais il n'y a plus de place dans l'autre alors...

Vous pouvez y régler la première et dernière image du calcul de corps mou (qui peuvent être différentes de celles de votre animation complète que vous réglez dans le panneau de rendu). Dans l'image ci dessous, vous voyez le panneau avant d'avoir changé d'image pour voir le corps mou s'animer:  "No simulation in disk cache", ce n'est peut-être pas la peine de traduire :

Une fois que vous êtes allé à une autre image avec les flèches ou Alt + A, le panneau change un peu et vous voyez que Blender a stocké la simulation en cache sur le disque ("Simulation frames in disk cache").  Vous pouvez libérer de la mémoire en effaçant le cache avec le bouton Free Cache.

Attention : Je ne sais pas s'il y a une raison valable à cela, mais si vous passez votre mesh en Set Smooth ou Set Solid après que la simulation aie été mise en cache, Blender le remet a zéro (si le calcul a été très long, ça énerve).

Une fois que le resultat vous plaît, vous pouvez calculer le résultat une bonne fois pour toute avec le bouton Bake. Vous ne pouvez alors plus modifier vos paramètres  de softbody avant de clicker sur le bouton Free Bake. Ca évite de tout perdre par erreur.

Note : Les fichiers de calcul sont enregistrés sur votre disque dur dans un fichier  "blendcache_votreblend" dans le même dossier que votre blend. Ils ne sont plus inclus dans le fichier Blend comme avant, même si vous packez votre fichier. L'intérêt est évident quand vous gardez 10 sauvegardes automatiques de chaque fichier et que chacun faisait 200 megas à cause des softbodies.  Une question à cent balles : où sont cachés les fichiers de calcul avant que vous ayez sauvé votre fichier pour la première fois ?


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 tissu 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.

Rien ne vous empeche maintenant de remettre du softbody sur ce mesh. Dans cette image, j'ai figée une voute, j'ai ensuite rendu élastique les parties en bleu pour avoir la voute composée de droite.


Etape 6 : Lâchons-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 :

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:

Qui va nous donner un truc du genre:




Un autre exemple de l'utilisation possible (à défaut de l'utilité :-D) de cette méthode:
J'avais modélisé cette maison de Bam en Iran, en dessinant les voutes et coupoles avec les méthodes de dessin traditionelles des constructeurs iraniens. Pour le toit, j'ai utilisé le Proportional Editing sur un mesh subdivisé :





J'ai essayé d'obtenir à peu près la même chose avec les softbodies. Ca m'a pris moins de 20 minutes en bidouillant un peu, avec le weight painting suivant:

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, ou augmenter l'amortissement EDamp, mais pas trop.

Par exemple, sur l'image suivante on peut voir le même softbody à deux images différentes. Celui de gauche a été figé en plein mouvement, ce n'est pas une forme stable du tout. Celui de droite a été figée après qu'il se soit stabilisé. On devrait donc pouvoir construire cette voute en brique même sans mortier, elle tiendrait debout.

Comme d'habitude, les possibilités sont quasi infinies. Il suffit de tester et d'être curieux. Je me suis amusé à voir comment un bâtiment s'écraserait si il était élastique, suivant qu'il aie des planchers ou soit creux. Ca donne l'image suivante, en animation ici :

Et voilà d'autres exemples de Mouville, bon ça ressemble plus à des formes des années soixante qu'à de l'archi contemporaines, mais c'est pas grave...

 




 

tutoriel rédigé pour le Blender Clan parViralata

Novembre 2007, mise à jour Juillet 2008

    


Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.

Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Questions & Réponses Longueur d'une courbe de béziers ? 5 286 Aujourd'hui 04:43:27
Cdric 
Questions & Réponses problème shader emission 2.8 1 27 Aujourd'hui 02:31:19
Rimpotche 
Questions & Réponses Display number of users of this data 1 17 Aujourd'hui 02:21:41
Rimpotche 
[WIP] et travaux terminés Une locomotive ... 6 155 Aujourd'hui 00:50:00
busanga 
Questions & Réponses Découper un modèle sur Blender 2 64 Hier 17:00:34
moonboots 
Le coin des geeks Fonctionnement blender avec plusieurs cartes graphiques 2 75 Hier 15:01:06
Bibi09 
GIMP La crème de Gimp    [1][2][3][4] 33 38750 Hier 12:48:39
jackwilshere 
Questions & Réponses fusionner plusieurs matériels en un seul 1 70 Hier 11:14:18
moonboots 
Questions & Réponses Labels 3 137 17/11 22:45:48
Bibi09 
Questions & Réponses [résolu] Impossible de faire un bevel regulier 9 299 16/11 22:33:51
pat72 
Moteur de jeu GameBlender et alternatives [résolu] Programmer un archer à cheval    [1][2][3][4] 34 1158 16/11 11:38:45
Bibi09 
Questions & Réponses Trace bizzarre sur un objet 6 153 15/11 14:10:05
moonboots 
Python & Plugins [WIP] Tracer une courbe et obtenir son équation 7 158 15/11 11:51:13
busanga 
Questions & Réponses Besoin d'aide simulation de vent sur des plantes (système particules) 0 199 14/11 17:50:55
B3nD 
Questions & Réponses Contrainte en édition 1 105 14/11 13:57:05
naeco 
Questions & Réponses [non résolu] Des conseils ? 5 227 13/11 22:21:41
tokoji 
Questions & Réponses La video lue dans editeur de clip et sequence mais pas dans node 0 81 13/11 20:06:12
masje 
Questions & Réponses Question sur IvyGen 3 259 13/11 16:20:13
Muad 
Questions & Réponses Déplacement d'un personnage riggé sur courbe de Bézier 3 125 13/11 13:45:28
Rimpotche 
Questions & Réponses Choisir Rendu sur la carte graphique de l'ordinateur 4 218 13/11 11:13:26
masje 

Qui est en ligne
90 utilisateur(s) en ligne (dont 1 sur Tutoriels)

Membre(s): 0
Invité(s): 90


plus...
Nouveaux membres
LenoraHang 19/11/2019
SharynLcl3 19/11/2019
MelvinaLah 19/11/2019
Margart49E 19/11/2019
GiuseppeBe 19/11/2019
LaurindaVa 19/11/2019
MillieKnop 19/11/2019
IrisFulmer 19/11/2019
PerryY9037 19/11/2019
RustyGaron 19/11/2019
Dernier Ajout
2019-11-05 01.JPG

Evènements à venir
(continuer) - Nov 19
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 11
BUG de Lyon
plus 278 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2019 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445