アニメーションライブラリ(IK&FK)を作成するために必要なノウハウは何ですか?[閉まっている]


9

アニメーションに適したライブラリを見つけることができません。見つけたライブラリは本当に古く、廃止されていますが、ライブラリが比較的小さいことに気付いたので、自分でコーディングすることを考えています。どこから始めればよいですか?これの基本は何ですか?これに関する本はありますか?

アニメーションに適したファイル形式についてのいくつかの追加のメモも高く評価されています。

C ++を使用しています。

回答:


8

7

フォワードキネマティクスは、一般的にインバースキネマティクスの前提条件です。

フォワードキネマティクスの場合、変換チェーンについての知識が必要です(シーングラフの意味など)。例として、開始するのに適したポイントは、Denavit-Hartenberg規約です。インバースキネマティクスについては、 Cyclic Coordinate Descent(CCD)、Jacobian Inverse、Jacobian transposeおよびpseudo-inverse solutionをください。これらの概念とアルゴリズムは、数学と部分的にこの分野の物理学がすべてについて何であるかについての適切な概要を提供します。魔法の背後で何が起こっているのかを理解したい場合は、ライブラリ、プログラミング言語、ファイル形式が重要な要素になることはありません。

作業しているアプリケーションの簡単なソリューションまたはコンポーネントが必要な場合は、ここで他の回答で提供されているライブラリのいくつかを調べてください。ロボット工学に夢中なら、OpenRAVE注目に値するモンスターです。また、Matlab Robotics Toolboxもあります(そのようなエンジニアリングの側面に興味がある場合)。

すべての概念は、お気に入りの検索エンジンに関連する結果の大量のトラックを生み出します。そのため、素晴らしい資料へのリンクをあまり投稿しないことを残念に思います。


1

元の記事:インバースキネマティクスについて知っておくべきことは何ですか?

あなたはおそらくインバースキネマティクスについて聞いたことがあるでしょう。IKはUnityとコンピューターグラフィックスで人気のあるツールですが、インバースキネマティクスシステムを初めて作成または使用しようとした場合は、詳細を確認する必要があります。IKとは何かを説明し、語彙を定義し、使用方法を確認します。IKを理解するために必要な語彙は何ですか?

IKの心臓部に入る前に、いくつかのIK関連の語彙を定義する必要があります。IKは、関節のあるボディに適用される方法です。関節式ボディとは何ですか?

関節式ボディ

関節付きのボディは、人間やスケルトンを持つ動物など、ほとんどのアニメートされたボディを表すことができます。簡単に言えば、関節付きボディはリンクされたチェーンのツリーです。リンクされたチェーンはジョイントとリンクで構成され、リンクは剛体シリンダーです。

ここに画像の説明を入力してください

関節の種類

関節は2種類あります。最初のタイプのジョイントは回転ジョイントです。それはその周りを回転するリンクに接続されています。

回転ジョイントは、時計のセンターピンによく似ており、時計の針がリンクになっています。

ここに画像の説明を入力してください

直動ジョイントは、接続されたリンクがジョイントから平行移動してリンクを延長/短縮するようなジョイントです。

ここに画像の説明を入力してください

プリズマティックジョイントは、荷物の引き込み式ハンドルの長さを伸ばしたり縮めたりするのと同じように機能します。よく見ると、格納式のラゲッジハンドルには4つのプリズムジョイントがあります。ハンドルの下半分にある2つの角柱ジョイントと、荷物の上部にあるハンドルの下にある2つの角柱ジョイント。

プリズマティックジョイントで混乱している場合でも、心配しないでください。これらはインバースキネマティクスではあまり使用されません。また、ご存知のように、人間には角柱状の関節はありません。回転関節のみです。

階層構造

関節式のボディには、ルートジョイントがあります。ルートジョイントは構造のベースです。ヒューマノイドのルートジョイントは通常、腰の中心です。関節式ボディは、ルートジョイントから始まり、ジョイントとリンクのツリーから形成されます。新しいジョイントとリンクは、ツリーの新しいブランチに似ています。内側のリンク/ジョイントは、関節/リンクに関連しているため、関節式ボディのツリー階層内のルートジョイントに近いリンク/ジョイントです。外部リンク/ジョイントは、関節式ボディのツリー階層内でルートジョイントからさらに離れたリンク/ジョイントです。

エンドエフェクター

エンドエフェクターは、最も外側のリンクの最も外側の位置です。ジョイントとリンクが交互に配置されたチェーンの自由端です。エンドエフェクターはジョイントではありません。エンドエフェクターは、関節式ボディの端の位置にすぎません。二分木が複数の葉を持つことができるのと同じように、多関節ボディは複数のエンドエフェクタを持つことができます。

ここに画像の説明を入力してください

エンドエフェクターは、ここでは緑色の円として描かれています。

アーティキュレーションとポーズ

アーティキュレーションは、接続されたリンクを動かすジョイントの回転/並進です。一方、ポーズは、関節のある体の位置を決める一連の関節です。つまり、ポーズはスカラー値ではなく、ベクトル値です。

フォワードキネマティクスとは

インバースキネマティクスとは何かを説明する前に、フォワードキネマティクスとは何かを理解する必要があります。フォワードキネマティクス関数/アルゴリズムは、ポーズを入力として取り、エンドエフェクタの位置を出力として計算します。フォワードキネマティクスは、インバースキネマティクスの逆関数です。フォワードキネマティクスでは、関数/アルゴリズムにポーズ入力を提供するために、多関節ボディのポーズ全体を定義する必要があります。つまり、関節付きボディの各関節の関節を定義する必要があります。ジョイントの数が少ない場合はこれで問題ありませんが、ジョイントの数が多い場合は面倒です。

インバースキネマティクスとは

ここで、関節式ボディのエンドエフェクタを特定のターゲット位置に到達させたい場合を想像してください。つまり、ターゲットにするエンドエフェクタの位置はわかっていますが、エンドエフェクタがこのターゲットの位置に到達するために必要な関節式ボディのポーズはわかりません。これが、インバースキネマティクスの優れた点です。

ここに画像の説明を入力してください

インバースキネマティクスは、フォワードキネマティクスの逆関数/アルゴリズムです。フォワードキネマティクス関数/アルゴリズムは、ターゲット位置を入力として受け取り、エンドエフェクタがターゲット位置に到達するために必要なポーズを計算します。ポーズは出力です。

ご覧のとおり、入力と出力はFKとIKの間で切り替えられます。インバースキネマティクスでは、アーティキュレートされたボディのポーズ全体を定義する必要はありません。これは、IKアルゴリズムによって計算されます。IKでは、位置を入力として定義するだけで済みます。

インバースキネマティクスは、ポーズとは何かを計算するという困難な計算作業をすべて行います。変更前の状態では、いくつかの既知のポーズを持つ関節式のボディがあります。エンドエフェクタが到達しようとするターゲット位置を定義します。IKアルゴリズムが関節付きボディに適用されると、After Stateに到達しました。After Stateは、エンドエフェクタがターゲット位置にあるように、新しいポーズが計算されたことを示しています。

IKの用途は何ですか?

この時点で、IKが関節付きボディに適用されていること、関節付きボディの構成がわかっていること、IKとFKの違いがわかっています。これまでのところ、IKの概要は良好ですが、IKのいくつかの優れた使用例もまとめてみましょう。これまで見てきたように、IKは、人型の腕がオブジェクト/ターゲットに到達するために使用できます。足踏みにもIKを使用できます。足を踏む場所を足に指示し、IKが脚の関節の構成方法を決定します。IKは通常、アニメーション自体(オブジェクトへの到達)として使用されるのではなく、アニメーションツールとして使用されます。したがって、歩行サイクルを実装している場合は、IKツールを使用してキーフレームのいくつかを配置できます。

ここに画像の説明を入力してください

IKのもう1つの重要な点は、目標/ターゲットが位置のみに限定されず、目標を回転として定義できることです。たとえば、起伏のある地形に基づいて足を回転させる必要がある場合、IK回転の目標は床の法線に基づいて定義できます。このようにして、上り坂を上るときなど、足が床に沿って傾斜します。IKを使用して、頭(または目)を特定の方向に向けることもできます。頭をオブジェクトに追従させる場合は、IKを使用して頭をオブジェクトに追従させることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.