Addon Blender : "Animation Joiner"

alt

Fusionnez-les tous !

Aujourd'hui est un grand jour pour moi, car je met en ligne mon premier Addon pour Blender ! En fait, il ne s’agit pas vraiment de mon premier Addon ... mais du premier que je rend public.

Je suis donc très fier de vous présenter Animation Joiner. Je l'ai créé avec l'animation dynamique en tête, mais je l'ai finalement trouvé aussi utile pour l'animation de personnage. Mon but était de fusionner plusieurs objets animés en un seul objet, animé par un modificateur MeshCache et un fichier PC2.

Pourquoi un fichier PC2 ?

Le PC2 est un fichier de cache de type binaire, largement utilisé en production. Il peut nativement être lu dans 3DSMax et Blender, mais peut également être utilisé dans Maya, Lightwave, Houdini, et bien d'autres. Blender ne disposant pas pour l'instant du support de Alembic, le PC2 est pour moi le meilleur fichier d'échange d'objets animés entre applications 3D.

Mais quand j'ai écrit cet addon, je ne pensais pas particulièrement au format d'échange. Je pensais à la simulation dynamique et plus précisément aux Rigid Bodies. Je travail beaucoup avec les Rigid Bodies dans Blender. Et la partie la plus difficile est au final la gestion des fichiers de cache, notamment quand vous devez gérer des milliers de débris. J'ai rêvé d'un système où il serait possible de gérer tout ces débris comme si il s'agissait d'un seul et même objet. C'est le but de mon addon.

Réduire la complexité de la scène

Sélectionnez vos débris, réglez le chemin vers lequel le fichier PC2 sera enregistré, puis cliquez sur Join Animated Objects. Après quelques secondes vous trouvez, sur le calque adjacent, un seul objet animé utilisant un modificateur MeshCache, pointant vers un fichier PC2. Vous pouvez à présent dupliquer (en mode linked) le maillage et ainsi multiplier le nombre de débris sans même augmenter la consommation mémoire. Et vous pouvez même décaler l'animation ! Si vous générez deux fichiers PC2 pour les mêmes débris, vous pouvez créer des fondus d'un MeshCache à l'autre via le paramètre Influence, afin d'enchainer les simulations.

Comme vous n'avez plus qu'un seul objet, vous pouvez y appliquer n'importe quel modificateur, comme un Bevel par exemple. Vous pouvez également emmètre des particules de tous ces débris vraiment facilement et dupliquer (toujours en mode linked) cet objet et y ajouter un modificateur Collision. Essayez de faire ça avec des centaines de débris ... c'est vraiment pas facile.

Même chose pour la fumée : vous pouvez émettre de la fumée à partir des débris, avec un duplicata agissant en tant que collisionneur. Avec seulement deux objets, vous pouvez voir la fumée passer à travers chaque trou d'un mur en train de s'effondrer.

Remodeler et temporiser les simulations dynamiques

Comme vous n'avez qu'un seul objet, le déformer au cours de votre animation devient facile avec une lattice ou même des shape keys. Dans la vidéo de démonstration qui suit, vous pouvez voir que je change la position d'un seul débris s'intersectant avec un autre. Il est possible d'emmètre des particules en utilisant les modificateurs Explode et Solidify, afin de générer des débris plus petits.

Un MeshCache peut être animé de différentes manières. L'une des mes favorites et le mode "Custom", car elle permet de complétement changer le cours du temps lors de votre simulation, en utilisant uniquement des images clés, afin de ralentir une simulation (la position de chaque point sera interpolée !), permettant de freiner la chute d'un bulding sans avoir à la recalculer avec un nombre d'images par seconde plus important !

Je me trompe peut-être, mais il me semble qu'il est plus facile pour Blender de gérer peu d'objets avec beaucoup de polygones, que beaucoup d'objets avec peu de polygones. Je suppose que cela vient du Dependancy Graph. Si vous regardez la première image de cette article, 4 Millions de polygones sont utilisés pour générer les débris de tous les immeubles. Pourtant, je peux jouer l'animation à 3 images secondes tout en ne consommant que 500 Mo de RAM, de la part l'utilisation des instances dans la scène. Et pour finir, Cycles démarre quasiment immédiatement au lancement d'un rendu interactif.

La musique utilisée dans cette vidéo est l’œuvre des géniaux Freeky Cleen & Dickey F :

https://www.jamendo.com/track/1149696/words

Pour l'animation de personnage aussi !

Après de longues années à avoir pratiqué l'animation dynamique sur bien des logiciels 3D (Maya, Houdini, Blender, etc ...) je pense savoir maintenant comment cela fonctionne. Mais dès qu'on parle d'animation de personnage, je dois bien avouer que je suis dans ce domaine un éternel débutant. Même après vingt ans de métier dans le domaine de l'imagerie par ordinateur. C'est pour quoi je pense que le reste de cet article "pourrait" être utile aux animateurs ... mais je n'en suis pas sûr. Si vous êtes un animateur, n'hésitez pas à me donner vos impressions là-dessus dans les commentaires situer plus bas.

Après avoir bien faire transpiré mon addon sur des simulations dynamiques, j'ai ajouté le support des modificateurs. En cliquant sur la petite case consacrée, vous pouvez fusionner les différentes parties d'un personnage guidés par des armatures en un seul objet, tout en préservant les UVs, Materiaux, Shapes, VertexColors, WeightMaps, etc ...

Dans la vidéo, vous pouvez me voir jouer un peu avec Sintel, créer un fichier PC2 pour les 40 premières images, puis utiliser les drivers afin de cycler et décaler l'animation dans le temps. Je pense que cela pourrait être utile pour la simulation de foule, mais ça n'est que mon opinion. :o)

PC2 ou shape keys

De manière expérimentale, j'ai ajouté la possibilité de convertir toutes les étapes de l'animation en shape keys plutôt qu'en fichier PC2. Chaque image utilise une shape key différente, les keyframes les animant étant automatiquement créés pendant la phase de fusion. J'ai ajouté cette fonctionnalité pour les moteurs temps réels tels que Unity ou UnrealEngine 4, qui peuvent (d'après ce que j'en sais) embarquer les shapes dans le maillage lors d'un export FBX.

Liens de téléchargement et conclusion

Et pour finir, voici le lien vers l'addon en question :

http://files.coyhot.com/code/blenderAddons/AnimationJoiner.py

Il vous suffit de l'installer de la manière habituelle, en passant par le menu "File >> User Preferences", puis en cliquant sur "Install from file" en sélectionnant le fichier AnimationJoiner.py.

Voilà ... c'est tout. Ceci est seulement la première version de mon addon. Quelques bugs ou limitations peut subsister. La seule que j'ai pu identifier pour l'instant est la fusion de simulation de type cloth. La conversion PC2 intégré dans mon Addon est inspiré de l'export PC2 officiel fourni avec Blender (merci Florian Meyer !!!). Mais je n'ai repris qu'un petite parie de celui-ci. Autant que je sache, il est vous est possible de sortir un premier cache PC2 uniquement pour le cloth dans une première passe, puis de le fusionner avec d'autres objets dans une deuxième passe avec mon addon.

Amusez-vous bien !