Quel est le savoir-faire nécessaire pour écrire une bibliothèque d'animation (IK & FK)? [fermé]

9

Je ne trouve pas de bonne bibliothèque d'animation, celles que j'ai trouvées sont vraiment anciennes et abandonnées, mais j'ai remarqué que les bibliothèques sont relativement petites, donc je pense à en coder une par moi-même: par où commencer ? Quelles sont les bases pour cela? Il y a un livre à ce sujet?

Quelques notes supplémentaires sur un bon format de fichier pour l'animation sont également très appréciées.

J'utilise C ++.

user827992
la source

Réponses:

7

La cinématique avant n'est qu'une condition préalable à la cinématique inverse, en général.

Pour la cinématique avant, vous devez avoir une certaine connaissance des chaînes de transformation (ce que signifie par exemple un graphique de scène). À titre d'exemple, un bon point de départ est la convention Denavit-Hartenberg. Pour la cinématique inverse, étudiez la descente en coordonnées cycliques (CCD), l' inverse jacobien, la transposition jacobienne et les solutions pseudo-inverses . Ces concepts et algorithmes vous offrent un aperçu décent de ce que sont les mathématiques et en partie la physique de ce domaine. La bibliothèque, le langage de programmation ou les formats de fichiers ne sont jamais l'élément clé si vous voulez également comprendre ce qui se passe derrière la magie.

Si vous avez besoin d'une solution rapide ou d'un composant pour une application sur laquelle vous travaillez, jetez un œil à certaines des bibliothèques fournies dans les autres réponses ici. Si vous aimez la robotique, OpenRAVE est un monstre qui mérite d'être mentionné. En outre, il existe une boîte à outils Matlab Robotics (à condition que vous soyez dans ce genre d'ingénierie).

Tous les concepts génèrent une cargaison de résultats pertinents sur votre moteur de recherche préféré, donc désolé de ne pas avoir publié autant de liens vers de beaux documents.

teodron
la source
1

Article original: Que dois-je savoir sur la cinématique inverse?

Vous avez probablement entendu parler d'Inverse Kinematics. IK est un outil populaire dans Unity et l'infographie, mais si c'est la première fois que vous essayez de créer ou d'utiliser un système de cinématique inverse, vous voudrez peut-être plus de détails. Je vais expliquer ce qu'est IK, définir le vocabulaire et passer en revue les utilisations. Quel est le vocabulaire nécessaire pour comprendre IK?

Avant d'entrer dans le cœur d'IK, nous devons définir un vocabulaire lié aux IK. IK est une méthode appliquée à un corps articulé. Qu'est-ce qu'un corps articulé?

Corps articulé

Un corps articulé peut représenter la plupart des corps animés tels que les humains et les animaux avec des squelettes. Autrement dit, un corps articulé est un arbre de chaînes liées. Les chaînes liées sont constituées de joints et de maillons, où un maillon est un cylindre rigide.

entrez la description de l'image ici

Types de joints

Quant aux articulations, il en existe deux types. Le premier type d'articulation est une articulation révolutionnaire. Il est connecté à un lien qui tourne autour de lui.

Une articulation révolutionnaire ressemble beaucoup à la broche centrale d'une horloge - avec une aiguille d'horloge comme lien.

entrez la description de l'image ici

Un joint prismatique est un joint tel que la liaison connectée se transforme à partir du joint pour étendre / raccourcir la liaison.

entrez la description de l'image ici

Un joint prismatique agit comme une extension / rétraction de la longueur de la poignée rétractable de vos bagages. Si vous regardez de plus près, une poignée de bagages rétractable a 4 articulations prismatiques. 2 joints prismatiques à mi-chemin dans la poignée, et 2 autres joints prismatiques tout au long de la poignée en haut des bagages.

Si vous êtes confus par les articulations prismatiques, ne vous inquiétez pas. Ils ne sont pas souvent utilisés dans la cinématique inverse, et comme vous pouvez le constater, aucun humain n'a d'articulations prismatiques - seulement des articulations révolutives.

Structure hiérarchique

Un corps articulé a une articulation radiculaire. L'articulation radiculaire est la base de la structure. L'articulation radiculaire d'un humanoïde est généralement le centre des hanches. Le corps articulé est formé d'un arbre d'articulations et de liens, à partir de l'articulation radiculaire. Une nouvelle articulation et un nouveau lien est similaire à une nouvelle branche sur un arbre. Un lien / joint intérieur est un lien / joint qui est plus proche du joint racine dans la hiérarchie arborescente du corps articulé, car il se rapporte à un joint / lien donné. Un lien / joint extérieur est un lien / joint qui est plus éloigné du joint racine dans la hiérarchie arborescente du corps articulé.

