BLENDER TRIBU
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Manette DualSense PS5 édition limitée ...
Voir le deal

Aller en bas
petitagore
petitagore

Stop Motion avec des scripts Python Empty Stop Motion avec des scripts Python

Mer 4 Jan - 11:38
Animation pas-à-pas avec des scripts Python, démonstration de faisabilité



L'animation pas-à-pas, c'est ce qu'en bon franglais on appelle du Stop Motion, et une démonstration de faisabilité, c'est ce que les cuistres appellent aujourd'hui une proof of concept -- mais moi je préfère en général parler français.

Et tout cela étant dit, je vais dans cette vidéo me contenter de laisser parler les images, d'une part parce que je veux pouvoir vous montrer ces merveilles là tout de suite sans attendre d'avoir pris le temps de vous concocter une de ces merveilles pédagogiques dont j'ai le secret, mais d'autre part parce que, en toute honnêteté, je n'ai pas encore une maîtrise complète de cette technique dont je suis pourtant le concepteur.

Je rencontre occasionnellement de petites difficultés que je ne comprends pas bien, et que je soupçonne liées à quelques bugs de Blender dans la gestion des parentés hiérarchiques.

Sur ces pantins, les mains ont pour parents les avant-bras, qui ont pour parents les bras, qui ont eux-mêmes pour parents le thorax, lequel quant à lui a pour parent la bouboule placée au niveau du nombril, etc... Ca me paraît tout à fait correct sur le plan logique, mais j'ai le sentiment que de temps en temps Blender se mélange les pinceaux entre les positionnements relatifs et absolus de ces sous-éléments, surtout lorsque l'on passe la structure hiérarchique d'un fichier de Blender à un autre, et il faut encore que je teste tout ça à fond.

N'empêche, même en se limitant à cet état de prototype, je trouve la technique prometteuse, et d'autant plus qu'à terme (c'est-à-dire quand j'aurai fini de déboguer) ce type d'animations devrait exiger très peu de travail. A ce stade du récit, je dois hélas confesser que c'est encore en partie une promesse électorale. Mais c'est quand même déjà assez mimi, non?

Ciardo Biagio aime ce message

Blender Moonboots
Blender Moonboots

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Mer 4 Jan - 13:39
Faudra que tu en dises plus car pour moi ce que tu fais reste mystérieux   ^^   est-ce que cela veut dire que tu te passes de la contrainte IK pour faire tes animations ?

_________________
Ma chaîne de tutos sur Youtube
blendman
blendman

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Mer 4 Jan - 17:50
salut

ça a l'air intéressant.

Je suppose que chaque perso est en un seul mesh, c'est bien ça ?

Et donc, là, tu as un parenting "interne", entre les mesh (et pas entre des objets)
Lylo
Lylo

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Jeu 5 Jan - 10:18
Même chose pour moi, je ne comprends pas bien le pourquoi du comment dans le sens où j'ai l'impression de voir une simple animation.
Ne faudrait-il pas faire un parentage du bassin aux extrémités plutôt que l'inverse puisque c'est ainsi que fonctionne le corps humain ?
petitagore
petitagore

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Ven 6 Jan - 11:09
Euh, bon, je réponds un peu, et avec un retard dont je vous prie de m'excuser. Je suis nouveau sur Blender Tribu, mais pas sur Forumactif, et avec mes habitudes acquises sur d'autres instances de Forumactif, je pensais recevoir des notifications par courriel s'il y avait des réponses à mon post... Il doit y avoir un paramètre à valider quelque part dans mon profil, bref, c'est pas la question. :-P

Or donc... Mes personnages (il y en a deux sur la vidéo) sont deux structures hiérarchiques, chacune constituée de dix-sept maillages "indépendants" (en dehors du parentage, je veux dire). Dix-sept, ça n'est pas vraiment peu, mais ça n'est pas tant que ça. Allez, pour le plaisir, j'énumère: une tête, un cou, un thorax, un "nombril" (la bouboule au milieu), un abdomen, un bras gauche, un avant-bras gauche, une main gauche, la même chose du côté droit, une cuisse gauche, un mollet gauche, un pied gauche et la même chose du côté droit.

