Dans ce tutoriel, nous allons voir comment remplir un conteneur avec des objets en utilisant la simulation Rigid Body de Blender.
La version vidéo de ce tutoriel n’est actuellement pas disponible dans cette langue.
Transcription de la vidéo
Bonjour à tous.
Dans ce tutoriel, nous allons voir comment remplir un conteneur avec des objets en utilisant la simulation Rigid Body de Blender.
Je réalise ce tutoriel avec Blender 3.3 et, pour montrer un exemple pratique, j’utiliserai l’un de mes assets appelé "Pharma capsule pills and bottle". Cela dit, il n’est pas nécessaire de l’avoir, car vous pouvez suivre et apprendre même sans ce modèle spécifique.
L’important ici est de comprendre la technique, qui peut être utile pour placer de nombreux objets de manière aléatoire mais crédible, non seulement à l’intérieur de conteneurs, mais aussi sur des surfaces. Les principes sont les mêmes et vous pouvez les appliquer à des pilules, des bonbons, des pièces d’or ou tout autre type d’objet.
Le modèle 3D que j’utilise est en réalité composé de plusieurs objets liés entre eux.
Nous n’avons pas besoin du couvercle, nous pouvons donc le masquer ou le supprimer, comme je le fais ici.

Nous avons trois objets : le conteneur, l’étiquette et un objet qui représente toutes les pilules, lesquelles ont été fusionnées en un seul objet. Nous pouvons les examiner de plus près en masquant temporairement le conteneur et l’étiquette.

Pour créer la simulation, nous devons isoler une pilule et lui attribuer un composant physique Rigid Body, puis dupliquer cette pilule prototype et lancer la simulation de la chute.
Avec l’objet Pills sélectionné, je passe en Edit mode, puis je sélectionne une pilule en plaçant le curseur de la souris sur un vertex d’une pilule et en appuyant sur L, c’est-à-dire "Linked", afin de sélectionner tous les éléments connectés à celui qui se trouve près du curseur.

Ensuite, j’inverse la sélection avec CTRL+I et je supprime toutes les autres pilules avec X, puis Vertices.

De retour en Object mode, je remarque que l’Origin de l’objet "Pills" n’est pas positionnée au centre de la seule pilule restante. Je corrige cela immédiatement avec un clic droit, puis "Set Origin" et "Origin to Geometry".

Je m’assure également que les transformations d’échelle sont appliquées. C’est facile à vérifier, car les valeurs Scale XYZ de l’objet dans le panneau Transform sont toutes réglées sur 1.
Si ce n’était pas le cas, il faudrait les appliquer avec CTRL+A et "Apply Scale".
Je rends maintenant le conteneur à nouveau visible, car je veux vérifier que la pilule est positionnée de manière à pouvoir passer par l’ouverture du conteneur. Je vais essayer de faire tomber les pilules à l’intérieur depuis le dessus.
En effet, dans cette position, la pilule ne peut pas tomber à l’intérieur du conteneur. Je la déplace donc manuellement afin que, dans la vue de dessus, elle se trouve à l’intérieur de l’ouverture.

La ligne pointillée qui relie la pilule au conteneur indique que la pilule est un enfant du conteneur. Cela peut poser problème pour les copies de la pilule et pour la simulation physique, je dissocie donc les deux objets tout en conservant la position et les autres caractéristiques de la pilule. Pour cela, je sélectionne la pilule, j’appuie sur ALT+P et je choisis "Clear and keep transformation" dans le menu "Clear Parent".

La pilule est maintenant un objet séparé.
Avant de créer les copies, je dois attribuer à la pilule un composant de simulation Rigid Body, afin qu’il soit déjà présent dans les copies que je créerai ensuite.

