Was ist das notwendige Know-how, um eine Animationsbibliothek (IK & FK) zu schreiben? [geschlossen]


9

Ich kann keine gute Bibliothek für Animationen finden, die, die ich gefunden habe, sind nur sehr alt und nicht mehr verfügbar, aber ich habe festgestellt, dass die Bibliotheken relativ klein sind, also denke ich darüber nach, eine selbst zu codieren: Wo soll ich anfangen? ? Was sind die Grundlagen dafür? Gibt es ein Buch darüber?

Einige weitere Hinweise zu einem guten Dateiformat für Animationen werden ebenfalls sehr geschätzt.

Ich benutze C ++.

Antworten:


8

7

Die Vorwärtskinematik ist im Allgemeinen nur eine Voraussetzung für die inverse Kinematik.

Für die Vorwärtskinematik müssen Sie einige Kenntnisse über Transformationsketten haben (was beispielsweise ein Szenendiagramm bedeutet). Ein guter Ausgangspunkt ist beispielsweise die Denavit-Hartenberg-Konvention. Untersuchen Sie für die inverse Kinematik die Lösungen Cyclic Coordinate Descent (CCD), Jacobian Inverse, Jacobian Transponierung und Pseudo-Inverse . Diese Konzepte und Algorithmen bieten Ihnen einen guten Überblick darüber, worum es in der Mathematik und teilweise in der Physik dieses Fachs geht. Die Bibliothek, Programmiersprache oder Dateiformate sind niemals das Schlüsselelement, wenn Sie auch verstehen möchten, was hinter der Magie passiert.

Wenn Sie für eine Anwendung, an der Sie arbeiten, eine schnelle Lösung oder eine Komponente benötigen, werfen Sie einen Blick auf einige der Bibliotheken, die in den anderen Antworten hier bereitgestellt werden. Wenn Sie sich für Robotik interessieren, ist OpenRAVE ein erwähnenswertes Monster. Es gibt auch eine Matlab Robotics Toolbox (vorausgesetzt, Sie interessieren sich für diese technische Seite).

Alle Konzepte liefern eine Menge relevanter Ergebnisse in Ihrer bevorzugten Suchmaschine. Es tut uns leid, dass Sie nicht so viele Links zu netten Materialien veröffentlicht haben.


1

Originalartikel: Was muss ich über Inverse Kinematics wissen?

Sie haben wahrscheinlich von Inverse Kinematics gehört. IK ist ein beliebtes Tool in Unity und Computergrafik. Wenn Sie jedoch zum ersten Mal versuchen, ein Inverse Kinematics-System zu erstellen oder zu verwenden, möchten Sie möglicherweise weitere Details. Ich werde erklären, was IK ist, das Vokabular definieren und die Verwendung überprüfen. Was ist das notwendige Vokabular, um IK zu verstehen?

Bevor wir uns mit IK befassen, müssen wir einige IK-bezogene Vokabeln definieren. IK ist eine Methode, die auf einen Gelenkkörper angewendet wird. Was ist ein Gelenkkörper?

Gelenkkörper

Ein artikulierter Körper kann die meisten animierten Körper wie Menschen und Tiere mit Skeletten darstellen. Einfach ausgedrückt ist ein Gelenkkörper ein Baum miteinander verbundener Ketten. Die verbundenen Ketten bestehen aus Gelenken und Gliedern, wobei ein Glied ein starrer Zylinder ist.

Geben Sie hier die Bildbeschreibung ein

Arten von Gelenken

Für Gelenke gibt es zwei Arten. Die erste Art von Gelenk ist ein Drehgelenk. Es ist mit einer Verbindung verbunden, die sich um sie dreht.

Ein Drehgelenk ähnelt dem Mittelstift einer Uhr - mit einem Uhrzeiger als Bindeglied.

Geben Sie hier die Bildbeschreibung ein

Eine prismatische Verbindung ist eine Verbindung, bei der die verbundene Verbindung von der Verbindung verschoben wird, um die Verbindung zu verlängern / zu verkürzen.

Geben Sie hier die Bildbeschreibung ein

Ein prismatisches Gelenk ähnelt dem Ausfahren / Einfahren der Länge des einziehbaren Griffs an Ihrem Gepäck. Wenn Sie genau hinschauen, hat ein einziehbarer Gepäckgriff 4 prismatische Gelenke. 2 prismatische Gelenke auf halber Höhe des Griffs und weitere 2 prismatische Gelenke auf halber Höhe des Griffs oben am Gepäck.

Wenn Sie durch prismatische Gelenke verwirrt sind, machen Sie sich keine Sorgen. Sie werden in der inversen Kinematik nicht so oft verwendet, und wie Sie vielleicht sehen können, haben keine Menschen prismatische Gelenke - nur Drehgelenke.

Hierarchische Struktur

Ein Gelenkkörper hat ein Wurzelgelenk. Das Wurzelgelenk ist die Basis der Struktur. Das Wurzelgelenk eines Humanoiden ist normalerweise das Zentrum der Hüften. Der Gelenkkörper besteht aus einem Baum von Gelenken und Gliedern, beginnend am Wurzelgelenk. Ein neues Gelenk ähnelt einem neuen Ast an einem Baum. Eine innere Verbindung / Verbindung ist eine Verbindung / Verbindung, die näher an der Wurzelverbindung innerhalb der Baumhierarchie des Gelenkkörpers liegt, da sie sich auf eine bestimmte Verbindung / Verbindung bezieht. Ein Außenborder / Gelenk ist ein Glied / Gelenk, das innerhalb der Baumhierarchie des Gelenkkörpers weiter vom Wurzelgelenk entfernt ist.

