Disons que j'ai un cadre avec des personnages qui peuvent courir et marcher et bien sûr, rester immobiles.
Ai-je raison de penser que le mélange d'animation est le processus de transition en douceur entre celles-ci en générant des animations dynamiques lors de l'exécution?
Si oui, quelle est la théorie de base de la façon dont cela fonctionne et comment pourrais-je la mettre en œuvre?
Réponses:
Le mélange d'animation de personnage est plus général et peut être utilisé pour:
L'idée de base est que pour deux squelettes identiques avec des clips d'animation différents, pour chaque rotation conjointe, vous calculez des valeurs intermédiaires. Les clips d'animation sont représentés par des rotations. L'interpolation linéaire n'est donc pas ce que vous devez utiliser si vous voulez des résultats précis (même si vous utilisez des angles d'Euler). Vous pouvez utiliser slerp par exemple mais des solutions plus complexes existent.
Il s'agit d'un problème complexe avec des solutions complexes. Fondamentalement, si vous avez deux clips d'animation A et B:
Si vous êtes intéressé, je vous suggère de commencer par lire cet article afin de mieux comprendre quelles sont les difficultés: http://graphics.cs.wisc.edu/Papers/2003/KG03/regCurves.pdf
Ce n'est pas le plus récent, mais il est facile à lire.
J'espère que ça aide. Meilleures salutations.
la source
Tout d'abord, je suppose que vous parlez d'animation squelettique (en particulier les graphiques 3D), car le mélange d'animations ne s'applique pratiquement qu'à l'animation squelettique. Si vous parlez d'animations 2D basées sur des sprites (vous ne l'avez pas spécifié dans votre question), vous pouvez à peu près oublier le mélange d'animations.
Avec cela à l'écart ...
C'est à peu près ce que le terme signifie, oui. Cette expression "générer des animations dynamiques" est cependant un peu trompeuse; qui évoque l'animation procédurale et ce n'est pas exactement ce que vous faites.
Le "mélange d'animation" consiste à effectuer une transition entre deux clips d'animation en utilisant un peu des deux animations avec la pondération d'un clip en hausse tandis que la pondération de l'autre clip diminue. Cela fonctionne mieux avec l'animation squelettique, de sorte que la rotation de chaque articulation est définie à mi-chemin entre l'animation de cette articulation dans deux clips d'animation différents, avec la pondération de chaque clip changeant au fil du temps. Autrement dit, vous calculeriez la rotation de chaque joint quelque chose comme:
rotCombined = weightA*rotA + weightB*rotB
Maintenant, bien que le mélange d'animation fonctionne mieux avec une animation squelettique, vous pouvez également le faire avec une animation de sommet (par exemple MD2). Il s'agit plus d'une note historique car peu de moteurs de jeu modernes utilisent l'animation de sommet, mais vous pouvez définir les positions de sommet de la même manière, comme une pondération entre la position de sommet dans deux animations différentes. Cela pourrait entraîner des interpolations étranges (par exemple, des parties du maillage s'effondrant ou se retournant) si les deux animations étaient trop différentes, tandis que l'animation squelettique garantit que les différentes parties du maillage restent intactes.
la source