Pour ajouter le Rigid Body, je clique simplement sur "Rigid Body" dans le panneau Physics Properties, comme je viens de le montrer.
Le Rigid Body nouvellement créé est de type Active par défaut, ce qui est correct, car l’objet doit réagir à la gravité.
Pour observer la simulation physique à ce stade, nous réglons l’image d’animation sur 1 dans la Timeline et nous appuyons sur Play. La pilule tombe et traverse le conteneur, car celui-ci ne fait pas encore partie de la simulation physique de la scène.
Pour que le conteneur retienne la pilule, nous devons lui attribuer un composant Rigid Body, comme nous l’avons fait pour la pilule, mais cette fois nous devons immédiatement changer son type en Passive, car il ne doit pas tomber dans le vide, mais seulement interagir avec les autres objets.
Pour lancer la simulation physique avec les modifications que nous venons d’effectuer, nous devons revenir à la première image de l’animation dans la Timeline et cliquer à nouveau sur le bouton Play.
Nous remarquons immédiatement que la pilule tombe et interagit avec le conteneur, mais d’une manière inattendue : elle reste bloquée sur l’ouverture, suspendue dans le vide, comme si l’ouverture était fermée.

Cela se produit parce que la forme utilisée par Blender pour calculer les collisions du conteneur dans le panneau Rigid Body est celle par défaut, à savoir "Convex Hull", une boîte fermée utilisée pour simplifier les calculs du moteur de simulation physique.

Pour résoudre ce problème, je modifie la valeur du paramètre Shape en passant de "Convex Hull" à "Mesh". Blender va ainsi approximer la forme des collisions à la forme réelle du conteneur.
Comme vous pouvez l’imaginer, ce mode est assez gourmand en ressources et doit être utilisé avec modération. Dans ce cas précis, la scène n’est pas très complexe, donc cela ne pose pas de problème, mais dans d’autres situations, il peut être nécessaire d’évaluer l’utilisation des autres options disponibles dans le menu Shape du Rigid Body.
En ce qui concerne la pilule, vous pouvez par exemple choisir la forme Capsule, qui l’approxime très bien. Quoi qu’il en soit, ici je laisse l’option par défaut, qui est Convex Hull.
Revenons à la première image de la Timeline, cliquons sur Play et observons le résultat. Cette fois, la pilule tombe à l’intérieur du conteneur et rebondit une ou deux fois sur le fond avant de s’arrêter.

Notez que la simulation commence à ralentir lorsque la pilule touche le fond du conteneur. Cela est dû au fait que Blender est en train de calculer les collisions.
Lorsque nous ajouterons les autres pilules, la simulation sera beaucoup plus lente, car il y aura évidemment davantage de calculs à effectuer.
Revenons à la première image de la simulation.
Nous voulons obtenir une série de pilules empilées les unes sur les autres, à laisser tomber à l’intérieur du conteneur, en laissant Blender se charger de placer toutes les pilules dans leur position finale après avoir calculé les collisions avec les parois du conteneur et entre les pilules.
Obtenir les différentes copies de la pilule est en réalité assez simple. Il suffit d’ajouter un modificateur Array à la pilule, en définissant le décalage relatif à 0 pour les axes X et Y, et en le réglant sur 2 pour l’axe Z relatif.
Je n’ai aucune idée du nombre de pilules pouvant tenir dans le conteneur, car je ne les ai pas comptées au début de la vidéo, donc je vais essayer avec 40 pilules, en saisissant ce nombre dans le paramètre Count du modificateur Array.

Nous ne pouvons pas appliquer la simulation maintenant, car il s’agit encore d’un modificateur qui n’a pas été appliqué. Toutes les pilules sont donc encore des instances et non des objets individuels.

J’applique donc le modificateur en cliquant sur Apply dans son panneau.
Cependant, les pilules font toujours partie d’un seul objet. Ce sont des géométries qu’il faut rendre indépendantes.
Pour cela, il suffit de passer en Edit Mode, de sélectionner toutes les géométries, d’appuyer sur P, puis de choisir "By loose parts" dans le menu Separate qui apparaît à l’écran.