Endeffektor

Ein Endeffektor ist eine Position an der äußersten Außenbordposition der äußersten Außenbordverbindung. Es ist das freie Ende der Kette alternierender Gelenke und Glieder. Der Endeffektor ist kein Gelenk. Der Endeffektor ist lediglich die Position am Ende eines Gelenkkörpers. Ein Gelenkkörper kann mehrere Endeffektoren haben, genau wie ein Binärbaum mehrere Blätter haben kann.

Geben Sie hier die Bildbeschreibung ein

End Effector ist hier als grüner Kreis dargestellt.

Artikulationen und Posen

Eine Artikulation ist eine Drehung / Translation eines Gelenks, das eine verbundene Verbindung bewegt. Andererseits ist eine Pose ein Satz von Gelenkartikulationen, die zur Positionierung des Gelenkkörpers führen. Mit anderen Worten ist die Pose ein Vektorwert anstelle eines Skalarwerts.

Was ist Vorwärtskinematik?

Bevor wir uns mit Inverse Kinematics befassen können, müssen wir herausfinden, was Forward Kinematics ist. Die Funktion / der Algorithmus für die Vorwärtskinematik nimmt eine Pose als Eingabe ein und berechnet die Position des Endeffektors als Ausgabe. Die Vorwärtskinematik ist die inverse Funktion der inversen Kinematik. Bei der Vorwärtskinematik müssen Sie die gesamte Pose eines Gelenkkörpers definieren, um die Funktion / den Algorithmus mit der Pose-Eingabe zu versorgen. Dies bedeutet, dass Sie die Artikulation jedes Gelenks im Gelenkkörper definieren müssen. Dies kann in Ordnung sein, wenn Sie eine geringe Anzahl von Gelenken haben, aber bei einer hohen Anzahl von Gelenken ist dies in der Regel mühsam.

Was ist inverse Kinematik?

Stellen Sie sich nun vor, Sie möchten, dass der Endeffektor Ihres Gelenkkörpers eine bestimmte Zielposition erreicht. Dies bedeutet, dass Sie die Endeffektorposition kennen, auf die Sie zielen möchten, aber nicht wissen, wie die Haltung des Gelenkkörpers sein muss, damit der Endeffektor diese Zielposition erreicht. Hier strahlt Inverse Kinematics!

Geben Sie hier die Bildbeschreibung ein

Inverse Kinematik ist die inverse Funktion / der inverse Algorithmus der Vorwärtskinematik. Die Funktion / der Algorithmus für die Vorwärtskinematik verwendet eine Zielposition als Eingabe und berechnet die Pose, die der Endeffektor benötigt, um die Zielposition zu erreichen - die Pose ist die Ausgabe.

Wie Sie sehen können, werden Ein- und Ausgang zwischen FK und IK umgeschaltet. Mit Inverse Kinematics müssen Sie nicht die gesamte Pose eines Gelenkkörpers definieren - dies wird vom IK-Algorithmus für Sie berechnet. Bei IK müssen Sie nur eine Position als Eingabe definieren.

Inverse Kinematics erledigt die anspruchsvolle Rechenarbeit zur Berechnung der Pose. Im Vorher-Zustand gibt es einen Gelenkkörper mit einer bekannten Pose. Es definiert eine Zielposition, die der Endeffektor erreichen möchte. Sobald der IK-Algorithmus auf den Gelenkkörper angewendet wurde, haben wir den Nachzustand erreicht. Der After-Status zeigt an, dass eine neue Pose berechnet wurde, sodass sich der Endeffektor jetzt an der Zielposition befindet.

Was sind die Verwendungszwecke von IK?

Zu diesem Zeitpunkt wissen wir, dass IK auf einen Gelenkkörper angewendet wird, wir wissen, woraus ein Gelenkkörper besteht, und wir kennen den Unterschied zwischen IK und FK. Wir haben bisher einen guten Überblick über IK, aber lassen Sie uns dies auch mit einigen guten Anwendungsfällen von IK abrunden. Wie wir gesehen haben, kann IK für einen humanoiden Arm verwendet werden, um nach einem Objekt / Ziel zu greifen. IK kann auch zum Treten des Fußes verwendet werden, sodass wir dem Fuß mitteilen, wohin er treten soll, und der IK herausfindet, wie die Beingelenke konfiguriert werden. IK wird normalerweise nicht als Animation selbst verwendet (nach einem Objekt greifen), sondern eher als Animationswerkzeug. Wenn Sie also einen Laufzyklus implementieren, können Sie einige der Schlüsselbilder mit dem IK-Tool positionieren.

Geben Sie hier die Bildbeschreibung ein

Ein weiterer wichtiger Punkt bei IK ist, dass Ihr Ziel nicht nur auf die Position beschränkt ist - Ihr Ziel kann als Rotation definiert werden. Wenn sich Ihre Füße beispielsweise aufgrund von unebenem Gelände drehen müssen, kann Ihr IK-Rotationsziel basierend auf der Normalität des Bodens definiert werden. Auf diese Weise sind Ihre Füße entlang des Bodens geneigt, z. B. wenn Sie eine Steigung hinaufgehen. Beachten Sie, dass Sie IK auch verwenden können, um Ihren Kopf (oder sogar Ihre Augen) in eine bestimmte Richtung zu lenken. Wenn Sie möchten, dass Ihr Kopf einem Objekt folgt, können Sie IK verwenden, damit der Kopf dem Objekt folgt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.