Multiplier un objet le long d'une courbe dans Blender
Je veux mettre des cubes sur une courbe de Bézier, comme une sorte de collier de perles. Dans Inkscape, c'est avec l'effet de chemin Motif le long d'un chemin (Pattern Along Path). Dans Blender, avec une dimension en plus, c'est évidemment plus compliqué :
-
Je pars d'un cube et une courbe qui ont leur origine au même point. C'est important parce que Blender va utiliser l'écart entre leurs origines pour calculer l'écart entre le début de la courbe et le premier cube sur la courbe :
-
Je sélectionne le cube et j'ajoute un modificateur
Array
, je règle le nombre de multiples (Count), et l'écartement relatif (Relative Offset). Puis j'ajoute un modificateurCurve
et je choisis la courbe :
-
Si maintenant je veux que la taille des cubes varie le long de la courbe, pour que ça ressemble plus à une colonne vertébrale qu'à un collier de perles, j'ajoute un empty à l'endroit de l'origine du cube (et de la courbe) :
-
Puis je sélectionne les cubes et je vais dans le modificateur Array. Là, je décoche Relative Offset, je coche Object Offset, et je choisis l'empty :
-
Je ne vois encore rien, pour l'instant, mais je vais déplacer l'empty pour faire apparaître les cubes :
-
Ici, j'ai déplacé l'empty sur l'axe des x pour retrouver à peu près ce que j'avais précédemment :
-
Maintenant, je peux redimensionner l'empty sur n'importe quel axe, ou les 3, pour faire varier la taille des cubes :
-
Ici, j'ai ajouté des cubes dans le paramètre Count du modificateur Array :
-
Ici, je réduis la taille de l'empty sur l'axe des z :
-
C'est différent de régler le radius sur un point de la courbe de Bézier en mode Edit, qui taille les cubes :
-
Ici, je tourne l'empty sur l'axe des x pour vriller la chaine de cubes :
-
C'est différent de régler le tilt sur un point de la courbe de Bézier en mode Edit, qui tord les cubes :
-
Si je veux éviter les déformations sur les cubes (visibles sur les deux les plus à gauche), ça se complique :
-
J'ai trouvé cette recette sur Graphics and Programming. Elle est valable pour Blender 2.8 et 2.9, pas pour les versions antérieures. Il faut repartir du début avec un plan à la place du cube :
-
Appliquer au plan les modificateurs Array et Curve, comme pour le cube :
-
Faire du cube un fils du plan Ctrl P
Parent to Object
:
-
Sélectionner seulement le plan et aller dans son onglet de propriétés, section
Instancing
et cocherFaces
puis décocherRender
(et éventuellement Viewport mais ça devient impossible de sélectionner les cubes autrement que par le plan dans l'outliner) :
Note : à ce stade, pour cacher le cube d'origine dans la vue, je ne sais pas comment faire à part le cacher (H). En tout cas, il n'apparaît pas dans le rendu. -
Et si je veux rendre chaque cube indépendant, je sélectionne les cubes et je fais Ctrl A
Make Instaces Real
:
-
Les cubes ont maintenant chacun une existence réelle, une origine propre, sont listés dans l'outliner et peuvent être manipulés indépendamment :
-
Mais si j'en modifie un (Tab), ils changent tous de forme parce qu'ils sont encore des instances du cube d'origine :
-
Si je veux en modifier un seul, je dois le rendre indépendant par le menu
Object
>Relations
>Make Single User
>Object & Data
(ou par F3, chercher "single"). Maintenant, il est totalement indépendant :
-
Enfin, si je veux que les cubes ne tournent pas pour suivre la courbe, il faut que j'utilise un système de particules ou, depuis Blender 2.92, les Geometry Nodes. Je repars d'une courbe avec la résolution correspondant au nombre de cubes que je veux - 1, donc ici 4 :
-
Je convertis ma courbe en mesh par clic droit,
Convert to Mesh
et, en mode édition, je vois bien que j'ai 5 points :
-
Je lui ajoute un système de particules avec les paramètres suivants :
- Type : Emitter
- Emission > Number : 5, section Source, Emit From : Vertices, décocher Random Order
- Rotation > Orientation Axis : None
- Render > Render as : Object, Scale : 1, section Object : choisir le cube, section Extra : cocher Unborn
Résultat, après avoir arrangé un peu les points de la courbe en mode édition :
-
Depuis Blender 2.9, avec les Geometry Nodes à la place d'un système de particules :
- Cliquer sur l'onglet du workspace Geometry Nodes
- Sélectionner la courbe de Bézier transformée en mesh
- Dans la partie du bas de l'écran, l'éditeur de Geometry Nodes, cliquer sur + New
- Ajouter entre les nœuds Group Input et Group Ouput un nœud Instance on Points
- Ajouter un nœud Object Info, Sélectionner l'objet Cube, et relier la sortie Geometry de ce nœud à l'entrée Instance du nœud précédent
- Pour éviter que les cubes soient énormes et se chevauchent, dans le nœud Instance on Points, entrer une valeur de Scale, par exemple 0.15
- Cacher le cube instancié et voilà le résultat
Ça me semble plus facile que le système de particules, mais c'est subjectif.