De cette manière, comme l’indique l’info-bulle, nous obtenons un objet pour chaque "island", c’est-à-dire pour chaque géométrie séparée.
Revenons en Object mode et constatons que toutes les nouvelles pilules sont bien des objets distincts, comme on peut aussi le voir dans l’Outliner.
Tous ces objets possèdent le composant Rigid Body configuré exactement comme celui de la première pilule, qui a servi de "prototype" pour toutes les autres.

Cependant, nous pouvons également constater que l’Origin de chaque copie se trouve toujours à l’emplacement de l’Origin de la première pilule.
Ce problème se résout très facilement. Nous sélectionnons l’une des copies afin qu’elle devienne l’objet actif, puis nous sélectionnons toutes les autres copies. Pour cela, j’utilise la touche B et la souris. Ensuite, nous faisons un clic droit sur la sélection et nous choisissons "Set Origin - Origin to Geometry" dans le menu "Object Context" qui apparaît à l’écran.

À présent, toutes les pilules sont des objets séparés, avec des Origins correctement définies, et elles disposent toutes d’un composant Rigid Body correctement configuré.
Nous pouvons alors revenir à la première image de la Timeline et lancer la simulation en cliquant sur le bouton Play.
Dans ce cas précis, la simulation va prendre plusieurs minutes.

En effet, peut-être que 40 pilules étaient trop peu nombreuses pour ce conteneur.
Quoi qu’il en soit, nous pouvons observer la disposition des pilules en interrompant la lecture de l’animation à différents moments.
Allons à la dernière image de l’animation et masquons temporairement le conteneur et l’étiquette. Les pilules se trouvent dans une position de repos crédible, sans espaces vides ni intersections, ce qui signifie que les images de l’animation sont suffisantes pour obtenir un bon résultat.

L’animation est intéressante, mais le tutoriel n’est pas encore terminé. Si nous voulions exporter le résultat de cette simulation physique, avec les pilules disposées à l’intérieur du conteneur comme elles le sont à la dernière image de l’animation, nous devrions rendre la simulation physique permanente.
Il ne faut absolument pas supprimer le composant Rigid Body depuis l’onglet Physics des pilules, ni fusionner les pilules entre elles ou avec le conteneur. Ces opérations nous feraient perdre la simulation physique et nous obligeraient à recommencer depuis le début.
À la place, nous devons nous positionner sur l’image que nous voulons rendre définitive, par exemple la dernière, puis sélectionner une pilule afin d’avoir au moins un objet actif dans la sélection, et ensuite sélectionner toutes les pilules. Pour effectuer cette sélection, nous pouvons utiliser la touche B et la souris.

Avec toutes les pilules sélectionnées, dont l’une est active, nous devons rechercher "Apply Transformation" dans la barre de recherche de Blender, que je peux ouvrir avec la barre d’espace dans mon cas, puis choisir l’option située dans la section Rigid Body, car nous voulons appliquer les transformations du Rigid Body.

Ce n’est pas encore terminé. Nous devons rouvrir la barre de recherche et commencer à taper "Remove Rigid Body", car nous voulons maintenant supprimer le composant Rigid Body de toutes les pilules sélectionnées.
Nous devons choisir l’opération Object - Rigid Body - Remove.
La simulation est désormais permanente. En nous déplaçant entre les différentes images de la Timeline, nous pouvons constater que les pilules ne bougent plus et qu’elles n’ont plus de composant physique Rigid Body.

À présent, cet objet peut être exporté pour être utilisé dans d’autres scènes.
Les pilules sont des meshes individuels, chacune avec une Origin placée au centre de sa géométrie. Il vous appartient donc de décider si vous souhaitez les laisser telles quelles, les regrouper, les parenter ou même les fusionner. Choisissez en fonction de vos besoins.
C’est tout pour ce tutoriel. À très bientôt.