Effecteur d'extrémité

Un effecteur terminal est une position à la position la plus extérieure du lien le plus extérieur. C'est l'extrémité libre de la chaîne des articulations et des maillons alternés. L'effecteur terminal n'est pas un joint. L'effecteur terminal est simplement la position à l'extrémité d'un corps articulé. Un corps articulé peut avoir plusieurs effecteurs terminaux, tout comme un arbre binaire peut avoir plusieurs feuilles.

entrez la description de l'image ici

End Effector est représenté ici par un cercle vert.

Articulations et Poses

Une articulation est une rotation / translation d'une articulation qui déplace un lien connecté. D'autre part, une pose est un ensemble d'articulations articulaires qui se traduit par le positionnement du corps articulé. En d'autres termes, la pose est une valeur vectorielle au lieu d'une valeur scalaire.

Qu'est-ce que Forward Kinematics?

Avant de pouvoir entrer dans ce qu'est la cinématique inverse, nous devons comprendre ce qu'est la cinématique avancée. La fonction / algorithme cinématique directe prend une pose comme entrée et calcule la position de l'effecteur terminal comme sortie. La cinématique avant est la fonction inverse de la cinématique inverse. Avec Forward Kinematics, vous devez définir la pose entière d'un corps articulé afin de fournir la fonction / algorithme avec l'entrée de pose. Cela signifie que vous devez définir l'articulation de chaque articulation dans le corps articulé. Cela peut être bien si vous avez un petit nombre d'articulations, mais avec un nombre élevé d'articulations, cela a tendance à être fastidieux.

Qu'est-ce que la cinématique inverse?

Maintenant, imaginez si vous souhaitez que l'effecteur terminal de votre corps articulé atteigne une position cible particulière. Cela signifie que vous connaissez la position de l'effecteur terminal que vous souhaitez cibler, mais vous ne savez pas quelle doit être la position du corps articulé pour que l'effecteur terminal atteigne cette position cible. C'est là que Inverse Kinematics brille!

entrez la description de l'image ici

Inverse Kinematics est la fonction / algorithme inverse de Forward Kinematics. La fonction / algorithme cinématique directe prend une position cible comme entrée et calcule la pose requise pour que l'effecteur terminal atteigne la position cible - la pose est la sortie.

Comme vous pouvez le voir, l'entrée et la sortie sont commutées entre FK et IK. Avec Inverse Kinematics, vous n'avez pas besoin de définir la pose entière d'un corps articulé - cela est calculé pour vous par l'algorithme IK. Avec IK, il vous suffit de définir une position comme entrée.

Inverse Kinematics fait tout le travail de calcul difficile de calculer quelle est la pose. Dans l'État avant, il existe un corps articulé avec une pose connue. Il définit une position cible que l'effecteur terminal doit essayer d'atteindre. Une fois que l'algorithme IK est appliqué au corps articulé, nous avons atteint l'état After. L'état After montre qu'une nouvelle pose a été calculée, de sorte que l'effecteur terminal est maintenant à la position cible.

Quelles sont les utilisations d'IK?

À ce stade, nous savons que la CI est appliquée à un corps articulé, nous savons de quoi est composé un corps articulé et nous connaissons la différence entre la CI et la FK. Jusqu'à présent, nous avons un bon aperçu d'IK, mais complétons-le avec quelques bons cas d'utilisation d'IK. IK peut être utilisé pour un bras humanoïde pour atteindre un objet / cible, comme nous l'avons vu. IK peut également être utilisé pour le pas du pied, de telle sorte que nous disons au pied où marcher et l'IK explique comment configurer les articulations des jambes. IK n'est généralement pas utilisé comme animation elle-même (pour atteindre un objet), mais plutôt comme outil d'animation. Donc, si vous implémentez un cycle de marche, vous pouvez positionner certaines des images clés à l'aide de l'outil IK.

entrez la description de l'image ici

Un autre point clé à propos de la CI est que votre objectif / cible ne se limite pas à la position seule - votre objectif peut être défini comme une rotation. Par exemple, si vos pieds doivent tourner en fonction d'un terrain inégal, votre objectif de rotation CI peut être défini en fonction de la normale du sol. De cette façon, vos pieds sont inclinés le long du sol, comme lorsque vous montez une pente. Notez que vous pouvez également utiliser IK pour que votre tête (ou même vos yeux) regarde dans une certaine direction. Si vous voulez que votre tête suive un objet, vous pouvez utiliser IK pour que la tête suive l'objet autour.

Luis B
la source