Donc, dans ma scène, il y a deux fois dix-sept éléments (ça fait 34), tous dotés de paramètres de rotation. J'en fais l'inventaire dans la position de départ, et ça donne ça (attention, c'est long; je vous recommande vivement de ne pas tout lire):

Code:
av_bras_droit_labrige
MESH
Posi 0.209605,0.172115,0.264981
Rotx 0.000000, Roty -0.000000, Rotz 0.000000
Tail 1.000000,1.000000,1.000000

==========
av_bras_gauche_labrige
MESH
Posi -0.213824,0.300563,0.233998
Rotx 0.000000, Roty -0.000000, Rotz 0.000000
Tail 1.000000,1.000000,1.000000

==========
bassin_labrige
MESH
Posi -0.003003,0.001296,0.391925
Rotx 0.000000, Roty -0.000000, Rotz 0.000000
Tail 1.000000,1.000000,1.000000

==========
bras_droit_labrige
MESH
Posi 0.211215,0.315554,0.559922
Rotx 0.000000, Roty -0.000000, Rotz 0.000000
Tail 1.000000,1.000000,1.000000

==========
bras_gauche_labrige
MESH
Posi -0.213659,0.311506,0.558643
Rotx 0.000000, Roty -0.000000, Rotz 0.000000
Tail 1.000000,1.000000,1.000000

(C'était vraiment trop long, j'en ai viré les trois quarts)

Et j'en entends déjà qui me disent: mais t'es malade, t'as noté tout ça à la main? Meuh non, bien sûr que non: j'ai écrit un script Python pour le faire à ma place. Je lance le script et zou, un dixième de seconde plus tard, les centaines de lignes de mon inventaire sont écrites.

Or donc, je produis cet inventaire pour la position de départ des personnages, puis je produis avec le même script un autre inventaire pour la position d'arrivée.

Et comme décidément, les scripts, j'aime ça, zou, je lance un autre script pour faire la comparaison entre les deux inventaires et écrire un récapitulatif des changements, qui ressemble à ça (à chaque fois: nom de l'élément à articuler, rotations dans la position de départ, rotations dans la position d'arrivée):

Code:
av_bras_droit_labrige
Rotx 0.000000, Roty 0.000000, Rotz 0.000000
Rotx 43.673384, Roty 0.000000, Rotz 0.000000

av_bras_droit_ratcuit
Rotx 0.000000, Roty 0.000000, Rotz 0.000000
Rotx 16.390009, Roty 0.000000, Rotz 0.000000

av_bras_gauche_labrige
Rotx 0.000000, Roty 0.000000, Rotz 0.000000
Rotx 56.865341, Roty -21.886660, Rotz 0.000000

av_bras_gauche_ratcuit
Rotx 0.000000, Roty 0.000000, Rotz 0.000000
Rotx 31.580752, Roty 0.000000, Rotz 0.000000

bassin_labrige
Rotx 0.000000, Roty 0.000000, Rotz 0.000000
Rotx 4.297381, Roty 0.000000, Rotz 0.000000

bassin_ratcuit
Rotx 0.000000, Roty 0.000000, Rotz 0.000000
Rotx 0.000000, Roty 0.000000, Rotz 0.000000

(etc., etc., j'abrège... Le vrai fichier fait 130 lignes de long)

Et cela étant fait, je lance un troisième script Python (oui, les scripts, c'est mon dada) à qui j'ai imposé une durée en secondes pour le mouvement (ce qui demande la modification d'une ligne de code, tout ça), et zou, le script se démmbrouille pour calculer toutes les positions des n frames de mon animation à 30 images seconde. Depuis le début du processus, toute cette cuisine informatique a dû me faire bosser pendant vingt-cinq secondes à tout péter. Bon, il reste à faire calculer les images, ce qui est sensiblement plus long, mais je peux déjà voir l'effet que ça fait rien qu'en cliquant sur le bouton de lecture dans la sous-fenêtre Timeline.

Voilààà... En fait, c'est très simple! Enfin, c'est simple une fois qu'on a écrit les scripts, mais il se trouve que j'aime écrire des scripts (je vous l'avais déjà dit?) -- et surtout, une fois qu'ils sont écrits, ils peuvent servir indéfiniment.

Il restait la question des prétendus bugs de Blender dont je parlais dans la vidéo... Hum, ça n'était pas des bugs de Blender, c'était des bugs de moi: j'avais effectué les parentages avec "Set Parent to Object" au lieu de "Set Parent to Object (Keep Transform)", ha ha ha, suis-je bête et incompétent. :-)


Dernière édition par petitagore le Mer 11 Jan - 9:48, édité 1 fois
busanga
busanga

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Ven 6 Jan - 12:35
Salut,

Sans doute il y a un truc qui m"échappe, mais c'est quoi fondamentalement la différence avec une animation par clés ? Parce que c'est le même principe, non ?
petitagore
petitagore

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Ven 6 Jan - 14:18
C'est absolument le même principe. Mais pour quelqu'un qui a déjà beaucoup de pratique du code informatique, c'est beaucoup moins difficile que d'apprendre à se familiariser avec les deux cent mille manip de l'interface de Blender. Il n'y a jamais besoin d'apprendre comment on fait, la réponse est toujours "je vais y arriver avec trois lignes de Python". Et en plus, le code produit peut toujours être copié-collé.
blendman
blendman

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Ven 6 Jan - 14:57
ah ok, donc ce sont des objets séparés, et pas un objet uniquement (chaque personnage).

Et au lieu de déplacer chaque objet (bras, etc) à la main, tu lances ton script?
C'est ça ? J,'ai bon Smile ?
mais tu ne peux pas vraiment faire des animations de personnages comme ça, meme pour un truc cartoon, si ?

En fait, tu fais comme ça parce que tu aimes écrire des scripts, je comprends Very Happy

C'est coder ton logiciel au lieu d'utiliser des logiciels d,'autres personnes.
Je comprends (un peu), car je fais pareil pour certains logiciels, je préfère les coder moi-même mais c'est hyper long hou punaise
Mais en animation -blender, je préfère faire les anim à la main ^^.
petitagore
petitagore

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Sam 7 Jan - 0:13
Lylo a écrit:Ne faudrait-il pas faire un parentage du bassin aux extrémités plutôt que l'inverse puisque c'est ainsi que fonctionne le corps humain ?

Ca dépend du mouvement. Si le personnage a les pieds par terre, ce qui est quand même assez courant, je pense que c'est encore en définissant les pieds comme le haut de la hiérarchie (si j'ose dire!) qu'on a le moins de problèmes (parce que comme ça le personnage garde forcément les pieds sur terre, au lieu de se mettre en lévitation ou de s'enfoncer dans le sol).

Je ne maîtrise pas encore à fond, il faut encore que je fasse plein d'exercices et de tests. N'empêche, la technique est assez prometteuse.

Lylo aime ce message

busanga
busanga

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Sam 7 Jan - 19:57
Ok je vois un peu ta démarche, mais bien que je me pose bien là parfois moi aussi en réinventeur de la roue, je me dis que tu te compliques bien la vie, les armatures, contraintes, clés d'animation ne me semblent pas si obscures à utiliser.
Lylo
Lylo

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Dim 8 Jan - 16:00
petitagore a écrit:
Lylo a écrit:Ne faudrait-il pas faire un parentage du bassin aux extrémités plutôt que l'inverse puisque c'est ainsi que fonctionne le corps humain ?

Ca dépend du mouvement. Si le personnage a les pieds par terre, ce qui est quand même assez courant, je pense que c'est encore en définissant les pieds comme le haut de la hiérarchie (si j'ose dire!) qu'on a le moins de problèmes (parce que comme ça le personnage garde forcément les pieds sur terre, au lieu de se mettre en lévitation ou de s'enfoncer dans le sol).

Je ne maîtrise pas encore à fond, il faut encore que je fasse plein d'exercices et de tests. N'empêche, la technique est assez prometteuse.

Mais oui, il n'y a pas de pesanteur par défaut en 3D Smile
Contenu sponsorisé

Stop Motion avec des scripts Python Empty Re: Stop Motion avec des scripts Python

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum