# Blender II - Tooling Blender I
🙏🏼
Plusieurs des simulations présentées dans ce cours sont basées sur l’immense travail de Stephen Pearson et son livre “Learn Blender Simulations the Right Way”, avec son aimable permission.
Sa chaîne youtube: https://www.youtube.com/@BlenderMadeEasy
Son livre: https://www.packtpub.com/product/learn-blender-simulations-the-right-way/9781803234151
Son livre en format PDF: https://drive.google.com/file/d/131CZ3yBDeeVickdW57V3m_6Fu2f206Wx/view?usp=sharing
Un immense merci à toi Stephen Pearson pour ton aimable permission d’utiliser ton livre, with gratitude and admiration!
Banque de cours - Mantaflow, Domaines, Flow, Effectors, ma première simulation feu
Lien vers l'original# Mantaflow, Domaines, Flow, Effectors, ma première simulation: feu
Mantaflow Mantaflow est le simulateur de dynamique des fluides (liquides ou gazeux) adopté par Blender à partir de la version 2.82. Mantaflow a d’abord été développé en 2009 par le Computer Graphics Laboratory de l’Institut fédéral des technologies de Zurich. Il est dorénavant maintenu et développé par l’Université Technique de Munich.
La cache et le baking https://docs.blender.org/manual/en/latest/physics/fluid/type/domain/cache.html
📌
“Replay” ne fonctionne que lorsque le mode de synchronisation de lecture est réglé sur “Play Every Frame”. Si vous avez besoin d’utiliser “Frame Dropping” ou “Sync to Audio”, envisagez d’utiliser les options “Modular” ou “All” ci-dessous.
Créer un cube (⇧ A → Mesh → Cube)
Avec le cube sélectionné, mise à l’échelle selon l’axe des Z multiplié par 2 (s → z → 2 → ↩)
Avec le cube sélectionné, appliquer la mise à l’échelle (Apply Scale) : ⌃ A → Scale
Créer une sphere (⇧ A → Mesh → UV Sphere)
Avec la sphère sélectionnée, scale 0.5 (s → 0.5 → ↩)
Avec la sphère sélectionnée, appliquer la mise à l’échelle (Apply Scale) : ⌃ A → Scale
Passer à la vue de face (Numpad 1)
Avec la sphère sélectionnée, déplacer à la base du cube (g → z → -1.4 → ↩)
Sauvegardez votre scène dans un dossier nommé “Ma première simulation”, intitulez le ficher .blend “Ma première simulation.blend”. Il est important de sauvegarder le fichier dans son propre répertoire dédié avant de créer la simulation car sinon les données de la cache seront générées au mauvais endroit.
Avec le cube sélectionné, activer la simulation “Fluid” dans les propriétés physiques
Choisir le type “Domain”. Les frontières du cube constituent maintenant la limite du domaine à l’intérieur duquel sera calculée la simulation.
Vous remarquerez qu’un petit cube apparaît maintenant à la base du cube, indiquant qu’il s’agit d’un domaine de simulation. Ce cube est en fait un Voxel et sa taille détermine la “résolution” de la simulation
Avec le cube sélectionné, assurez-vous que le checkbox “Adaptive Domain” est activé
Sous “Cache”, choisissez 150 comme nombre de frames (Frame Start = 1, End = 150). Assurez-vous que le type de cache est “Modular” au lieu de “Replay”
Avec le cube sélectionné, Aller dans Material et cliquer sur “New”.
Nous ne voulons pas un “Principled BSDF” mais bien un “Principled Volume”.
Choisir la couleur de la fumée, régler la densité à 8 et le “blackbody Intensity” à 7
Avec le cube sélectionné, passer à l’espace de travail “Shading”
Choisir “Object” et s’assurer que la sortie du Principled Volume Shared soit connecté à l’entrée “Volume” et non pas “Surface” du noeud “Material Output”
Sélectionner la sphère, aller dans les propriétés Material, choisir New Material (“Principled BSDF” sera sélectionné par défaut) et choisir une couleur orangée comme couleur de base
Maintenant passons au feu. Sélectionner la sphère, et choisir “Fluid” dans les propriétés physiques. Choisir comme type “Flow”
Changer le “Flow Type” pour “Fire + Smoke”. “Flow Behavior” devrait être “Inflow”. Fixer “Fuel” à 1.3 et dans la section “Flow Source”, “Surface Emission” devrait être à 0.5
Dans le timeline, s’assurer que le dernier Frame de l’animation est bien 150.
Sélectionner le Cube. Nous somme prêt à bake la simulation! Appuyer sur le gros bouton “Bake Data” dans les prorpiétés physiques, sous la section “Settings”.
Cliquer sur “Play” dans la barre d’animation pour voir le résultat!
En vue de face (Front View: Numpad 1), ajouter une caméra (⇧ A → Camera → Camera).
Passer à la vue de côté (Numpad 3) et déplacer la caméra vers la gauche de 10 mètres (g → y → -10)
Passer à la vue Caméra, vous devriez voir ceci
Nous n’avons pas besoin d’éclairage car nous avons mis en place un environnement HDRI. Mais réduisons l’intensité de cet environnement un peu.
Dans la propriété “World”, réduisez la force (Strength) à 0.2.
Taille des voxels. Si l’on augmente la “Resolution Division”, le voxel rapetissera, indiquant un plus grand nombre de voxels dans le domaine et conséquemment une plus grande résolution de la simulation.
Cela dit, plus la division de résolution est grande (i.e. plus la taille des voxels est petite), plus la cache occupera de l’espace disque et plus la simulation prendra du temps à cuire.
📌
La simulation est composée de voxels, une grille de cubes qui compose le domaine, et la résolution de cette grille est le paramètre principal pour une meilleure qualité. Veuillez noter que si vous doublez la résolution, vous obtenez en réalité 8x les cellules (et le temps de cuisson) car elle double dans 3 directions.
- Avec le cube sélectionné, dans les propriétés physiques, cliquer sur le bouton “Free Data” pour effacer la cache de la simulation.
- Augmenter la division de résolution (Resolution Division) à 64.
- Déselectionner “Adaptive Domain”.
- sous la section “Fire”, Réduire le “Reaction Speed” à 0.5. Ce paramètre contrôle la hauteur des flammes. Plus la valeur est faible, plus les flammes seront hautes.
- Sous cette même section, augmenter la “Vorticity” à 0.7.
- Cliquer sur “Bake Data”. Cela devrait prendre plus de temps et la cache sera plus grande. Mais le résultat plus beau également!
- Choisissez un frame sur le timeline où la simulation est visuellement intéressante (e.g. Frame 60)
- Dans le menu “Render”, choisir “Render Image”
- Une fois le rendu terminé, choisir le menu “Image → Save” et sauvegarder l’image sous le nom “Frame 60.png” dans le même dossier que celui de votre animation.
- Dans la propriété “Output”, section “Output”, choisir “//” pour le dossier (cela veut dire le même endroit que là où se trouve le fichier .blend). Pour File Format, choisir “FFmpeg Video”. Choisir “MPEG-4” comme “Container” dans la section “Encoding”. Enfin dans la section “Video”, choisir le codec “H.264”.
- Choisir le menu “Render → Render Animation”.
- “Patience et longueur de temps valent mieux que force ni que rage”…
- Installer Sheep-It Render Farm
- Suivre les 3 tutos suivants si vous n’avez jamais touché à Blender:
Banque de cours - Simulation de tissu et objets gonflables
Lien vers l'original# Simulation de tissu et objets gonflables
- Si vous voulez absolument les Gizmos, c’est par ici:
- Et pour le curseur à l’origine du monde (le fameux ⇧ - clique droit de la souris que vous avez en mémoire musculaire Maya et qui vous fait déplacer le curseur), c’est par ici (ou alors ⇧ S → Cursor to World Origin):
Un peu de théorie La simulation de tissu est l'un des aspects les plus difficiles de la 3D; il s’agit en effet d’un élément du monde réel simple en apparence que l'on tient pour acquis, mais qui a en réalité le résultat d’interactions internes et environnementales très complexes (à ce sujet, si vous voulez apprendre à dessiner de manière réaliste, dessinez des drapés!). Le tissu est généralement modélisé comme un maillage 2D pour simuler des objets du monde réel tels que les tissus, les drapeaux, les bannières. Et pourtant, le tissu peut aussi être utilisé pour modéliser des objets 3D tels que les ours en peluche, les oreillers, les ballons, ou les balles. Le tissu interagit avec et est affecté par d'autres objets en mouvement, le vent et d'autres forces, les points de tension, la texture dudit tissue, la gravité, ainsi qu'un modèle aérodynamique général. Not an easy thang to simulate.
La physique du tissu est simulée avec des ressorts virtuels qui relient les sommets (vertices) d’un maillage (mesh). Il existe quatre types de ressorts qui contrôlent la manière dont le tissu se plie:
Ressorts de tension (bleu), ressorts de compression (rouge), ressorts de cisaillement (shear) (cyan), et ressorts de flexion angulaire (bending) (vert).
Ressorts de tension Contrôle la rigidité du tissu. Ressorts de Compression Contrôle la force requise pour compresser, plier ou froisser le tissu. Ressorts de cisaillement (Shear) Contrôle la déformation angulaire du tissu. Ressorts de flexion angulaire (Bending) Contrôle la résistance du tissu au pliage ou au froissement.
- Ouvrir nouveau projet Blender (File → New → General) dans un dossier intitulé “Drapeau”
- Copiez une image dans votre dossier “Drapeau” (par exemple celle-ci: https://drive.google.com/file/d/1H51xBe3DCgpHPHMArblzj9WcycXGrR70/view?usp=sharing)
- Créer un plan, le tourner de 90 degrés par rapport à l’axe des X
- Il est très important de subdiviser le plan d’abord avant de lui donner une forme plus rectangulaire d’un drapeau, sinon les subdivisions ne seront pas carrées et cela créera de drôles de comportements lors de la simulation.
- Avec l’objet toujours sélectionné, passer en mode “Edit” (Tab → Edges)
- Ajoutons de la géométrie à l’objet. Cliquer droit sur l’object en mode Edit et choisir subdivide.
- Ouvrir le menu des paramètres de la subdivision (en bas à gauche du viewport)
- Choisir 40 pour la valeur de “Number of Cuts” puis faire ↩ et revenir en mode objet (Tab → Object)
- Maintenant on peut rendre le carré rectangulaire et les subdivisions seront correctes. Revenir en mode Object, S X 2 ↩ puis Apply Scale (⌃ A → Scale).
Remarquez que “Number of Cuts” = 40 donne une subdivision de 41 x 41 n-gons et non pas 40 x 40 n-gons car un Cut de 1 = 2 x 2 n-gons.
Avec l’objet sélectionné choisir les paramètres physiques et choisir “Cloth”
📌
Note, on peut choisir des tissus prédéfinis dans le petit menu hamburger à droite de l’intitulé “Cloth”, comme Cotton, Soie, etc. Mais nous allons régler nos paramètres manuellement.
- Donc ne pas choisir de tissu prédéfini, choisir Cloth et nous allons régler les paramètres manuellement.
Si on fait “Play” de l’animation, on constatera que “tissu” tombe raide comme un bloc à cause de la gravité. Bon, c’est déjà ça.
Nous allons maintenant fixer un groupe de sommets (Vertices) de manière à ce que le tissu soit comme accroché (on l’accrochera à un poteau tout à l’heure)
Passer en mode Objet, édition des sommets (Tab → Edit Vertex). Dans les propriétés “Object Data”, ajouter un Vertex group et nommez-le “Accroche”.
Sélectionner les deux premiers sommets (Vertices) en haut à gauche et les deux derniers en bas à droite du mesh, puis cliquer sur le bouton “assign” dans le “Data property”, en s’assurant que le Vertex Group “Accroche” soit sélectionné. Cela va assigner les 4 sommets au groupe Accroche avec un poids de 1.
Pour vérifier que la chose a fonctionner, Sortir du mode Object et passer au mode Weight Paint:
Maintenant, revenons aux propriétés physiques et dans la section “Shape”, choisir le “Pin Group” “Accroche”.
Passer en mode Object et faire Play. Vous devriez constater que la gravité a toujours un effet sur le tissu, mais les points d’accroche ne bougent pas. Mais on remarque que le drapeau se traverse lui-même, normalement ce n’est pas normal. Il faut activer le “Self collision” afin que l’objet entre en collision avec lui-même.
Vous devriez maintenant constater que, si vous faites Play, l’animation est plus lente car Blender doit calculer les collisions de l’objet avec lui même.
Ajoutons un peu de vent. ⇧ A → Force Field → Wind.
On veux que le vent parte de la gauche vers la droite dans la direction de l’axe des X, derrière le drapeau. R Y 90 ↩ puis G X -5 ↩
Sélectionner le drapeau, passer à l’espace de travail Shader, choisir Object au lieu de World puis choisir New. Un Principled BSDF va apparaître. Ajouter une Image texture (⇧ A → Texture → Image Texture). Faire Open et choisir l’image Akira.jpg. Connecter la sortie Color de noeud Image Texture à l’entrée Base Color du Principled BSDF.
Passer en vue orthogonale frontale (Numpad 1), changer en mode “Material Preview” (Z → Material Preview) et changer la force du vent (entre 15 000 et 30 000 environ). Faire Play. Vous devriez voir l’effet du vent sur le drapeau.
Changer également la durée de l’animation à 500 frames. N’oubliez pas de mettre 500 pour le End Frame également dans la propriétés physiques, sous “Cache”.
Dans les Modifiers du drapeau, ajouter un Subdivision Surface (3 pour le viewport, 4 pour le render) et un “Smooth by angle”. S’assurer que le Smooth by angle soit le dernier en bas dans la pile (stack). Donc dans l’ordre, les modifiers devraient être : Cloth, Subdivision puis Smooth by Angle.
Il est temps de régler les paramètres de simulation du tissu. Dans les propriétés Physiques:
Propriété Valeur Description Quality Steps 7 Un peu plus élevée mais pas trop pour ne pas ralentir la simulation pendant qu’on travaille dessus. Au moment du rendu, on augmentera le steps à une bien plus grande valeur (e.g. 256). Speed Multiplier 1 Le facteur influençant la durée du temps écoulé. 1 = “temps réel”. Stiffness → Tension 15 Contrôle la rigidité du tissu. Stiffness → Compression 15 Contrôle la force requise pour compresser, plier ou froisser le tissu. Stiffness → Shear 5 Contrôle la déformation angulaire du tissu. Stiffness → Bending 2 Contrôle la résistance du tissu au pliage ou au froissement. Damping → Tension 5 Même chose que pour Stiffness, mais comme une suspension de voiture, ici Damping indique l’intensité avec laquelle les effets de stiffness s’estomperont. Par analogie, s’il n’y avait que le ressort dans une suspension de voiture (comme au début), la voiture oscillera beaucoup; l’amortisseur amorti les oscillations du ressort. Damping → Compression 5 Damping → Shear 5 Damping → Bending 2 Caching → Simulation Start 1 début de la simulation Caching → Simulation End 500 Fin de la simulation. Collision → Quality 6 Contrôle la qualité du calcul des collisions, autant avec l’objet lui-même qu’avec les autres objets. Évidemment, plus le chiffre est élevé, plus ça va coûter cher en calculs. Object Collision Activé On veut que l’objet entre en collision avec les autres objets de manière réaliste. Distance 0.01 Self Collision Activé On ne veut pas que l’objet passe à travers lui-même. Distance 0.01
- Le champ de force Vent donne une force constante dans une seule direction, le long de l’axe Z local de l’objet de force. La puissance de cette force est visualisée par l’espacement des cercles affichés et la taille de la flèche.
- Pour le vent, les paramètres sont comme suit:
Propriété Valeur Description Shape Plane La forme selon laquelle le vent sera calculée Strength 30 000 La puissance du vent Flow 1 La facteur “vitesse” du fluide “air”. 1 = réaliste. Affect → Location Oui Affect → Rotation Oui Noise Amount 0.5 Histoire de ne pas avoir un vent qui ne varie jamais. Seed 21 Changer le seed changera la génération des nombres aléatoires Absorbtion Oui Une partie de l’énergie du vent est absorbée par les objets ayant la propriété Collision Wind Factor 1 Le degré avec lequel l’énergie du vent est absorbée par des tissus Falloff Pas utilisé Paramètres contrôlant le degré avec lequel la force du vent diminue avec la distance. Dans notre cas, ne pas le spécifier signifie que la force du vent ne diminuera pas, ce qui fera en sorte que la distance du Force Field par rapport au drapeau n’importera pas.
- Dans les propriétés Render, choisir Cycles, retirer la transparence dans la section “Film”. En mode Render (Z → Rendered) vous devriez voir le HDRI.
- Passer en mode Shading, choisir World au lieu de Object, diminuezl’intensité du HDRI à 0.7. Dans le preview, passer en mode Rendered, puis changer les valeurs de rotation Z et X de la texture Environment HDRI jusqu’à que vous ayez un point de vue satisfaisant:
- Dans l’espace de travail “Layout”, ajuster un peu plus le point de vue, puis ajouter une caméra et faire ⌃ ⌥ Numpad 0 pour fixer la position de la caméra. S’assurer que le drapeau soit un peu vers le premier tiers à gauche du cadre de la caméra.
- Passons maintenant à la texture du drapeau. Sélectionner le drapeau et passer en mode Shading. S’Assurer de sélection Object et non pas World. Vous devriez voir la texture Akira (ou l’image que vous aviez choisie au début).
- Allons d’abord chercher des textures de tissu, une pour le maillage lui-même, l’autre pour des défauts de tissu, pour un peu plus de réalisme. Poliigon.com est super chouette, mais il y’en a des tonnes. Je vous en ai préparé deux, télécharger ces deux fichiers .zip dans un dossier que vous nommez “Textures” dans votre dossier Drapeau et y décompresser les fichiers .zip:
- https://drive.google.com/file/d/1IQxSleJrNRho4mE3sy9EhhiPZuMAHwQ9/view?usp=drive_link (Fabric Canvas)
- https://drive.google.com/file/d/1ISkZZl4IxgNl3q-d8OVl0gBAi0LuBp6x/view?usp=drive_link (Fabric Creases Wrinkles)
- Nous avons déjà la couleur pour notre drapeau (l’image Akira), ce dont nous avons besoin, c’est de la texture de tissu, pas sa couleur. Dans Le shading Editor, ajouter une “Image Texture” et ouvrir le “Displacement” map 2K de la texture FabricCanvas001, en l’occurence le fichier FabricCanvas001_DISP_2K.jpg
- Maintenant, on veut connecter cette texture à l’entrée “Normal” du Principled BSDF, mais pour ce faire, il faut passer à travers un Noeud Bump pour convertir l’entrée “Color” du Displacement Map en information de variation de la normale. Enfin, il faut connecter Color du displacement map à l’entrée “Height” du Bump, pas “Normal”. La couleur des connecteurs vous indiquent dans Blender si la connexion est compatible ou pas.
- Par exemple, avec la connexion suivante, on constate que le bump map ne fonctionne pas, que le connecteur passe du jaune au violet et qu’on ne voit pas l’effet de la texture dans le rendu:
- La texture est trop grande. Cliquer sur le noeud Displacement, faire ⌃ T pour, via le Node Wrangler, ajouter les coordonnées de la texture, et augmenter l’échelle (scale) à 5 sur les trois axes. On va également réduire l’intensité du bump node à 0.4 et mettre la distance a 0.5
- Ajoutons maintenant des plis et défauts, en utilisant la texture “FabricCreasesWrinkles001”.
- D’abord sélectionner dans le node editor la texture Displacement et faire ⇧ D pour le dupliquer.
- Dans la nouvelle instance de l’image texture node, faire X pour retirer l’image actuelle et faire Open ou ouvrir le fichier normal map intitulé “FabricCreasesWrinkles001_NRM_VAR1_2K.jpg”.
- Connecter ce nouveau noeud à un noeud “Normal Map” dont vous changez l’intensité (Strength) à 0.4. La sortie Normal de ce noeud Normal Map devrait être connecté à l’entrée “Normal” du Bump Node.
- Maintenant, notre drapeau est trop mince, ajoutons un “Solidify Modifier”, mais s’assurer qu’il se trouve avant le dernier modifier intitulé “Smooth by Angle”.
- Il est temps de créer le poteau. Revenir dans l’espace de travail “Layout”, en mode Solid, en vue orthogonale frontale (Numpad 1) et créer un cylinder (⇧ A → Mesh → Cylinder)
- Dans les paramètres de création, changer le diamètre (Radius) à 0.03, la hauteur (Depth) à 4. Cliquer dans un endroit vide fera disparaître le menu des propriétés de création.
- Sélectionner le cylindre derechef, et déplacer le à la gauche du drapeau et bien évidement le haut du cylindre doit être aligné à peu près avec le haut du drapeau.
- Comme nous n’avons pas déplacé le drapeau suite à sa création, le cylindre devrait être aligné quand on regarde le tout en vue orthogonale d’élévation (Numpad 7). Vérifier que c’est bien le cas et corriger si nécessaire.
- Ajoutons une sphère au bout d’une petite extrusion au sommet du poteau.
- D’abord sélectionner le poteau, passer en mode édition “Face”, sélectionner la face du haut.
- Faire “Inset” (I), déplacer la souris de manière à créer un cercle concentrique au diamètre extérieur du cylindre, puis faire Extrude dans l’axe des Z (E Z) et déplacer encore une fois la souris pour obtenir cette petite extrusion.
- Ajoutons une petite boule au sommet du poteau et ce sera assez. ⌃ A → Mesh → UV Sphere. Donnez-lui un diamètre de 0.05 et déplacez-la au sommet du poteau.
- Une petite texture métallique maintenant pour le poteau et la sphère. Sélectionner le poteau, et dans les paramètres “Material”, faire New pour un créer un Princpled BSDF. Nommer ce Material “Poteau”. Choisir une couleur gris-bleu, Mettalic à 1. C’est assez.
- Maintenant sélectionner la sphère, est dans les paramètres Material, ne pas faire New mais choisir “Poteau” comme material. Les deux vont partager la même texture maintenant.
- Cliquer droit sur le poteau et faire “Shade Smooth”. Même chose pour la sphère.
- Le drapeau doit entrer en collision avec le poteau, il faut donc s’assurer que ce dernier ait la propriété physique “Collision”. Sélectionner le poteau, et choisir “Collision” dans les propriétés physiques:
- Nous sommes prêts à faire un “Bake” de la simulation. Sélectionner le drapeau, aller dans les propriété “Physics” et augmenter la qualité (Quality Steps) à 128. Pour un rendu de production, augmenter la qualité à 256, 512, voire plus.
- Augmenter également la qualité des collisions, dans la section “Collisions”, choisir 10 par exemple.
- Dans la section “Cache”, mettre le End Frame à 120, le changer également dans l’animation, sinon à 500 frames, le calcul de la simulation va prendre trop de temps.
- Cliquer sur Bake. C’est le temps d’une pause.
- Faites Play en mode Render. Faites un rendu d’un des frames. C’est zoli quand même non?
On va quand même rendre ça cool, avec de la brume et la caméra qui tremble à cause du vent.
Commencer par créer un cube qui couvre toute la scène qui apparaît devant la caméra:
Ce cube servira de volume qui contiendra l’effet volumétrique de brume.
Dans le shading Editor, avec le cube sélectionné, s’assurer d’être en mode Object et faire New pour créer un nouveau Material.
Effacer le Principled BSDF et créer plutôt un noeud “Principled Volume”. Connecter la sortie Volume de ce dernier à l’entrée Volume du Material Output. Tout va devenir noir car le volume est très dense. Baisser la densité à environ 0.1.
Créer un noeud Noise Texture et un noeud Color Ramp; connecter la sortie Factor du Noise Texture à l’entrée Factor du Color Ramp puis connecter la sortie Color du Color Ramp à l’entrée Density du Principled Volume.
Faire ⌃ T en ayant le Noise Texture sélectionné pour rajouter des Mapping Coordinates. On veut les coordonnées du cube, donc connecter la sortie “Object” du noeud Texture Coordinates à l’entrée Vector du noeud Mapping.
Changer l’échelle du Noise Texture à 15 et déplacer la couleur noire du color ramp vers le milieu. Ici le Color Ramp agit comme un pinceau : la couleur noire complètement à gauche apparaîtra quand la valeur du facteur est 0, puis graduellement vers le blanc quand cette valeur se rapproche de 1.
Maintenant, on veut animer le mouvement de la brume. Pour ce faire, on va passer de 3D à 4D pour le Noise Texture, ce qui va rajouter la dimension temporelle “W”.
Augmenter le niveau de détail à 16 pour le Noise Texture.
Ce qu’on veut animer c’est la position X (déplacement vers la droite dans le sens du vent) et le paramètre W.
S’assurer, dans le layout Editor, d’être au Frame 1. Dans le Shading Editor, cliquer droit sur la coordonnée X du noeud Mapping et faire “Insert Keyframes”. Si vous avez déjà un keyframe à cet endroit, le sous-menu contextuel sera “Replace Keyframes” au lieu de “Insert Keyframes”.
Aller au frame 120, changer la valeur X à, disons 5, 10 ou 30, et faire “Insert Keyframes” derechef. Il faut jouer avec cette valeur jusqu’à ce que vous obteniez un effet satisfaisant (et c’est là qu’une carte graphique performante aide grandement!).
📌
Vous pouvez temporairement ajouter une section montrant le timeline dans le shading editor pour ne pas avoir à changer de layout à chaque fois que vous voulez déplacer la tête de lecture dans le timeline.
À bien y penser, je vais baisser l’intensité du HDRI à 0.4 au lieu de 0.7 (World dans le shading Editor, ou alors la propriété World dans la section des propriétés à droite). Vous savez comment faire.
Revenir au frame 1. Cliquer droit sur la coordonnée W et faire Insert Keyframes.
Aller au frame 120, changer la valeur de W pour, disons, 10, et faire encore une fois Insert Keyframes.
Woot woot! Maintenant, on va faire trembler la caméra.
En vue Layout, ajouter un workspace pour voir le Graph Editor. Sélectionner la caméra.
Au frame 1, faire I pendant que la caméra est sélectionnée et que la souris est dans le 3D viewport.
Sélectionner l’Axe des X du keyframe de la caméra dans “Object Transform” du Graph Editor. On peut ajouter des modifiers aux courbes!
Faire “N” dans le graph editor pour faire apparaître le “N” menu s’il n’est pas visible. Dans la section Modifiers, faire Add Modifier et choisir Noise.
Du bruit a été ajouté au mouvement selon l’axe des X de la caméra!
Changer l’échelle à 6-10 (Scale) du modifier pour un mouvement saccadé certes, mais pas débile mental.
Changer le depth à environ 5, cela donnera un aspect moins robotique au noise.
Vous pouvez jouer avec les paramètres, comme le strength si le noise est trop fort (je l’ai baissé à 0.7).
Vous pouvez ajouter des noise modifiers aux autres axes (Y et Z) si vous voulez, pour plus de réalisme.
Vous pouvez également animer un mouvement à la caméra si l’idée vous en dit.
Et voilà, on a terminé. Ce qui est cool, c’est qu’un effet Parallax nous donne l’impression que le poteau bouge également (ce que l’on pourrait faire!).
Maintenant le rendu! Utilisez SheepIt Render Farm si vous pouvez, sinon votre carte graphique locale. Générez des PNGs puis faites un montage vidéo avec son et tout le toutim et générer la vidéo!
Voici ce que ça donne de mon côté (P.S., je suis allé chercher un poteau dans BlenderKit et j’ai modélisé des oeillets au niveau des accroches; j’ai également joué avec les paramètres du Noise Texture, ceux de la valeur des Keyframes X du mapping et W du Noise Texture jusqu’à satisfaction). Le bruitage, j’ai tout trouvé ça sur artlist.io. Si vous les voulez, c’est par ici:
https://drive.google.com/drive/folders/1KMvh9JOHhtWA1y4HkoR-OaF2d0sfCKc5?usp=sharing
- À votre tour, soyez créatifs, changez le HDRI, ajouter un soleil comme source de lumière tiens, changer la texture du drapeau, ajouter des lampadaires avec émission de lumière, have fun, soyez fous!
Un coussin gonflable à votre effigie, similaire à ceci:
Critères
- Changer la texture pour quelque chose qui vous représente
- Vous pouvez modifier le End Frame pour une rotation plus lente: 360 au lieu de 80. Moi, pour la démo, j’ai tout simplement doublé la séquence, en inversant l’ordre de la deuxième série d’images.
- Ajouter des effets sonores
- Laisser aller votre imagination, surprenez-moi
Walkthrough
Banque de cours - Eau et dynamic paint
Lien vers l'original# Eau et dynamic paint
- Créer un dossier intitulé “Chutes”.
- Y copier le fichier de départ suivant: https://drive.google.com/file/d/1EKi3gqAq9c1wzzy5Zpmxzi9M6EsdHsgz/view?usp=sharing
- Ce modèle est tiré du livre “From the book Learn Blender Simulations The Right Way” de Stephen Pearson.
- Vous pouvez modéliser votre propre chute à la place, mais attention de ne pas rendre votre scène trop complexe avec des résolutions de maillages trop élevés.
- Le renommer Chutes.blend
- Créer un cube qui contient tous les objets, mais pas plus.
- Apply Scale pour le cube (⌃ A → Scale), sinon les calculs de simulations seront déformés et conduiront à des comportements intensément zarbis.
- Modifier le cube pour qu’il devienne le domaine d’une simulation de type “Fluid”. Domain Type devrait être “Liquid”
- Changeons le “Resolution Divisions” à 64 (si votre CPU n’est pas très puissant, laisser la valeur à 32 jusqu’au rendu final où là vous l’augmenterez avant le bake.
- Changeons le Time Scale à 0.5 pour créer un effet de ralenti.
- On ne veut pas que le fluide entre en collision avec la bas du domaine, ni avec l’avant, sinon le cube va se remplir de liquide. On veut que la chute d’eau continue de “tomber” naturellement. Ainsi donc, dans “Border Collisions, retirer Front et Bottom du cube.
- Fixons “Narrow Band Width” à 8 pour augmenter l’épaisseur du fluide, i.e. une plus grande densité de particules.
- Activons “Fractional Obstacles” afin de nous assurer que les particules n’adhèrent pas aux objets effectors. Cela améliore la simulation près des bords des effectors, évidement, cela va nous coûter plus cher en calculs.
- Dans la section “Particles”, activer le “Foam”, parce que c’est chouette la mousse!
- Changer la valeur de “Potential Radius” et “Particle Update Radius” à 3. Cela rendra la simulation plus fluide et moins chaotique, mais, encore une fois, nous coûtera plus cher en calculs.
- Enfin, augmenter le “Wave Crest Particle Sampling” à 300. Cela améliorera la simulation au sommet des vagues en y ajoutant plus de particules.
À noter qu’ici j’ai mis le Time Scale non pas à 0.5 mais à 0.2. J’ai alors agumenté le End Frame à 400, j’aime les chutes au ralenti. Si vous laissez le Time Scale à 0.5, 250 frames c’est suffisant.
- Dans la section “Mesh”, activer celle-ci pour qu’une géométrie soit générée lors du calcul de la simulation.
- “Upres Factor” a une valeur par défaut de 2, ce devrait être suffisant pour un look pas trop low poly. Si ce n’est pas assez, augmenter cette valeur, procéder par essai-erreur.
- Le fait d’activer “Mesh” va créer une géométrie autour de chaque particule de la simulation, et le rayon de 2 de chaque particule est trop grand, cela va donner l’impression de ballons d’eau. Réduire donc la valeur “Particle Radius” à 1.
- S’assurer d’activer “Use Speed Vectors”. Ainsi, les vecteurs de vitesse ainsi calculés et “baked” dans la simulation pourront être utilisés pour le motion blur lors du rendu.
- Pour la Cache, Frame end: 250, s’assurer également que le type de Cache soit “Modular”. “Is Resumable” doit être activé, sinon Blender ne pourra pas générer de particules. Vous devriez voir un message à ce sujet au-dessus du bouton “Bake Data” quand “Is Resumable” n’est pas activé.
- De mon côté, j’ai mis le Frame End à 400 et j’ai réduis le “Time Scale” à 0.2. Pour que ça aille plus vite, laissez le Time Scale à 0.5 et le Frame End à 250.
- Le “Format Volumes” doit être ici du type “Uni Cache” au lieu de la valeur habituelle “Open VDB” car cette dernière ne traite pas les “Speed Vectors” qu’on a activé tout à l’heure pour avoir du Motion Blur. Seul Uni Cache sait quoi faire avec les Speed Vectors.
- Ainsi donc:
- Ne pas oublier de s’assurer que le nom du dossier qui contiendra la cache commence par // afin que ce dernier soit créé dans le même répertoire que le fichier .blend.
- Créer un mesh de type “Plane” de la taille approximative ci-dessous. Le placer au sommet et au début de la chute. S’assurer qu’il ne touche à aucun objet mais qu’il soit assez grand et, bien sûr, qu’il soit à l’intérieur des limites du domaine.
- N’oubliez de faire Apply Scale!
- Puisqu’on a tourné l’objet également, Apply Rotation aussi! Ainsi, en sélectionnant l’objet, dans le menu N, Item devrait montrer le vecteur [0,0,0] pour la rotation, et [1,1,1] pour l’échelle.
- On pourrait créer deux objets Inflow, ou surélever celui-ci pour obtenir la simulation désirée.
- Configurons le Plane en tant qu’Inflow. Dans les propriétés physiques, choisir Fluid.
Propriété Valeur Description Settings: Type Flow Flow Tyle Liquid Behavior Inflow Use Flow Activé Flow Source: Flow Source Mesh On veut que le “Plane” en entier soit la source du fluide Is Planar Activé Comme “Plane” n’est pas un solide (pas d’épaisseur), on doit dire à Blender que l’objet est un plan. Initial Velocity: Activé On veut une vitesse initiale au fluide, dans la direction des Y négatifs Y -1 Plus la valeur est grande, plus la vitesse initiale du fluide le sera également.
Maintenant sélectionner le lit de la chute d’eau (la partie plane au milieu).
Lui conferrer la propriété physique “Fluid” également, mais le type est maintenant “Effector”, l’Effector Type est “Collision” et on doit activer “Is Planar”.
Répétons la même chose pour les pierres. Il faut le faire pour chaque objet. À noter que même si vous sélectionnez plusieurs objets, les propriétés que vous conférerez à ceux-ci ne s’appliqueront qu’à l’objet actif. Comment faire alors?
Soit on y va un par un, ou alors une fois les propriétés appliquées à un objet, on sélectionne tous les objets vers lesquels on veut copier les modifiers (⇧-Select), puis on ⇧-select l’objet qui contient les modifiers qu’on veut copier en dernier (c’est important!), et enfin ⌃ L puis “Copy Modifiers”.
Sélectionner le domaine, et, dans la section “Settings” des propriétés physiques, faire “Bake Data”.
Pour l’instant, la simulation est une série de points dans l’espace, faire “Play” pour avoir un aperçu de celle-ci.
- On a besoin que chaque point dans l’espace simulé soit un objet (en ce moment ils sont montrés comme des “halos”, comme des points sans géométrie), mais il faut faire attention au type d’objet utilisé. Une UV Sphere par exemple a un maillage trop complexe, cela ralentirait énormément Blender.
- D’abord, sélectionner le domaine (le gros cube) et ajouter un “Smooth by Angle” modifier. Ensuite cliquer droit sur le cube et choisir le sous-menu “Smooth by angle”.
- Nous allons choisir l’objet de type cône, avec très peu de géométrie dedans.
- Ajouter un cône et dans les propriétés de création, 3 pour Vertices. Changez également l’échelle à 0.02 et faites Apply Scale.
- Vous devriez avoir un tout petit cône qui est en fait devenu une pyramide à 3 côtés et à base triangulaire:
- Sélectionner le domaine et aller dans les propriétés “Particles”. En fait, vous constaterez que Blender, quand on a créé le domaine, a ajouté deux modifiers de type Particles System: un pour le liquide, et un pour la mousse.
- Si vous faites “Render Image”, rien n’apparaîtra, ou plutôt vous devriez voir un cube qui cache tout! C’est qu’on n’a pas donné encore de texture au domaine, et pas non plus aux particules. C’est ce qu’on va faire maintenant.
- Remarquez que dans les propriétés Particles, Blender a ajouté Liquid et Foam au domaine. On va associer le triangle au Foam.
- Sélectionner le domaine, aller dans les propriétés Particles, et pour Foam, choisir Render As “Object” et choisir le cône comme Instance Object
- Sélectionner le domaine et dans les propriétés Material, Cliquer sur New. Remplacer Principled BSDF par Glass BSDF.
- Choisir une couleur légèrement bleutée pour l’eau, par exemple f8ffff
- Réduire le Roughness à 0.
- L’Indice de réfraction de l’eau (IOR) est d’environ 1.333
- Si vous voulez connaître l’indice de réfraction de la majorité des medium, c’est par ici:
https://pixelandpoly.com/ior.html
On va donner un peu de volume à l’eau. Dans la section “Volume”, cliquer sur “None” et choisir “Principled Volume”.
Donner une couleur bleue à ce shader et fixer la densité à 0.5.
On a terminé avec la texture de l’eau. Maintenant passons à la mousse.
Sélectionner le cône, et dans la section Material, faire New. Dans le Principled BSDF, baisser le Roughness à 0.1. L’eau aura une belle propriété de réflexion. Techniquement, ça pourrait être plus transparent que ça, mais qu’est-ce que ça va coûter cher lors des rendus! À vous de jouer avec cette valeur.
On est prêt pour les bakes.
Sélectionner le domaine, et faire Bake Data dans la section Settings des propriétés physiques.
Ensuite faire Bake Particles dans la section Particles.
Puis faire Bake Mesh dans la section Mesh.
Aller à un frame assez loin (genre 200) et faite Render Image!
C’est joli quand même (mais tellement coûteux!). La taille du dossier cache est de 2.5 GB dans mon cas. Impossible d’envoyer la chose à SheepIt Render Farm (le max actuel toléré étant de 2GB). Je vais devoir donc générer l’animation pendant la nuit sur mon pauvre laptop.
- Maintenant, pour l’animation, il est important d’avoir du Motion Blur sinon la chute d’eau aura l’air beaucoup trop fake, mais l’activer dans Cycles est encore plus coûteux pour une simulation de fluides. En fait tellement que mon Mac n’arrive pas à faire le rendu, Blender plante!
- On va donc faire une approximation du motion Blur via le compositor grâce à l’information Vector Blur qu’on a activé au début en créant le domaine (Vous vous souvenez du ”Use Speed Vectors”?).
- Dans les propriétés Render Layers. activer Vector et Z (Denoise Data est déjà activé).
- On a déjà effectué le rendu d’une image un peu plus tôt. Sinon, faites-le maintenant, en choisissant un frame qui vous convient et faire Render → Render Image. Cela va nous permettre de voir, dans le Compositing, l’effet du compositing.
- Après avoir fait un Render Image, aller dans l’espace de travail Compositing. Vous devriez déjà avoir tout ceci:
- Ajoutons un noeud de type Vector Blur (⇧ A → Filter → Blur → Vector Blur)
- Connecter la sortie Depth du Render Layer à l’entrée Z du Vector Blur et connecter la sortie Vector à l’entrée Speed.
- Connecter la sortie Image du Render Layer à l’entrée Image du Vector Blur et c’est maintenant la sortie Image de ce dernier qu’on connecte à l’entrée image du noeud “Color Balance”.
- Paramètres du Vector Blur:
Paramètre Valeur Description Samples 32 Blur 0.5 Speed Min 0 Speed Max 40
- Ça devrait ressembler à ceci:
- Finalement, retirons la visibilité dans les rendus pour l’objet “Inflow”, on ne veut pas voir un plan blanc au début de la chute:
- Ça y est, vous êtes prêts à rendre l’animation. S’assurer de générer des fichiers png et non pas une vidéo car on en demande beaucoup à Blender et à notre machine et on ne veut pas devoir tout recommencer si ça plante.
- Voici le résultat, vous remarquerez que la qualité de la simulation qu’on a fixé fait en sorte, par exemple, que l’eau ne semble pas toucher au lit de la rivière et le débit n’est pas très élevé:
- Voici un rendu de plus grand qualité (ça a pris toute la nuit sur mon MAC), format 4K, Sampling Substep réglé à 10 pour les effectors te les inflows, 400 frames avec un Time Scale de 0.3 et une Resolution Division de 128 pour le domaine):
- Remarquez ici que maintenant, ce sont les effectors qui n’ont pas assez de géométrie (l’eau passe au travers de la première pierre en haut à droite) et l’eau tombe derrière, il aurait fallu que crée un effector à l’arrière de l’Inflow pour empêcher cela.
- Changer le lit de la chute et l’émetteur pour des objets solides (Solidify modifier auxquels vous faite “apply” à la fin); retirer “Is Planar” desdits objets. La simulation sera plus précise, l’eau se rapprochera du lit.
- Ajouter de la géométrie au lit et à l’émetteur avec un subdivide modifier appliqué.
- Augmenter la géométrie des pierres (Subdivide Modifier sur lequel vous faite “Apply”).
Créer un nouveau fichier blend dans son propre dossier.
Créer un “Plane”, lui ajouter un “Ocean Modifier”, changer le Size à 0.4 et pour la propriété Time, inscrire “#frame/20”. Si si, on peut animer n’importe quel paramètre en fonction du numéro du frame!
📌
Ça s’appelle un driver. Pour le retirer, il faut cliquer droit et faire “Delete Driver”.
Changer la résolution Viewport à 16 et celle du Render à 32.
Changer Repeat X à 2 et Repeat Y à 2.
Dans la section Waves, changer Scale à 0.4 et Choppiness à 3. Jouer avec ces valeurs pour obtenir l’effet désiré.
Activer la section Foam. Nommer le Data Layer de la section Foam “Ecume” et Coverage devrait avoir une valeur de 0.2 genre comme du coup (jouer avec ces valeurs).
Zoomer de manière à voir tout l’océan dans le viewport.
Faites “Play” juste pour voir, puisque nous avons indiqué que la variable Time est maintenant une fonction du numéro de Frame, l’animation est présente.
Vous pouvez changer le “Random Seed” pour changer la forme de l’océan et de ses vagues.
Dans le Shader Editor, ajouter un Principled BSDF. Changer la couleur pour obtenir un bleu de votre océan/mer préféré (moi c’est la Méditerrannée). Roughness à 0.3 genre, Transmission à 1 et IOR à 1.34 (une approximation de l’indice de réfraction de l’eau salée).
Ajouter noeuds “Add Shader”, “Emission”, “Attribute” et “Color Ramp”. Les connecter ainsi: Attribute à Color Ramp, Color Ramp à Emission et Emission à Add Shader.
Dans Attribute, inscrire “Ecume” (l’attribut du Foam).
Ajuster le Color ramp pour obtenir l’effet d’écume désiré. Comment fonctionne le Color Ramp? L’input est une valeur entre 0 et 1. À 0, c’est la couleur la plus à gauche qui apparaîtra, à 1, c’est la couleur la plus à droite.
Ajouter une caméra et l’ajuster de manière à ce qu’on ne voit pas les “bords” de l’océan. Vous savez comment faire maintenant.
À la place du HDRI dans les propriétés World, choisi un Sky Environment Texture
Ajuster les paramètres du Sky Environment Texture à votre guise.
Ajuster le nombre de frames (disons max 120) et faites un rendu de l‘animation
Voici le résultat
- Cliquer sur le bouton “Add Canvas”
- Pour “Surface Type” dans la section “Surface”, choisir “Waves”
- Changer “Smoothness” à 0.1 au lieu de 1.
- Ajouter une UV Sphere. Donnez-lui la texture et couleur que vous voulez.
- Lui ajouter une simulation de type Dynamic Paint également, et pour le type, choisir “Brush” au lieu de “Canvas”
- Cliquer sur le bouton “Add Brush”.
- En vous assurant que l’animation est en mode Play, déplacez la sphère selon le plan X et Y (G ⇧ Z) et admirez le résultat.
- Ajouter un Smooth by Angle Modifier à la sphère, activer “Ignore Sharpness”.
Réduire grandement la turbulence de l’océan. Vous devriez être en mesure de le faire, essayez!
Passer en mode vue orthogonale en élévation (Numpad 7) et en mode Wireframe (Z → Wireframe)
On va tracer un chemin sur l’océan et demander à la sphère de le suivre.
Cliquer sur l’ocean et faire H pour le cacher.
Ajouter une courbe de type Path (⇧ A → Curve → Path).
Passer en mode Edit.
Déplacer les points du la courbe et en ajouter si nécessaire avec Extrude (E). Créer une chemin où le dernier point correspond au premier. S’assurer que le rayon de courbure du départ soit assez aligné avec celui de l’arrivée. Une manière de le faire est de sélectionner le point de départ et le point d’arriver (que vous avez fait coïncider du mieux possible) et les bouger de manière à adoucir et faire correspondre leur rayon de courbure respectif.
Passer en mode Object et en mode Camera View
Déplacer (attention seulement selon les axes Y et X, pas Z! - donc G puis ⇧ Z) et scaler le Path de manière à ce qu’il couvre grosso modo le cadre de la caméra.
Sélectionner la sphère puis le Path et faire ⌃ P puis choisir Object (Keep Transform) pour faire en sorte que la sphère soit un enfant du Path.
Avec la sphère sélectionnée, lui ajouter un Constraint Modifier (propriétés Constraint) de type “Follow Path”. Chosir le NurbsPath comme objet à suivre. La sphère devrait se déplacer sur le Path.
Le paramètre Offset permet de déplacer la sphère le long du chemin. À 0, la sphère est à sa position initiale, à -100%, elle aura parcouru tout le chemin jusqu’à la position finale qui, dans notre cas, coïncide avec l’initiale. Dependent des valeurs “Forward Axis”, ça peut aussi être +100%. Le Up doit être Z. Essayez pour voir en déplaçant le curseur de la souris de gauche à droite après avoir cliquer sur le champ “Offset”.
Keyframons l’animation. Au Frame 1, indiquer une valeur 0 dans Offset et cliquer sur le petit bouton à droite pour qu’il devienne un diamant.
Au dernier frame (250), inscrire la valeur -98% (à une valeur -100% dans mon cas, la sphère est un peu plus loin qu’au départ, jouer avec ces valeurs pour obtenir un mouvement le plus continu possible) et cliquer encore une fois sur le petit bouton blanc à droite du champ Offset.
📌
- Ni cliquez pas sur Bake. Pour une raison que j’ignore, avec un Bake, l’océan ne bougera plus lors du rendu de l’animation via SheeptIt Render Farm. Une question de cache sans doute…
C’est terminé, animez le tout!
Voici le résultat avec un océan beaucoup plus calme.
📌
Comme vous pouvez le constater, et vous m’en voyez très fâché et contrarié, ça marche dans le viewport, mais pas très bien une fois l’animation générée. Je n’ai pas trouvé pourquoi, je pense que l’Ocean Modifier, n’étant pas une véritable simulation, a ses limites. Avec un Bake, ça bouge plus… Mais vous verrez, au prochain cours, on verra quand même l’avantage de ce modifier. Mais pour l’instant, utilisons ce qu’on a appris pour faire un meilleurs Dynamic Paint
En fait, je pense que la sphère n’est pas assez grande, mais tout de même, si on voit l’effet dans le Viewport, on devrait le voir dans le rendu. Oh well…
Créer un nouveau fichier Blender.
Ajouter Plane, triplez sa taille et faites Apply Scale (⇧ A → “Plane” ↩, S 3 ↩, ^ A → Scale ↩).
Ajouter un UV Sphere. Scale down à 0.1. Apply Scale.
Sur la UV Sphere, ajouter un Smooth by Angle Modifier et activer le checkbox “Ignore sharpness”
Aller au Frame 1, placez la sphère à gauche. Insert Frame.
Au frame 100, placer la sphère à droite. Insert Frame.
Ajouter une caméra, trouver un bon point de view dans le Viewport puis faire ⌃ ⌥ Numpad 0 pour aligner la caméra. Ajuster au besoin.
Sélectionner le plan et passer en mode Edit Edge. Sélectionner les 4 egdes (A). Cliquer droit et faire Subdivide. Dans le menu de création, mettez 40 pour la valeur “Number of cuts”.
Revenir en mode objet.
Ajouter un “Solidify Modifier”, donner une certaine épaisseur au Plane et faire Apply.
Dans les propriétés Physics, ajouter un Dynamic Paint de type Canvas.
Faire Add Canvas
Pour Surface Type, choisir Weight.
Un peu plus bas, dans output, cliquer sur + pour ajouter le vertex groupe prénommé “dp_weight”. La couleur rouge disparaîtra.
Maintenant sélectionner la sphère, et lui donner également un Dynamic Paint Modifier, mais de type Brush cette fois-ci.
Cliquer sur Add Brush.
Sélectionner le plan, passez en mode Weight Paint et faire play. Vous devriez voir l’impact de la brush sur le canvas.
Revenir en mode Object
Sélectionner le Plane, et dans le menu Object, choisir “Quick Effects” → “Quick Smoke”.
📌
Pourquoi le Plane (le canvas) et pas la sphère? La sphère n’est là que pour déformer (paint brush) le canvas (le Plane) et ainsi créer un Weight Paint Vertex group derrière elle, comme une traînée. C’est ce Vertex Group qui va prendre feu.
Un “Domain” avec le fameux voxel devrait apparaître, entourant complètement le Plane.
Sélectionner le Plane, on ne veut pas qu’il prenne entièrement feu, seulement son Vertex Group.
Assurez-vous que dans le stack des simulations, Fluid (qui vient d’apparaître, rappelez-vous que la fumée et le feu, se sont des fluides) soit après Dynamic Paint. En effet, on veut d’abord créer les Vertex Groups déformés par la sphère, et ensuite y mettre le feu
📌
Vous pouvez également changer l’ordre dans les propriétés Modifiers car les simulations sont des modifiers.
Dans les propriétés de la Fluid Simulation, sous Fluid → Settings, choisir le Vertex Group “dp_weight”.
Passer en mode Solid ou Render View et faites Play. Vous devriez voir un petit chouya de fumée (s’assurez dans le timeline que Drop Frames est à off (Playback → Sync → Play Every Frame)).
Vous devriez voir de la fumée derrière la sphère.
Activer “Initial Velocity. Modifier Source à 0 et Initial Y à -1. Comme notre balle se déplace de gauche à droite le long de l’axe des Y, on veut que la fumée va se déplace vers la gauche (Axe Y négatif).
Sélectionner le domaine (la grosse boîte à l’intérieur de laquelle la simulation a lieu). Vous devriez encore voir les propriétés physiques à droite, mais cette fois-ci, pour le domaine.
Pour ne pas demander une résolution trop grande, activons le Noise dans les propriétés physiques du domaine.
Augmenter la résolution à 64.
Sélectionner le Plane, et dans les propriétés Physics → Fluid, choisir “Fire + Smoke” pour le Flow Type.
Faire Play au complet une fois pour recalculer la simulation, puis s’arrêter au frame 60 environ. On va travailler le Shader.
Sélectionner le domaine.
Aller dans le Shader Editor, choisir Object. Vous devriez avoir déjà un Principled Volume Shader ajouté par le fait d’avoir choisi “Quick Smoke”.
Ajouter un Node Volume Info.
Connecter Density de ce noeud à Density du Principled Volume. Même chose pour Flame, à connecter à Emission Strength et Emission Color.
Insérer un Math node, type Multiply entre le lien Density. Ajuster la valeur à 7. Ça nous permet de contrôler la densité de la fumée.
Ajouter un Math Node de type Add entre Flame et Emission Strength. Valeur à genre 32.
Revenir au Frame 1, refaire Play pour exécuter derechef la simulation.
Une fois que les 100 frames ont joué, revenir au frame 60 environ. Tiens, changer la valeur du Multiply à 20 aussi, on veut une fumée plus dense.
Bon, une flamme blanche, c’est pas tout à fait ça. Changeons sa couleur.
On va pousser plus loin notre simulation du feu du premier cours. Avec un Color Ramp, on va pouvoir déterminer la couleur de la flamme en fonction de sa température, enfin presque, on va se baser sur l’info Flame du Volume Info.
Ajouter un noeud Color Ramp donc entre Flame et Emission Color et le configurer à peu près comme suit:
En fait amusez-vous, créez votre flamme préférée.
Donner une texture au Plane. Ah il faut aller dans le Object Properties du Plane, et changer Viewport Display → Display as → Solid (au lieu de Wireframe). Quand on a décidé que c’était un émetteur de feu, Blender change la manière dont il le montre dans le viewport.
Donner un look bleu métallique (New Material!) au Plane.
Maintenant, revenons en mode layout et aux propriétés physiques du domain.
Augmentons la résolution à 256. Heu non, le CPU n’est pas assez puissant, laisser à 64. Mais pour de vrai, pour le rendu final, Résolution à 256 ou plus!
Dans la section cache, End Frame devrait correspondre, donc 100.
Changer le type de cache à “All” car nous avons deux simulations à Baker, le dynamic paint et le feu. Ouf, ça va prendre du temps.
Cliquer sur “Bake All”.
Une fois baked, le truc cool, c’est qu’on peut jouer avec les valeurs du shader (vu que c’est un material non plus sur une simulation, mais sur une série de mesh, une par frame) sans avoir à refaire un nouveau bake.
Dans le compositor, désactiver (avec la touche M) le noeud “Glare”.
Devoir Votre signature avec du feu (ou autre) - [ ] Basez-vous sur le tutoriel Dynamic Paint - feu - [ ] Modéliser un stylo (impressionnez-moi!). Pas besoin de remplacer la sphère, assurez-vous plutôt qu’on ne voit pas la sphère mais qu’elle est encore là. Parentez votre stylo à la sphère afin qu’il se déplace avec celle-ci. - [ ] Le déplacer le long d’un chemin créé par une Curve de manière à ce qu’il imite votre signature, la première lettre de votre prénom, ou autre, sur le canvas. - [ ] Donc un follow curve quoi. - [ ] Modifiez les paramètres de la simulation à votre guise, soyez storytellers et créati.fs.ives!
Critères
- [ ] Un mouvement correspondant à votre signature ou à la première lettre de votre prénom, ou quelque chose d’original.
- [ ] Modélisation du stylo.
- [ ] Simulation avec paramètres différents.
- [ ] Ajouter des effets sonores et musique.
- [ ] Laisser aller votre imagination, surprenez-moi! J’accorde des points quand vous dépassez mes attentes. Vous le savez depuis le début c’est ce que je fais 😊Banque de cours - Optimisation Océan, corps souples
Lien vers l'original# Optimisation Océan, corps souples
- Dans un nouveau dossier, créer un nouveau fichier que vous nommerez ocean.blend
- Créer un cube, lui donner un Ocean Modifier avec les paramètres suivants:
Resolution Viewport 16 Render 16 Waves → Choppiness 0.9 Wind Velocity 4 m/s
Dans les propriétés de l’output, changer le Frame rate à 30 et le End Frame à 300 (Note: ça va le changer automatiquement dans le timeline également).
Amener la tête de lecture au Frame 1. Dans le Ocean Modifier, enter la valeur 0 à Time et insérer un Keyframe.
Au frame 30, changer la valeur de Time à 0.5 et insérer un autre Keyframe.
Passer au Graph Editor. Assurez-vous de sélectionner la variable Time (Ocean).
Sélectionner tous les points (A) et changer l’interpolation à “Linear” (T puis choisir Linear). Vous devriez avoir ces deux points, l’un au frame 1, l’autre au frame 30:
On peut ajouter des modifiers dans le graph editor. Avec la souris dans le Graph Editor, Faites N pour faire apparaître le “N Menu”.
Cliquer sur un des points de la courbe (keyframe au frame 1 ou 30) pour le rendre actif (blanc).
Dans le tab vertical Modifier, ajouter un Cycles Modifier.
S’assurer que Before Mode et After Mode soient “Repeat with Offset”. Cela va créer un cycle mais avec un calcul du gradient entre la valeur de départ et celle de fin afin d’avoir un transition douce.
Revenir au Timeline et faire play.
Dans les propriétés du Ocean Modifier, changer le render à 32 au lieu de 16
Dans la section Bake, choisir votre dossier pour l’export (genre un dossier “Bake” dans le dossier de votre fichier blend: “//Bake\” )
Il est très important que le dossier de la cache soit au même endroit que le fichier .blend car on va, dans ce dossier, créer un autre fichier qui va utiliser cette cache.
Changer le End Frame à 300.
Cliquer sur “Bake” et attendre que la cache du bake soit générée. Le dossier de la cache devrait quand faire 1.5 GB, c’est pas rien. Imaginez si on avait mis la résolution du Render à 128 au lieu de 32…
Sauvegarder votre fichier Ocean.blend.
télécharger le fichier .blend suivant dans le même dossier que Ocean.blend: https://drive.google.com/file/d/1aCpLhRj8xtSq4O7-HvV4ZyzxgGXvLjXb/view?usp=sharing
Le nommer bateau.blend et l’ouvrir dans Blender. C’est un bateau que je suis allé chercher via Blenderkit, la version payante, donc s.v.p., ne pas utiliser en dehors du cadre pédagogique.
Ouvrir ledit fichier dans Blender
Sélectionner le plan et l’effacer.
Cliquer sur l’oeil à droite de la collection “Coast defense ship” pour cacher le bateau.
Ajouter un Plane, Scale à 1000 (S 1000 ↩)
📌
Attention, ne pas faire apply scale sur le plan, sinon la texture qu’on rajoutera tout à l’heure ne fonctionnera pas.
Dans le N Menu, choisir View et changer le Clip start à 0.1 et Clip End à 100 000. Ces valeurs déterminent quand la zoom in/zoom out clip et arrête de montrer l’information des objets dans le viewport.
Avec le Plane sélectionné, passer en mode Edit, cliquer droit et choisir Subdivide.
Dans les paramètres de création, changer le Number of Cuts à 100.
Revenir en mode Object.
Ajoutons un Material au Plane. Changer d’espace de travail, aller vers le Shading Editor.
Dans le shading Editor, dans la section où l’on voit l’objet, activer le N menu et changer le clipping de la camera dans l’onglet View, comme on l’a fait tout à l’heure. Ça ne le fait pas globalement. Donc encore une fois: Clip Start à 0.1 m et Clip End à 100000 m.
Choisir Object au lieu de World, faire New, sélectionner le Principled BDSF et faire ⌃ T. Cela va rajouter une Image Texture avec ses coordonnées et mappings.
Dans le noeud Image Texture, faire Open et choisir le premier .exr dans le dossier de la cache (moi je l’ai nommé ”Bake”). La première image devrait se nommer “disp_0001.exr”
Connecter la sortie Object de Texture Coordinate à l’entrée Vector de Mapping et, dans Mapping, changer le scale à 10 pour les trois axes.
Dans le noeud Image Texture qui est maintenant nommé “disp_0001.exr”, changer Single Image pour Image Sequence et mettre le nombre de Frames à 300.
📌
Saviez-vous que vous pouvez même mettre une vidéo à la place d’une image en guise de texture? Cela créera une texture animée! Ça peut être chouette pour des écrans de télé/pub genre à la Blade Runner.
Ici, l’aspect très important d’optimisation, c’est justement qu’il n’y a plus de simulation en jeu, l’océan a une texture animée.
Entre l’Image Texture et le Principled BSDF, ajoutons les noeuds suivants: Un Separate XYZ, un Combine XYZ dont vous connectez les 3 axes, i.e. les sorties X, Y et Z du Separate XYZ aux entrées X, Y et Z du Combine XYZ. Cela va transformer la couleur du texture en vecteurs [X,Y,Z].
Ajouter un noeud Vector Displacement et changer le scale à 0.01.
Enfin, connecter la sortie Displacement du noeud Vector Displacement à l’entrée Displacement du noeud Material Output.
Vous noterez que le Principled BSDF n’a pas de Base Color connecté en entrée, c’est normal.
Changer la couleur du Principled BSDF à noire, le Roughness à 0, l’IOR à 1.333 et le Weight de la Transmission à 1:
Revenir dans l’espace de travail “Layout”.
Assurez-vous que le Render soit Cycles.
Dans les propriétés Material, dans la section Settings, sous-section “Surface”, changer Displacement pour “Displacement and Bump”.
⚠️
Ce paramètre n’est visible que si le Render est en mode Cycles
Passer en mode Render EEVEE.
Passer en mode Render et zoomer sur le plan de manière à voir les vagues.
Dans les propriétés World, retirer le HDRI en choisissant Sky Texture dans Color et changer le Strength à 0.8.
Changer le renderer pour EEVEE au lieu de Cycles dans les propriétés Render.
Dans la section Color Management, changer Exposure pour 0.2 et Gamma pour 1.2. Changer la valeur du noeud Gamma dans le Compositing Editor à 1.2 également.
Revenir au Shading Editor pour le Plane, il y a trop de vagues, changer le scale du Vector Displacement à 0.001 plutôt que 0.01.
Dans le noeud Image Texture, activer Cyclic and Auto Refresh
Revenir au Layout Editor.
Dans les propriétés Modifiers du Plan, ajouter un Subdivision Modifier et changer le Render et Viewport à 4.
Faire unhide de la collection “Coast defense ship” et déplacer le bateau selon l’axe des Z de manière à ce qu’il ait l’air de flotter sur l’océan.
Se déplace dans le viewport de manière à obtenir une vue intéressante.
J’ai rajouté une caméra et baissé dans mon cas l’intensité du Sky Texture à 0.1, le soleil était trop aveuglant sinon. À vous de voir ce qui fonctionne pour vous.
Faites Render Image pour voir après avoir ajouté une caméra.
Maintenant vous pourriez vous amuser à animer le mouvement de la caméra avec une “follow path” par exemple.
Avec l’arrivée de EEVEE-NEXT (Blender 4.2), on pourra activer le Ray-tracing temps réel pour un look encore plus abouti! En attendant, voici le résultat en ajustant certains des paramètres de l’environnement Sky (soleil plus bas sur l’horizon).
📌
Cette documentation est tirée du livre “Learn Blender Simulations the Right Way” par Stephen Pearson
- À l’instar de la simulation de tissus, les corps souples (ainsi que les corps rigides) ont besoin d’une géométrie également distribuée pour bien fonctionner.
- Aussi, les corps souples (et corps rigides) font appel aux collisions pour interagir avec leur environnement.
- En ajoutant un Collision Modifier, des paramètres apparaîtrons dans l’onglet Softbody & Cloth:
| Field Absorption (absorption de champ) | Définit la capacité d’absorbtion de la force d’un champ. Par exemple, si un champ de force de vent traverse une collision avec une valeur d’Absorption de Champ fixée à 0,2, il absorbera 20% de la force du champ. Si la valeur est fixée à 1, il absorbera 100% du champ de force, et aucun vent ne pourra passer au travers. |
| --- | --- |
| Damping (amortissement) | La quantité de rebond qu’un corps mou aura lors d’une collision. 0 signifie aucune amortissement, il y aura donc beaucoup de rebonds. 1 signifie un amortissement maximal, auquel cas il y aura très peu de rebonds. |
| Thickness Outer (épaisseur extérieure) | La taille de la zone à l’extérieur de la collision. Avec une valeur de 0,5, il y aura un assez grand écart entre la collision et le corps souple. Ce paramètre sert également de rembourrage pour la collision. Au lieu de frapper et de rebondir, il semblera que le corps souple frappe un oreiller. |
| Inner (épaisseur intérieure) | La zone de collision à l’intérieur de l’objet. C’est essentiellement la distance de rembourrage, et si un corps souple entre dans cette zone, il essaiera de le forcer à sortir. Un exemple serait de placer un corps souple au milieu d’un plan. Comme la moitié du corps souple est à l’intérieur de la zone intérieure, il le poussera vers le haut et vers l’extérieur. Gardez à l’esprit que cela ne fonctionne pas pour une simulation de tissu, uniquement pour les corps souples. |Banque de cours - Collision et direction des normales
Lien vers l'original📌
Une collision est basée sur la direction des normales à la surface. Les normales d’un objet sont la direction dans laquelle les faces sont orientées (un vecteur perpendiculaire à chaque plan). Il faut parfois recalculer les normales et voir dans quelle direction celles-ci pointent pour que la simulation fonctionne. Pour ce faire, en mode Édition avec l’objet sélectionné, appuyer sur A pour sélectionner tous les sommets sur le maillage (mesh) puis choisir le menu Mesh → Normals → Recalculate (⇧ N). On peut également activer la visualisation de l’orientation de chaque plan (face) dans le menu Overlays pour voir dans quelle direction les plans sont orientés.
Quelques paramètres essentiels aux Softbodies:
| Collision Collection | Contrôle quelles collections interagissent avec la simulation. Si rien n’est indiqué, chaque collision dans chaque collection interagira avec les corps souples. |
| --- | --- |
| Friction | Ce paramètre fonctionne un peu différemment de ce q’on pourrait croire. Il s’agit de la friction globale de toute la zone. Si vous augmentez cette valeur, cela amortira le mouvement du corps souple, le faisant ressembler à un mouvement au ralenti. |
| Mass | Contrôle le poids de chaque sommet (Vertex) sur l’objet. Une valeur élevée de la masse des sommets fera s’effondrer sur lui-même l’objet souple vu que le poids des sommets est trop lourd pour maintenir la structure de l’objet. |
| Control Point | Permet d’utiliser un groupe de sommets (Vertex Group) pour contrôler la valeur de Masse de l’objet. On peut peindre des valeurs entre 0 à 1 sur chaque sommet (rappelez-vous de la simulation du drapeau). |
| Speed | Contrôle la vitesse de la simulation. Cette valeur est basée sur les images par seconde (FPS) de la scène. |
| | |
| Cache | Certaines de ces options devraient vous être familières car elles sont les mêmes que pour une simulation Mantaflow (le drapeau par exemple). Une chose qui est différente, cependant, est la possibilité d’avoir plusieurs caches. Vous pouvez cliquer sur le bouton + pour créer un autre cache et double-cliquez sur le cache pour le renommer. Vous pouvez ensuite en sélectionner une et modifier les paramètres comme vous le souhaitez avant de faire un Bake; cela n’affectera pas les autres caches. La chose est très utile pour prévisualiser rapidement certains paramètres dans la simulation. Pour basculer entre deux caches, assurez-vous de redémarrer la Timeline, puis sélectionnez la cache que vous voulez prévisualiser avant d’appuyez sur Play.
Quelle est la différence entre une cache et un bake? La cache est le résultat de l’animation lorsqu’elle est jouée, une ligne orange indique la portée de la cache dans le timeline. Chaque fois que vous changez un paramètre dans la simulation, la cache disparaîtra et vous devrez rejouer l’animation pour la récupérer.
Dans le cas d’un bake, le résultat de la simulation est verrouillé; ainsi vous ne pourrez pas changer les paramètres à moins de cliquer sur le bouton Free Bake. Dans le timeline, la portée du bake apparaît en rouge. |
| Cache Step | Permet de sauter des images d’une simulation lors du bake. Au lieu de faire un bake de chaque Frame, on fera un bake d’une image sur deux si cette valeur est réglée à 2 par exemple. Évidemment, la simulation sera alors moins précise, mais le bake prendra moins de temps. |
| Bake | |
| Bake All Dynamics | Fera un bake de toutes les simulations de la scène. Si vous avez plusieurs corps souples, systèmes de particules ou simulations de tissu, tous seront “baked” en même temps. |Exemples de corps souples
Effet du paramètre Mass:
Vertex Group et Weight Painting:
- Quand on crée un corps souple et qu’on joue l’animation, l’objet flotte simplement et oscille de haut en bas. C’est parce que l’attribut “Goal” est coché dans les paramètres. Un Goal est essentiellement un moyen de fixer les sommets en place. Cela peut être utile lorsqu’on essaie de créer par exemple des couvertures suspendues à une ligne, des coins d’un drapeau fixés à un poteau, des personnages qui marchent…
- Lorsque Goal est activé, tout l’objet va être “épinglé”. Si vous voulez que seulement certaines parties de l’objet utilisent le Goal, il faut créer un groupe de sommets (Vertex Group) et peindre les sommets en leur donnant une valeur entre 0 et 1 (Weight Paint).
- Pour créer un Vertex Group, on doit manuellement peindre les sommets en appuyant sur Tab et en sélectionnant Weight Paint (ou régler les valeurs dans les propriétés du Vertex Group crée, comme on a fait pour le drapeau ou le coussin). On compte donc sur le fait que l’objet a suffisamment de géométrie pour utiliser la peinture de poids.
- Comme on a justement vu avec le drapeau et l’oreiller, on peut créer un Vertex Group dans la section “Object Data Properties” et, en mode Edit, sélectionner les sommets de la géométrie qui servirent de “pin group”.
- La raison pour laquelle l’objet fait des bonds lorsqu’on lance la simulation est que la valeur du Strength par défaut du Goal est réglée à 0,7; ainsi elle ne fixe les sommets qu’à environ 70%. Si cette valeur est réglée à 1, alors l’ensemble de l’objet, ou plutôt les sommets épinglés seront coincés en place et ne pourront pas bouger (le drapeau fixé au poteau).
- Les valeurs Min et Max offrent un moyen d’ajuster précisément comment le Vertex Group affecte la simulation.
- La valeur Min sera la force minimale pour le poids de sommet le plus bas.
- Maintenant, c’est un peu compliqué à comprendre (je trouve!). Disons que vous assignez l’ensemble de l’objet avec un poids de groupe de sommet de 0 et que vous réglez la valeur Min à 1. Que pensez-vous qu’il va se passer ? L’objet va être complètement coincé car il utilise maintenant une valeur de force de 1 pour l’objectif. Après tout, c’est le minimum. Max fonctionne de la même manière - il contrôle la force d’épinglage de tous les sommets avec un poids de 1.
- Le paramètre Stiffness (rigidité) contrôle à quel point l’épinglage sera rigide. Dans la capture d’écran suivante, la Rigidité à gauche est réglée à 0.2, et à droite, elle est réglée à 0.999.
- Enfin, la valeur Damping (amortissement) amortira le mouvement du corps souple jusqu’à ce qu’il cesse de bouger. Plus vous augmentez cette valeur, plus l’objet cessera de bouger rapidement.
- Le Goal du corps souple est très utile et peut être pratique lorsqu’on essaie de créer certaines simulations comme des drapeaux et tout autre chose qu’on doit épingler (pin).
- L’option Edges est ce qui donne une certaine structure à l’objet à corps souple. Ainsi, au lieu de s’effondrer sur lui-même, il gardera sa forme. En gros, lorsque les Edges sont activés, cela ajoute des ressorts virtuels à tous les bords (Edges ou arrêtes, i.e. les segments qui relient deux Vertex (sommets) entre eux) de l’objet.
Springs Permet de contrôler où se trouvent les ressorts dans la géométrie (à l’instar du Vertex Group pour le goal ou le Pin Group). Pull La valeur agit essentiellement comme un élastique pour la simulation. Plus cette valeur est élevée, plus l‘“élastique” est fort, ce qui signifie que les bords resteront collés ensemble plutôt que d’être étirés. Push D’autre part, “Push” contrôle combien le corps souple résiste à être écrasé. Vous pouvez le considérer comme la force des ressorts à l’intérieur de quelque chose. Des valeurs plus élevées entraîneront une plus grande résistance. Plasticity Ma valeur la plus chouette des corps souples, cette valeur permet de déformer le maillage de manière permanente lorsqu’il rencontre une collision. Avec une valeur de 100, il restera déformé pour toujours, mais si vous le réglez sur une valeur plus basse, il reviendra alors lentement à sa forme originale. Bending Les contrôles de flexion déterminent le degré de flexion dans la simulation. Avec un réglage à 0, il s’effondrera simplement sur lui-même, mais avec un réglage plus élevé, il conservera sa structure. Length La longueur réduira ou étendra votre maillage selon la valeur que vous définissez. Par exemple, si la longueur est réglée à 70, alors le maillage se réduira à 70% de sa taille. Si la valeur est réglée à 150, alors le maillage s’étendra de 50% au-delà de sa taille originale. Collision Edge et Face Les checkboxes Collision Edge et Face permettront à la simulation de corps souples d’eentrer en collision avec les arêtes (edges) ou les plans (faces). Normalement, seuls les sommets entrent en collision, mais l’activation de Edge ou Face leur permettra également de participer à la simulation de collision. Gardez à l’esprit que lorsque vous activez Face, cela peut coûter très cher en ressources CPU et vous pourriez obtenir beaucoup de tremblements sur l’objet car le réglage Amortissement ne l’affecte pas. À utiliser donc avec parcimonie. Aerodynamics L’aérodynamique permet à l’objet à corps souple d’avoir une certaine traînée aérienne dans la scène. La valeur du facteur contrôle la quantité de traînée aérienne. Pour voir cela en action, vous devrez régler la valeur du facteur assez haut (2000 ou plus). Cela rendra l’air autour de l’objet très dense, ce qui ralentira la chute de l’objet et le déformera.
Il existe deux types différents d’aérodynamique : Simple et Lift Force. Simple est plus rapide à calculer mais moins précis. Lift Force est plus lent, mais aura plus de réalisme.Stiffness Stiffness (rigidité) ajoute des ressorts virtuels aux bords (edges) d’une face, et Shear (la valeur de cisaillement) contrôle la rigidité de ces ressorts. Lorsqu’elle est activée, elle empêche l’objet de s’effondrer sur lui-même.
Il faut noter que la rigidité fonctionne uniquement avec les faces quadrilatérales (quads, i.e. 4 sommets (vertices) par plan (face)). Un plan à trois sommets ne fonctionnera pas, le réglage de la rigidité n’aura alors aucun effet.
C’est entre-autres de là que vient la manie de vouloir des quads dans nos maillages plutôt que des triangles (bien que les cartes graphiques aient été longtemps optimisées pour des calculs autour de plans constitués de trois sommets, i.e des triangles).Effet du paramètre Pull
Effet du paramètre Push
Effet du paramètre Plasticity
Effet du paramètre Bending
Effet du paramètre Stiffness
- Le Self Collision, lorsqu’activé, fera entrer l’objet simulé en collision avec lui-même. C’est utile lors de la création de tissus, ou de vêtements par exemple. Si le paramètre n’est pas activé, le corps passera simplement à travers lui-même sans tenir compte de collisions possibles.
- Le Self Collision fonctionne en créant une petite balle virtuelle autour de chaque sommet et en l’utilisant pour les calculs de collision. La taille de cette balle virtuelle peut être contrôlée par le paramètre Ball Size.
- Si la valeur de Ball Size est trop élevée, une zone de collision de sommet pourrait interférer avec une autre. Cela amène le corps souple à s’étirer pour compenser la zone de collision. Si vous constatez que votre objet à corps souple se dilate lorsque vous activez le Self Collision, vous devez probablement diminuer la valeur de la taille de la balle.
Avec et sans Self Collision
- Le type de calcul définit comment la taille de la sphère de collision sera définie. Vous pouvez choisir parmi les options suivantes :
- Manual vous permet de définir manuellement la taille de la sphère de collision.
- Average prend la longueur moyenne de chaque arête et la multiplie par la valeur de la Taille de la sphère.
- Minimal prend l’arête la plus petite de l’objet et la multiplie par la valeur de la Taille de la sphère.
- Maximal fait l’inverse. Il prend la plus grande arête et la multiplie par la valeur de la Taille de la sphère pour déterminer la collision.
- Enfin, Average Min & Max ajoute les deux, divise par 2, et multiplie le résultat par la valeur de la Taille de la sphère.
- Dans la plupart des situations, vous n’avez pas besoin de changer ces paramètres, donc restez simplement avec Average.
- La rigidité (Stiffness) contrôle comment la collision avec soi-même fonctionne lorsqu’un sommet entre dans la sphère de collision d’un autre sommet.
- Lorsqu’elle est réglée à une valeur élevée, elle repoussera très rapidement le sommet. Lorsqu’elle est réglée à une valeur plus basse, elle le repoussera lentement.
- L’amortissement (Dampening) est utilisé pour ralentir un sommet lorsqu’il se rapproche de la sphère de collision d’un autre sommet. Des valeurs élevées le ralentiront très rapidement.
- La plupart du temps, tout ce que vous avez à faire est d’activer le Self Collision et tous les paramètres par défaut fonctionneront adéquatement.
- L’onglet Solver aide à rendre la simulation plus précise. Parfois, avec des collisions rapides, la simulation aura du mal à calculer, et vous pourriez avoir quelques erreurs et problèmes avec les collisions. Cependant, dans cet onglet, vous pourrez modifier les paramètres afin d’obtenir une simulation plus précise et donc plus réaliste.
Step Size Min Lorsque la simulation rencontre des erreurs ou si les collisions ne fonctionnent pas correctement, on peut augmenter le réglage Step Size Min. Cette valeur indique combien de fois la simulation sera calculée par image. Max Le nombre maximum de steps (passes) par frame dans le calcul. Auto-Step Blender va se baser sur la vitesse de l’objet (Velocity) pour automatiquement régler le nombre de steps. Error Limit Plus cette valeur est petit, plus la tolérance à l’erreur sera faible et plus précise sera la simulation. Diagnostic On peut imprimer les performances du solveur dans la console pour voir comment la simulation fonctionne. Sur Windows, il faut aller dans le menu “Windows → Toggle System Console. (La même console qu’on utilise pour troubleshooter des problèmes de programmes Python. Si si, on peut créer une scène au complet, avec animation, keyframes, simulations, et calculs, en écrivant du code Python.
Sur Mac, il faut démarrer Blender via un SHELL (Terminal) pour pouvoir voir ce qui est imprimé dans la console.Fuzzy La valeur Fuzzy (flou) définit la précision d’une collision. Des valeurs élevées permettent un calcul de simulation plus rapide mais moins précis.
- Si un objet pénètre à travers une collision, la simulation essaiera de le repousser avec une certaine vitesse. Cette dernière est contrôlée par les valeurs d’étranglement (Choke). Des valeurs plus élevées ralentiront le corps souple lorsqu’il sort d’une collision.
- Le dernier onglet dans la simulation de corps mou est le Field Weights. Cela fonctionne exactement comme avec la simulation de fluide. Vous pouvez définir certaines forces pour certains champs de force et personnaliser quels champs de force fonctionneront dans votre simulation.
- Si vous avez plusieurs champs de force dans votre scène, vous pouvez choisir quelle collection utiliser dans le menu Collection d’Effector. Ainsi, seuls les champs de force de cette collection affecteront la simulation.
- Pour certaines simulations, plusieurs corps mous interagissent entre eux, il faut alors leur rajouter un Collision Modifier afin qu’ils puissent se heurter entre-eux adéquatement. Il est important que le Collision Modifier, dans la pile des modifiers, soit appliqué APRÈS le Softbody modifier.
Des corps souples interagissant ensemble
Aller chercher le fichier Course Obstacles.blend ici: https://drive.google.com/file/d/1k8fdqbM7rQ6zSHdnnJlFkYLrOnTN5P7h/view?usp=sharing
Le sauvergader dans un nouveau dossier nommé “Course Obstacles”.
Ouvrir le fichier .blend
- Sélectionner l’objet nommé Soft Body Sphere et lui donner la propriété Soft Body dans les paramètres de propriétés Physiques.
- Augmenter la Mass à 2 pour qu’elle soit un peu plus lourde.
- Dans la section Cache, mettre End Frame à 600.
- Pour l’instant, désactiver “Goal” afin que l’objet ne flotte pas. Plus tard on le réactivera.
- Dans la section Edges, instaurer les valeurs suivantes:
| Paramètre | Valeur | Description |
| --- | --- | --- |
| Push | 0.6 | Cela va donner une certaine structure et rigidité à la sphère, une résistance à l’étirement |
| Pull | 0.6 | Ici une certaine résistance à l’écrasement |
| Damp | 40 | Lorsque la sphère entrera en collision avec un objet, elle vibrera et rebondira beaucoup sans amortissement. On va lui demander de se calmer le pompon un peu |
| Bending | 2.5 | Empêchera la sphère de s’écrouler sous l’effet de cisaillements (Shear) et ce faisant perdre sa structure. |
- Sélectionner la Soft Body Sphere et lui ajouter un modifier “Collision” (Add Modifier → Physics → Collision). S’assurer que Collision soit après Soft Body dans le stack des modifiers autant dans les modifiers( clé à mollette) que dans les propriétés physics.
- Sélectionner l’objet Cylinder 1 (celui du haut, le premier du parcours) et lui attribuer la propriété physique “Collision”.
- Dans les propriétés Modifiers, s’assurer que le modifier Collision est avant (au-dessus) le Solidify Modifier qui est déjà là.
- Ici, il est très important de noter que nous au préalable inversé la direction des normales du Cylinder 1 pour qu’elles pointent vers l’intérieur puisque c’est là que se passe l’interaction avec la sphère. Par défaut, lorsqu’on crée un cylindre, ou tout autre objet “plein”, les normales pointent vers l’extérieur et non pas vers l’intérieur de l’objet.
Banque de cours - Collision et direction des normales
Lien vers l'original📌
Une collision est basée sur la direction des normales à la surface. Les normales d’un objet sont la direction dans laquelle les faces sont orientées (un vecteur perpendiculaire à chaque plan). Il faut parfois recalculer les normales et voir dans quelle direction celles-ci pointent pour que la simulation fonctionne. Pour ce faire, en mode Édition avec l’objet sélectionné, appuyer sur A pour sélectionner tous les sommets sur le maillage (mesh) puis choisir le menu Mesh → Normals → Recalculate (⇧ N). On peut également activer la visualisation de l’orientation de chaque plan (face) dans le menu Overlays pour voir dans quelle direction les plans sont orientés.
Passons maintenant au Cylinder 3 (le cylindre 2 n’a pas besoin d’être un objet Collision). Sélectionner l’objet Cylinder 3 et lui ajouter un modifier Collision.
S’assurer que le modifier Collision soit le premier dans le stack des modifiers.
Régler Inner à 0.001 sinon le calcul de collision ne se fera pas correctement car il y aura “overlap” entre les bounding boxes de la sphère et ceux du cylindre (les fameux paramètres Inner et Outer).
Pour sauver du temps, le Cylinder 3 est déjà animé pour s’ouvrir et se fermer. Au frame 40, il commence à s’ouvrir, et il est complètement refermé au frame 80.
Faites “Play” pour voir?
⚠️
Pour aller un peu plus vite, vous pouvez rester dans les propriétés Modifier et faire “Add Modifier” puis choisir “Collision” et le remonter dans la stack des modifiers pour qu’il soit le premier.
- Maintenant sélectionner Platform 1 et lui ajouter un paramètre Collision et, encore une fois, le déplacer pour qu’il soit le premier en haut dans la pile des modifiers.
- Faire exactement la même chose pour Platform 2 et Platform 3.n
- Même chose pour l’objet Gear Left.
- Même chose pour l’objet Gear Right.
- Sélectionner Gear Right and ouvrir le N Panel (touche N). Dans la section Rotation, changer la valeur de Y pour “#frame/-25”. Cela va rajouter un “driver” de rotation où, essentiellement, l’engrenage va tourner vers la gauche (en vue orthogonale de face) d’une valeur de 1/25 du No du frame dans l’animation. Chouette non?
- Notez que le champ Y Rotation est maintenant violet, i.e. il est devenu un driver d’animation.
- Pour l’engrenage de gauche, faire la même chose mais changer le signe du diviseur, on veut diviser par +25 et non pas -25, pour que cet engrenage tourne vers la droite, donc Rotation Y = “#frame/25”
- Faites Play et vous verrez les engrenages tourner.
- Ajouter une collision au reste des objets, à l’exception de l’objet “Goal Guide”, et s’assurer bien de, à chaque fois, déplacer le Collision Modifier au sommet de la pile de modifiers pour chaque objet sinon vous pourriez obtenir des résultats étranges.
- Pour le Glass Cylinder, réglez le Damping à 0.5 pour amortir la collision. Cela aidera la sphère à ne pas trop rebondir.
- Choisir l’objet Cloth 1. Dans les propriétés Physics, ajouter un “Cloth”.
- Passer au mode Edit Faces, choisir les 4 faces qui forment les coins du tissu
- Dans les propriétés Data, créer un nouveau Vertex Group et appuyer sur le bouton Assign.
- Revenir en mode Object, aller dans la section propriétés Physiques et dans la section Shape, assigner le Vertex Group dans Pin Group.
- Changer le End Frame dans Cache à 600.
- Dans les propriétés Modifier et dans Physics, il est important que le Cloth Modifier soit avant Collision.
- Faites exactement à Cloth 2 ce qu’on vient de faire pour Cloth 1 (vertex group, cloth sim, end frame à 600, pin group, …)
- Activer le Goal pour un objet Soft Body indique à Blender d’utiliser la position (ou la position animée) d’un sommet dans la simulation. L’animation des sommets peut être effectuée de toutes les manières habituelles (courbes F, armatures, parents, treillis, etc.) avant l’application de la simulation de corps souple. Le Goal est la position finale souhaitée pour les sommets.
Vertex Group Groupe de sommets pour permettre des poids de Goal par sommet (multipliés par l’objectif par défaut). Setting
StiffnessLa rigidité du ressort pour le Goal. Une valeur faible crée des ressorts très faibles (attache plus flexible au Goal), une valeur élevée crée un ressort fort (une attache plus rigide au Goal). Settings
DampingLe coefficient de frottement pour le Goal. Des valeurs plus élevées donnent un amortissement de l’effet de ressort (fabiles secousses), et le mouvement s’arrête (s’amortit) rapidement. Strengths
DefaultPoids/force du Goal pour tous les sommets lorsqu’aucun groupe de sommets n’est assigné. Si vous utilisez un groupe de sommets, le poids d’un sommet définit son Goal. Strengths
Min/MaxLorsque vous utilisez un groupe de sommets, vous pouvez utiliser le Minimum et le Maximum pour affiner (limiter) les valeurs de poids. Le poids du sommet le plus bas devient le Minimum, la valeur la plus élevée devient le Maximum.
- A “goal” is a shape that a soft body object tries to conform to. It acts like a pin on a chosen set of vertices, controlling how much of an effect soft body has on them.
- Enabling Soft Body Goal tells Blender to use the position (or animated position) of a vertex in the simulation. Animating the vertices can be done in all the usual ways (F-Curves, armatures, parents, lattices, etc.) before the soft body simulation is applied. The “goal” is the desired end position for vertices. How a soft body tries to achieve this goal can be defined using stiffness forces and damping.
Goal Strength
- La *Force du Goal *définit combien de mouvement d’un système d’animation est appliqué.
- Une valeur Goal de 1.0 signifie qu’il n’y a pas de simulation de corps souple, l’objet agit comme n’importe quel objet animé régulier (c’est-à-dire que le sommet est maintenu à sa position originale). Lorsque Goal est réglé sur 0.0 (ou pas de but), le sommet est uniquement influencé par les lois physiques selon la simulation de corps souple.
- En définissant des valeurs de Goal entre 0.0 et 1.0, vous pouvez effectuer un mélange entre l’effet de l’objet affecté uniquement par le système d’animation et l’effet de l’objet affecté uniquement par l’effet de corps souple.
- Le Goal sert également de mémoire, pour s’assurer que les objets souples ne se déforment pas trop (pour ne pas aboutir à la forme animée non souple). En utilisant le système de poids Vertex Group, vous pouvez définir un poids Goal par sommet. Pour rendre cela plus naturel, des forces de ressort peuvent être définies pour contrôler jusqu’où les sommets peuvent se déplacer de leur position d’origine.
Détails techniques
- Dans le monde des corps souples, les sommets des maillages sont traités comme des particules ayant une masse. Leur mouvement est déterminé par les forces qui les affectent. En plus d’autres forces, les particules individuelles peuvent interagir les unes avec les autres le long des arêtes en utilisant un modèle physique qui est très proche des amortisseurs utilisés dans les voitures. Les pièces fonctionnelles sont :
- Un ressort essaye de maintenir les particules à une certaine distance. L’effort que le ressort fait pour cela est contrôlé par le paramètre de corps mou Rigidité.
- Un élément d’amortissement pour calmer le mouvement. La résistance que l’élément construit contre le mouvement est contrôlée par le paramètre de corps souple Amortissement.
- Nous allons apprendre comment utiliser le Soft Body Goal pour faire suivre une courbe à la sphère. Si vous vous souvenez du chapitre précédent, le Goal permet de fixer et d’animer un corps mou. Le Goal du corps souple est d’essayer de revenir à sa position originale, ou là où se trouve le point d’origine. C’est pourquoi, lorsqu’on active Goal, l’objet se balance simplement de haut en bas : il essaie de revenir au point d’origine.
- Donc, ce que nous allons faire est d’activer le Goal lorsque la sphère entre dans l’objet Tube de Verre. Ensuite, la sphère suivra la courbe qui est à l’intérieur, rebondissant et frappant les murs jusqu’à ce qu’elle tombe de l’autre côté.
- En premier, il faut trouver à quel frame la sphère entre dans le tube de verre. Ça devrait être autour du frame 430.
- On ne peut pas animer Default de la section Strength, mais on peut animer Min et Max.
- Déplacer la tête de lecture dans le timeline au frame 430.
- Dans les propriétés physiques de la sphère, Activer “Goal”.
- Ajuster les valeurs Min et Max dans la section Strength de Goal à 0 et activer le bouton keyframe pour en insérer un pour les deux valeurs (Min et Max).
Maintenant déplacer la tête de lecture au frame 431, et changer la valeur de Min et Max à 0.5.
Ne pas oublier de cliquer sur le bouton d’ajout de keyframe à droite des champs Min et Max.
Configurons la sphère pour qu’elle suive une courbe !
Dans le panneau des contraintes ajouter une contrainte de type Follow Path.
Dans Target, choisir l’objet “Goal Guide”, c’est une courbe déjà existante qui se promène à l’intérieur du tube de verre.
L’offset contrôle quand l’objet commence à suivre la courbe, dans notre cas indiquer 431.
Cliquer sur Animate Path.
En faisant Play, vous allez peut-être remarquer que la sphère est super loin à gauche!
Pour régler la chose, ajoutons des keyframes de positionnement pour la sphère. Essentiellement, quand on anime la sphère et qu’elle commence à suivre la courbe, son origine doit se trouver au début de la courbe.
Aller au Frame 1.
En mode vue orthogonale frontale (Numpad 1, pour éviter les déplacements selon l’Axe des Y), déplacer la sphère à l’intérieur du Cylinder 1, un peu au-dessus du Cylinder 3. Assurez-vous que la sphère soit bien à l’intérieur et n’intersecte aucun objet.
Au frame 1 donc, faites I pour insérer un Keyframe au frame 1.
Maintenant aller au Frame 429, i.e. juste avant les premiers keyframes du Goal de la sphère.
En mode vue orthogonale frontale toujours (Numpad 1), déplacer la sphère au début de la courbe guide et faire derechef I pour insérer un autre Keyframe.
⚠️
Pour bien le faire, cacher le Glass Cylinder pour bien voir la courbe Goal Guide et déplacer la sphère de manière à ce qu’elle coïncide avec le début du guide. vous êtes bien au frame 429 n’est-ce pas! Le cas échéant, faire I pour insérer un keyframe de positionnement de la sphère.
N’oubliez de “unhide” le Glass Cylinder en ouvrant l’oeil à gauche de l’objet dans la section Outline.
La sphère devrait alors, au frame 430, commencer à suivre le guide!
Maintenant, on veut arrête le Goal au moment où la sphère commence à sortir du tube (frame 517).
Aller au frame 517. Avec la sphère sélectionnée, dans les propriétés Physics, section Strength de Goal, on doit keyframé à 0.5 les valeurs Min et Max afin qu’elle restent constante depuis le frame de départ (431).
Cliquez donc sur les petits points blancs à droite des champs Min et Max.
Au frame suivant (518), mettre les valeurs de Min et Max à 0 et les keyframer derechef.
C’est comme si on avait désactivé le “Goal”.
On a terminé, cliquer, dans la section “Cache”, sur le bouton “Back All Dynamics”.
Faire Play!
Profitons-en pour utiliser EEVEE, le rendu temps-réel de Blender à la place de Cylces. En particulier, on va créer un Glass Shader en EEVEE. Je ne sais pas encore si ce sera encore nécessaire avec la venue de EEVEE-Next (Blender 4.2), ce sera encore nécessaire puisque ce dernier aura un Ray-tracer.
Dans les propriétés Render, choisir EEVEE à la place de Cycles.
Activer Raytracing
Activer Motion Blur.
Dans la section Color Management, choisir le Look Very High Contrast.
Sélection Cylinder 1 et aller dans le Shading Editor.
Faire New. Nommer le Material Glass.
Dans les propriétés Material, aller dans la section Settings.
Activer le Backface Culling (l’occlusion des faces arrière). En infographie, l’occlusion des faces arrière détermine si un polygone est dessiné à l’écran ou pas. C’est une étape dans le pipeline graphique qui teste si les points du polygone apparaissent dans le sens horaire ou anti-horaire lorsqu’ils sont projetés sur l’écran. Si l’utilisateur a spécifié que les polygones face à la caméra ont un enroulement dans le sens horaire, mais que le polygone projeté sur l’écran a un enroulement dans le sens anti-horaire, alors il a été tourné pour faire face à l’opposé de la caméra et ne sera pas dessiné.
Le processus rend le rendu des objets plus rapide et plus efficace en réduisant le nombre de polygones que le programme doit dessiner. Par exemple, dans une scène de rue de ville, il n’est généralement pas nécessaire de dessiner les polygones sur les côtés des bâtiments qui sont tournés loin de la caméra ; ils sont complètement occultés par les côtés qui font face à la caméra.
En général, il peut être supposé que l’élimination des faces arrière ne produit aucun artefact visible dans une scène rendue, à la condition que la scène ne contienne que des maillages fermés et opaques. Dans les scènes contenant des polygones transparents, les polygones orientés vers l’arrière peuvent devenir visibles à travers le processus de composition alpha et c’est ce que nous allons faire en changeant le Blend Mode (voir plus bas).
Ici, à gauche le Backface Culling est désactivé, à droite il est activé. Notez que ça ne donne pas les résultats escomptés dans le cas d’objets concaves, ou avec des trous comme ici un crâne. Dans le cas de Blender, comme le Show Backface est activé, l’intérieur du crâne sera montré.
Changer le Blend Mode pour Alpha Blend, justement pour compenser le backface culling sur les objets transparents.
Activer Raytrace Refraction.
Bon, ça commence à donner du résultat, mais on peut fire mieux!
Dans le Shading Editor, ajouter un Transparent BSDF (⇧ A Shader → Transparent BSDF)
Ajouter un Mix Shader afin de mixer les deux shaders, le Principled BSDF et le Transparent.
Pour contrôler où aura lieu la transparence, on va utiliser un input de type Fresnel. ⇧ A → Input → Fresnel.
Un noeud Fresnel éclaire les bords d’une surface tout en gardant le milieu plus sombre. Voici par exemple une sphère avec du Fresnel appliqué:
Dans notre cas, on veut appliquer de la transparence au milieu du cylindre tout en gardant ses bords intact, i.e. l’effet du Glass Shader. On se débarrassera du drôle d’étirement de la transparence qu’on a en ce moment.
⚠️
Si vous voulez en savoir plus sur le chouette effet Fresnel (qu’on retrouve beaucoup en photographie): https://www.dorian-iten.com/fresnel/
- Changer l’IOR du noeud Fresnel à 1.45 (l’indice de réfraction de certains types de verres).
- Nous avons maintenant un shader satisfaisant:
- On peut maintenant réutiliser ce shader pour le Glass Cylinder et le Glass Tube et l’objet Box.
- Pour ce faire, sélectionner Les trois objets puis Cylinder 1 en dernier (important!), aller dans le menu Object → Link/Transfer Data → Link Materials. Le shortcut et ⌃ L (ou ⌘ L sur Mac).
- Amusez-vous à changer les materials des autres objets si vous le désirez.
- Aller au Frame 1 et sélectionner la caméra
Ajouter une contrainte de type “Copy Location” à la caméra.
Dans le menu Target, choisir la Soft Body Sphere et désactiver Y axis ainsi que X Axis. On veut que la caméra suive seulement l’axe des Z (la hauteur) de la sphère.
Activer Offset. Cela permettra de ramener la caméra à sa position d’origine (avant la contrainte)
- Par contre, ça ne fonctionne pas encore tout à fait car la caméra suit pour l’instant l’origine de la sphère et non pas sa géométrie (remember, it’s baked!).
- On va rajouter un Vertex Group.
- Sélectionner la sphère, aller en mode Vertex Edit Mode et créer un nouveau Vertex Group dans Object Data.
- Sélectionner tous les sommets de la géométrie de la sphère et cliquer sur Assign dans Object Data.
Revenir en Object Mode.
Sélectionner la caméra et dans ses paramètres Constraints, choisir le nouveau Vertex Group.
Au frame 1, Déplacer la caméra à l’endroit désiré. La tourner également selon l’angle de vue désiré.
Sélectionner la sphère, aller dans Physics, et dans la section Cache, cliquer sur Delete All Bakes puis sur Bake All Dynamics.
Faites Play.
Modifier les paramètres d’output pour générer une vidéo avec un frame rate de 30 fps.
Faire Render Animation!
Avec EEVEE, les rendus sont en quasi temps réel. Mais c’est quand même 600 frames. À disons 1 seconde par frame, ça va quand même prendre 10 minutes!
- Ajouter un nouvel élément au parcours (par exemple en enlevant le plan à la base et en modifiant le maillage de la boîte de réception de la balle pour qu’elle puisse continuer son parcours
- Ajouter un HDRI pour rendre le background plus intéressant
- Jouer avec les textures et couleurs.
- Une 2e balle?
Banque de cours - Animation en boucle chaîne de montage
Lien vers l'original# Animation en boucle: chaîne de montage
📌
Un énorme merci à Roman Klco de Polygon Runway pour son tuto et son aimable permission de s’en inspirer.
💡
D’après un tutoriel de Roman Klčo et son excellente chaîne Youtube Polygon Runway, avec son aimable permission
Créer un nouveau dossier dans lequel on ajoute un fichier .blend nommé “Chaine Montage.blend”.
Ajouter un Plane, passer en Vertex Edit Mode, ajouter un loop cut (^ R) au milieu du plan le long de l’axe des X
Sélectionner les deux sommets de droite (du côté de l’axe des Y positif) et les effacer (X puis Delete Vertices).
Revenir en mode Object, vous devriez avoir ceci, avec le milieu de l’arrête de droite coïncidant avec l’origine du monde, où se trouve également le curseur. Cela sera important lors de l’animation
Revenir en Vertex Edit Mode
Sélectionner les 4 sommets, Extrude (E) vers l’axe des Z négatifs (le bas).
Sélectionner tous les sommets puis faire ⇧ N pour recalculer les normales (on veut être certains qu’elles soient dans la bonne direction).
💡
Pourquoi on doit faire ça? Parce qu’on est parti d’un plan (donc une surface 2D sans épaisseur), et il se peut que la normale du plan, qui n’a pas d’épaisseur, soit dirigée dans le même sens que l’extrusion qu’on vient de faire. Le cas échéant, les normales risquent de pointer vers l’intérieur de l’objet et ce n’est pas ce qu’on veut.
Pour voir la direction des normales, assurez-vous d’être en Edit Mode puis ouvrir le menu “Mesh Edit Mode” qui se trouve à droite du menu “Overlays”. Activer Face Normals. Vous devriez voir des petits cheveux bleus qui font 90 degrés par rapport à chaque surface. Assurez-vous que les normales pointent vers l’extérieur de l’objet.
Revenir on Mode Object.
Ajouter un “Array Modifier” à l’objet.
Changer le Count à 5 et la direction à -Y, donc un facteur de -1 sur le Factor Y, et 0 pour X et Z
Ajouter un Bevel Modifier, changer Amount à 0.03 et Segments à 2.
Dans la section Shading, activer “Harden Normals”.
Cliquer droit sur l’objet et faire Shade Smooth.
Ajouter un nouveau Plane. En mode Vertex Edit, Faire un Scale down de manière à ce que ce plan soit à peu près les 2/3 en longueur par rapport au premier Plane.
Faire ⌃ ⇧ B pour faire un Bevel des Vertex, bouger la souris pour créer le bevel et ajuster le nombre de segments avec la roulette de la souris (5 ou 6 segments).
⚠️
Vous pouvez aussi ajuster le nombre de segments dans les paramètres de création
- Sélectionner tous les sommets, puis Extrude vers l’axe des Z positifs.
- I pour inset un petit peu, puis E pour un autre Extrude vers l’axe positif des Z, mais plus court celui-là. Ça devrait donner ceci:
- Ici je fais exprès de montrer les normales.
- Pour être sûr, sélectionner tous les sommets puis faire ⇧N pour recalculer les normales.
- Revenir en mode Object
- Sur cet objet, on va imprimer un logo.
- Sauvegarder le fichier
- Télécharger le fichier SVG du logo de Blender et le sauvegarder au même endroit que votre .blend:
https://drive.google.com/file/d/1xVHVgG_Vpo8wj4eIXx4ay-KOzsAACDO7/view?usp=sharing- Faire File → Import → Scalable Vector Graphics (.svg) et choisir le fichier svg que vous venez de télécharger
⚠️
Ne pas faire de drag and drop, ça ne donnera pas le même résultat (Blender le traitera comme un Grease Pencil Object plutôt qu’une série de courbes)
Le SVG sera importé comme une série de courbes (c’est vectoriel un svg, ça tombe bien 😊 )
Sélectionner la première courbe de la collection (Nommée Curve dans la collection Blender_logo_no_text.svg)
Zoomer sur le SVG avec Numpad .
Avec l’objet Curve toujours Sélectionné, l’effacer (X), nous n’en avons pas besoin.
Sélectionner Curve.001 et dans les propriétés de la courbe, assurez-vous que “Fill mode” est à none: on ne veut que le contour.
Faites la même chose pour Curve.002
Vous devriez avoir ceci maintenant.
Sélectionner les deux courbes (Curve.001 et Curve.002) et dans le menu Object, choisir Convert → Mesh.
⚠️
Assurez-vous que X-Ray est activé!
Passer en mode Edit Vertex, vous devriez avoir ceci:
Revenir en mode Object. Sélection Curve.002 et passer en mode Edit Vertex
Avec la touche Alt maintenue, sélectionner le cercle intérieur de Curve.002
⚠️
Ce n’est pas le très petit cercle, celui-là appartient à Curve.001!
Cela devrait sélectionner tout les sommets du cercle.
Faire P pour Separate, choisir Selection et faire Enter. Cela va séparer la sélection (le cercle) et le faire devenir son propre objet.
Dans l’outliner, vous allez voir un objet Curve.003
Revenir en mode Object.
On va maintenant réduire la géométrie sur chaque objet, il y en a trop.
Sélectionner Curve.001 et passer en mode Edit Vertex.
Sélectionner tous les sommets (vertices), puis faire Mesh → Merge → By Distance (M puis choisir “By Distance”) et choisir 0.001 dans les propriétés du merge en bas à gauche
Refaire la même chose pour Curve.002
Et la même chose pour Curve.003
Dans le cas de Curve.003, un petit bobo apparaît ici:
Il suffit de sélectionner les deux sommets en litige, celui du coin et celui du milieu:
Et faire un autre Merge By Distance, avec une distance cette fois-ci de 0.01m pour que le merge se fasse correctement.
Sélectionner Curve.002 (le cercle avec les 3 tentacules), passer en mode Edit Vertex
Sélectionner tous les sommets (Vertex) et appuyer sur F pour “Fill” et créer une Face.
Revenir en mode Object
On va maintenant créer un objet solide avec le cercle intermédiaire (Curve.003).
Sélectionner Curve.003 et passer en Vertex Edit Mode
Sélectionner tous les sommets et faire F pour créer une face.
Tout sélectionner Extrude (E) un peu vers le haut
Tout sélectionner puis ⇧ N pour recalculer les normales.
Aller en mode Face Edit. Passer en vue orthogonale frontale et déplacer ce disque vers l’axe des Z négatifs (G Z puis bouger la souris vers le bas) de manière à ce qu’il se trouve à cheval avec les autres courbes au milieu
Revenir en mode Object.
Avec Curve.002 sélectionné, ajouter un Boolean Modifier. Dans Object, sélection le disque (Curve.003).
Si vous voyez un beau cercle, c’est que l’opération Boolean Difference a fonctionné. Sinon, faite un Scale selon l’axe des Z du disque, il est peut-être trop étroit.
On peut “appliquer” le Boolean Modifier
On efface le disque, on en a plus besoin (sélectionner Curve.003 puis faire X).
Sélectionner le cercle intérieur maintenant (Curve.001), passer en mode Vertex Edit, tout sélectionner et faire F pour créer une face.
Revenir en mode Object.
Sélectionner Curve.001 et Curve.002 et faire ⌘ J (^ J sur Windows) pour faire un merge des deux maillages. Nous avons maintenant un seul objet nommé Curve.002. Le renommer à “Blender Logo”.
⚠️
On aurait pu trouver ou créer un mesh directement plutôt que de passer par un svg. Mais voilà, maintenant vous savez quoi faire avec un SVG!
On peut également générer des SVG avec Blender, pour ce faire, activer le Addon Render: Freestyle SVG Exporter. En l’activant, une section “SVG Export” va apparaître dans les propriétés Render.
Enfin, on est prêt à donner une profondeur au logo.
Sélection Blender Logo, passer en mode Vertex Edit. Tout sélectionner.
Extrude (E) vers l’axe des Z positifs.
Tout sélectionner puis ⇧ N pour recalculer les normales.
Refaire apparaître les deux objets cachés (Plane et Plane.001).
Passer en vue orthogonale d’élévation (Numpad 7) et sélectionner Blender Logo.
Passer en mode Wireframe et déplacer + Scale du logo de manière à ce qu’il soit positionné ainsi:
⚠️
Notez bien la position du curseur dans le trou vide du logo.
⚠️
Pourquoi en déplace en mode Edit au lieu de mode Object? Ça permet de déplacer le mesh par rapport à l’origine, plutôt que de déplacer le mesh ET son origine!
Passer en vue orthogonale frontale (Numpad 1) et déplacer le logo (G Z) de manière à ce qu’il dépasse un peu le dessus de l’objet Plane.001.
Revenir en vue perspective, passer en mode Solid View (Z → Solid).
Sélectionner Plane.001, puis Shift-Select l’objet Plane. Dans le modifiers, choisir le menu du Bevel Modifier et faire Copy to Selected.
⚠️
Il est important de noter que l’on transfert ou copie le modifier du dernier objet sélectionné. C’est chouette de pouvoir ainsi transférer des modifiers d’un objet à l’autre.
Sélectionner Plane.001 et cliquer-droit pour faire Shade Smooth.
Dans le Bevel Modifier, baisser le “Amount” à 0.02
Dans Edit → Preferences, activer l’Addon “Object: Bool Tool” et s’assurer de faire save preferences si l’Autosave Preferences n’est pas activé par défaut (le hamburger menu en bas à gauche de la fenêtre des préférences)
Sélectionner le logo Blender, puis Shift-Select Plane.001 et faire ^ Numpad - (Control et le “-” dans le numpad)
Cela ajoutera un boolean modifier au Plane.001 avec une opération de différence Booléenne du Logo
⚠️
L’avantage de cette méthode via le Bool Tool (plutôt que de rajouter un Boolean Modifier manuellement) c’est que l’objet opérateur Booléen (le logo ici) est automatiquement caché après l’opération booléenne. Vous constaterez que le logo est maintenant exclu du Render (le pictogramme Caméra est désactivé dans l’outliner) et Blender a également modifié la propriété “Display as” dans la section “Viewport Display” des propriétés “Object” du logo pour qu’elle ait la valeur “Bounds”.
Ok, sélectionner le logo, puis Plane.001, faire ^ P et choisir “Object” pour créer une hiérarchie parent-enfant entre le logo et sa plateforme.
Vous devriez voir que Plane.001 a maintenant pour enfant Blender Logo
Assurons-nous mainenant que Plane.001 est un enfant du Plane (le convoyeur).
Sélectionner Plane.001 puis Shift-Select de Plane et faire encore une fois ^ P → Object.
Maintenant le convoyeur (Plane) a pour enfant Plane.001 qui a pour enfant le logo. Ainsi, si le convoyeur bouge, le reste va bouger avec.
⚠️
Si vous voulez un plus beau rendu (avec les occlusions) en mode Solid, activer Cavity
- Sélectionner le logo Blender et clique-droit puis Shade Smooth
- Ça va avoir l’air tout bizarre. Sélection Plane.001, ajouter un “Smooth by Angle” modifier, et changer l’angle à 45 degrés. Ça va régler le problème.
- Ça avance, ça avance!
- File → Save!
- Ajouter un Plane.
- Passer en mode Vertex Edit
- Tout sélectionner et tourner de 90 degrés par rapport à l’axe des X (R X 90 ↩)
- Scale de 1.1 (s 1.1 ↩)
- Sélectionner les deux sommets (vertices) du haut et les monter de 1 m (G Z 1 ↩)
- Avec les deux sommets du haut sélectionnés, ⌃ ⇧ B pour un bevel, déplacer la souris pour créer le bevel et utiliser la roulette de la souris pour créer environ 6 à 7 segments.
- Passer en mode Edges, sélectionner l’arrête du bas et l’effacer (X → delete edges)
- La Face va automatiquement disparaître
- Passer en mode Vertices et tout sélectionner
- E pour extrude, Y pour contraindre le long de l’axe des Y et déplacer la souris vers l’axe des Y négatifs
- Sélectionner tous les points, puis faire ⌥ E (Alt-E) et choisir extrude along normals
- Appuyer sur S pour faire un “Even Scaling” et déplacer la souris de manière à faire un extrude vers l’extérieur de l’arche puis appuyer sur enter quand on est satisfait de l’épaisseur
- Tout sélectionner à nouveau et faire ⇧ N pour recalculer les normales.
- Revenir en mode objet
- Ajouter un Cylinder.
- Scale de 0.6 (S 0.6 ↩)
- Puis scale selon l’axe des Z de 0.7 (S Z 0.7 ↩)
- Déplacer le cylindre vers le haut de manière à ce que le sommet de l’arche passe au travers son milieu (G Z 2.2 ↩ à peu près). G Z et déplacer avec la souris, c’est plus facile et ça n’a pas besoin d’être très précis.
- Le cylindre n’est pas centré selon l’axe des Y par rapport à l’arche; pas grave, on règlera ça plus tard
- ⇧ S et choisir “Snap Cursor to Selected” pour déplacer le curseur à l’origine du cylindre. Cela fera en sorte que le prochain objet qu’on va créer se positionné par rapport au curseur ainsi déplacé.
- Créer un nouveau cylinder
- Passer en mode Edit puis faire un Scale selon les axes X et Y mais pas Z de 0.2 (S ⇧ Z 0.2 ↩)
- Le cylindre a été crée à l’origine du premier puisqu’on a déplacé le curseur. Chouette.
- Toujours en mode Edit, appuyer sur 3 pour passer en mode Face Select (1 pour Vertex Select, 2 pour Edge Select et 3 pour Face Select).
- Sélectionner la face du haut et la déplacer vers le haut d’environ 1.5 m (G Z 1.5 ↩)
- Maintenant sélectionner la face du bas et faire ⇧ S et choisir “Snap Cursor to Selected” pour amener le curseur au centre de cette face du bas du cylindre.
- Revenir en mode Object.
- Créer un Plane (il sera crée au niveau du curseur).
- Passer en mode vue orthogonale d’élévation (Numpad 7) et en mode Wireframe.
- Scale d’environ 0.8 (S 0.8 ↩) du Plane, on veut qu’il couvre un peu plus que la surface qui contient le logo.
- Passer en mode Vertex Edit
- ⌃ ⇧ B pour créer un Bevel similaire à la plateforme qui contient le logo
- Revenir en vue perspective, faire un Extrude (E) vers l’axe des Z négatifs d’environ 0.27 (déplacer la souris vers le bas après avoir appuyer sur E puis ↩)
- Inset (I) vers l’intérieur d’environ le quart, puis E (Extrude) vers l’intérieur d’environ le cinquième.
- Tout sélectionner et faire ⇧ N pour recalculer les normales.
- Revenir en mode objet.
- Vous devriez avoir les objets suivants maintenant:
- Ramener le curseur à l’origine du monde: ⇧ S → “Cursor to World Origin”
- En mode vue orthogonale de côté (Numpad 3), sélectionner l’arche et la déplacer selon l’axe des Y (G Y) de manière à ce qu’elle soit centrée par rapport à la presse.
- Créer un Empty de type axes simples (⇧ A → Empty → Plain Axes). l’empty sera créé à l’origine, là où se trouve maintenant le curseur.
- Sélectionner le convoyeur (Plane), puis l’empty et faire ^ P → Object pour créer une hiérarchie parent-enfant (Le convoyeur doit-être l’enfant de l’empty).
- Sélectionner tous les objets nouvellement crées (donc pas l’empty, ni le convoyeur (Plane), ni l’objet qui contient le logo, mais tout le reste):
- Shift-Select le convoyeur et dans les Modifiers, aller vers le menu déroulant du Bevel Modifier et faire “Copy to selected”.
- Ensuite faites la même chose avec Smooth by Angle
- Sélectionner Le long cylindre (Cylinder.002),puis Shift-Select de la partie cuboïde de la presse (Plane.003), ^ P → Object pour que le cylindre soit un enfant de la partie platte de la presse.
- Maintenant, si on bouge l’empty, le convoyeur et la plateforme contenant le logo vont bouger et si l’on bouge la partie platte de la presse, le cylindre de la presse va bouger avec également.
Sélectionner le convoyeur (Plane), puis Shift-Select de son enfant Plane.001 et encore Shift-Select de l’enfant de ce dernier (le rectangªle noir du Blender Logo). C’est plus facile si vous le faite dans l’outliner
On va dupliquer tout ce beau monde-là.
Faire ⌥ D (Alt-D pour Duplicate) puis Y puis 5 (pour 5 m). Cela va créer tout les enfants du empty en les déplaçant de 5 m sur l’axe des Y.
⚠️
Ce nouveau bout de convoyeur sera parenté à l’empty qui se trouve au centre du monde puisqu’il est une duplication de l’original. C’est pour ça qu’il était important de sélectionner tous les enfants de l’Empty, mais pas l’empty car on ne veut pas dupliquer l’empty.
- Faire encore une fois Alt-D, Y et -10 ↩ cette fois-ci.
- Puis encore une fois Alt-D et Y et -5 ↩
- si vous déplacez l’empty, les 4 convoyeurs se déplaceront.
- Sélectionner les 2 dernières plateformes qui contiennent le logo, et dans le Boolean Modifier, désactiver Viewport et Render.
- Ajouter un Plane
- Passer en mode Edit Vertex.
- Scale d’un facteur de 42 (S 42 ↩)
- Déplacer le plan vers le bas de manière à ce qu’il coïncide avec le bas des colones de l’arche (G Z, bouger la souris puis ↩)
- Revenir en mode Objet.
- Créer un autre Plane.
- Tourner selon l’axe des Y de 90 degrés.
- Scale selon l’axe des Y de 42 (S Y 42 ↩)
- Scale selon l’axe des Z de 4 (S Z 4 ↩)
- Déplacer de -5 M selon l’axe des X (G X -5 ↩)
- Ce plan servira d’écran devant la caméra
- Déplacez-vous dans le viewport de manière à obtenir la vue suivante. Puis ajouter une caméra et faire ⌥ ^ Numpad 0 (Alt-Ctrl Numpad 0) pour positionner la caméra selon le viewport.
- Ajuster la distance focal de la caméra ou la distance/rotation de celle-ci par rapport à la scène pour obtenir la vue désirée:
![]()
- Créer un empty de type sphere
- Sélectionner la caméra et dans la section Depth of Foield, changer le FStop pour 0.3 et Focus Object, choisir Empty.001
- Mettre le Endframe dans le timeline à 40
- Aller au Frame 1.
- Sélectionner l’Empty.
- Activer le N Menu, et dans l’onglet Item, cliquer-droit sur le champ Y de Location, et choisir “Insert Keyframe”.
- Aller au Frame 30. Donner une valeur de 5 à Location Y et cliquer-droit derechef sur le champ Y pour insérer un autre Keyframe.
- Sélectionner les keyframes du frame 30, faire Shift-D pour les dupliquer et les déplacer avec la souris au frame 40
- Dans le Timeline, faire A pour tout sélectionner, ensuite cliquer droit et choisir Interpolation Mode → Bézier
- Cliquer droit et choisir Easing Mode → Automatic
- Aller au frame 25 et Sélectionner la partie platte de la presse.
- Au frame 25, faire I pour insérer un keyframe.
- Au frame 40, déplacer la presse de manière à ce qu’elle appuie sur la plateforme du logo et faire I encore une fois pour insérer un autre Keyframe.
- Changer le End frame à 50 en fait (40 ce n’est pas assez long)
- Sélectionner les keyframes au frame 25, faire Shift-D pour les dupliquer et les déplacer avec la souris jusqu’au frame 50, de manière à ce que la presse revienne à sa position originale.
- Si vous faites Play, vous verrez que la presse a un mouvement trop lent, on veut un impact plus important.
- Passer au Graph Editor et isoler Z location seulement (fermer les yeux de toutes les autres variables).
- Tout sélectionner avec A puis appuyer sur le dot (.) du Numpad. Cela fera un focus sur la courbe.
- Vous pouvez également zoomer en appuyant sur la touche ^ (Ctrl) et en bougeant la souris avec le bouton du milieu appuyé.
- Passer à Bézier comme mode d’interpolation (Right-Click, Interpolation Mode → Bézier).
- Sélectionner le point du milieu au Frame 40 (celui le plus bas sur la courbe), Faire V et choisir Free pour libérer les points de contrôle.
- Rapprocher les deux points de contrôle de ce keyframe de manière à obtenir un V (un peu comme pour la balle rebondissante):
- Faire Play, vous verrez que le mouvement est plus sec.
- Sélectionner, au frame 30, la plateforme du logo qui se trouve juste en-dessous de la presse.
- Retourner au frame 1.
- Dans les Modifiers, cliquer sur Viewport et Render du boolean modifier désacactiver le modifier.
- Amener la souris au-dessus du pictogramme à droite Du Boolean Modifier qui indique Display Viewport et faire I pour insérer un keyframe.
- Déplacer la souris sur le pictogramme du Render et faire la même chose pour insérer un keyframe là-aussi. On est en train de dire qu’au frame 1, ne pas monter le logo ni dans le viewport, ni dans le render.
- Aller au frame 40, activer BTool_Blender Logo autant pour le Viewport que pour le Render et ajouter des keyframes respectifs comme tout à l’heure au frame 1.
- Faire Play, on a terminé pour l’animation!
Sélectionner la plateforme platte de la presse (Plane.003)
Créer un nouveau Material
Metallic à 1 et roughness à 0.3
Créer un autre Material (+ pour ajouter une nouveau Slot puis cliquer sur New Material.
Changer le nom du Material à Flash
Changer Principled BSDF à Emission.
Changer Strength à 20
Passer en mode Face Edit et sélectionner la face intérieure du bas de la plateforme platte de la presse.
Dans Material, choisir Light et cliquer sur “Assign”.
Revenir en mode Object.
Ajouter une Area Light.
Scale 2 (S 2).
La déplacer au-dessus de la scène le long de l’axe des Z (G Z bouger la souris vers le haut puis ↩)
La déplace le long de l’axe des Y négatifs de manière à ce qu’elle éclaire la scène par la gauche (G Y bouger la souris vers la gauche puis ↩).
Dans les propriétés Light, lui donner une puissance de 500 W et une couleur bleue froide.
Sélectionner la plateforme plate de la presse et dans Material, choisir une couleur un peu orange brûlé (oui je sais, encore les couleurs complémentaires bleu et orange 😇 ) pour le Material intitulé “Flash”.
Sélectionner l’Area light. Faire ⇧ D pour la dupliquer et la déplacer vers la droite, un peu plus basse
Réduire sa taille de 50% (S 0.5 ↩)
Réduire l’intensité à 150 W
Changer sa couleur pour quelque chose de rouge.
Assigner Material à tous les autres objets de la scène. Pour ce faire, sélectionner un objet et dans les propriétés Material, choisir le drop-down juste à gauche du bouton New Material et choisir “Material” (Ne pas oublier les deux plans).
Vous noterez que comme le convoyeur et la plateforme du logo ne sont q’une instance avec un array modifier, le modifier sur un seul objet le fera sur tous les objets de l’array.
Sélectionner la 2e Area Light (Area.001), déplacer la tête de lecture au Frame 1
Insérer un keyframe pour le wattage (150 W).
Sélectionner le keyframe, faire ⇧ D et le déplacer au frame 50.
Au frame 25, changer la puissance à 0 et insérer un keyframe.
Passer au Graph Editor.
Sélectionner tous les 3 keyframes de l’animation de la puissance de la lampe.
Changer l’interpolation à Bézier
Rendre plus sharp la descente à 0 W au keyframe 1 et la remontée à 150 W au frame 50 en bougeant les points de contrôle du keyframe 1 et du keyframe 50
⚠️
Sélectionner les keyframes avec A et faire Numpad . pour zoomer sur la courbe correctement (autrement, vous risquez de vous battre longtemps à tenter de bien voir la courbe puisque l’axe des Z va de 0 à 150 W.
- Hmm, je donnerai une couleur plus rouge à cette area light puisqu’elle donne un sentiment d’alarme au moment de la fonte du logo.
- Faire Shift-clique-droit et déplacer le curseur en-dessous de l’arche mais en dehors du cadre de la caméra.
- Ajouter un “Point light” de 50W avec une couleur un peu jaunâtre. La lumière sera créée à l’endroit où se trouve le curseur.
- Remettre le curseur à l’origine (⇧ S → Cursor to World Origin).
- Créer un nouvel Empty, cette fois-ci d’apparence Sphere.
- Sélectionner la caméra
- Activer le Depth of Field.
- Dans Focus Object, choisir cet empty.
- Régler le F-stop à quelque chose de très artificiel, genre 0.3
- À vous de jouer! Modifier les paramètres du Compositing, ceux du HDRI (peut-être changer de HDRI?), ajouter des décors et objets, etc. En fait, commencez le devoir!
- Chaîne de montage, animation en boucle
Critères:
- [ ] Remettre l’animation finale sur votre Drive.
- [ ] Utilisation d’au moins une des simulations qu’on a apprises ou une qu’on n’a pas vue comme Particles, Rigid Body, etc. Je vous conseille le coussin gonflable, une simulation de drapeau, un corps souple, de la fumée ou du feu. Évitez les fluides liquides, c’est compliqué.
- [ ] Changer le logo Blender pour un mesh qui vous représente (essayer de faire un Mesh, pas un SVG)
- [ ] Ajouter des éléments de décor (engrenage pour le convoyeur? Éléments de décor sur le mur et le plancher? Changer les matériaux, etc.)
- [ ] Montage vidéo et sonore.
- [ ] Surprenez-moi, soyez créatives et créatifs!Blender - Geo Nodes - Intro - Légo
Geo Nodes - Intro - Légo
Lien vers l'original# Cours 10 (4h) - Introduction aux Simulation Nodes
- TBD
























































































































































































































































