bf-blender Windows(8/27): SoCのIKプロジェクトが公式ツリーに
投稿日時 2005年08月28日 | カテゴリ: テストビルド
|
元記事:BF-Blender : SoC IK inside / windows (2005/08/27)
遅くなってすみません。lguillaume氏による、8/27付 bf-blender Windows版のビルドが公開されています。 どうやら、先日お伝えしました SoC のIKプロジェクトが公式ツリーに組み込まれた模様です。
Blendix氏 Log: IK lib の変更点:
以下のコンポーネントにより、完全に再構築されています: - IK_Solver: C ⇔ C++ のインタフェイス。
- IK_QSegment: Bone/Segment 用のベースクラス。0 から3 のDOF(Degrees Of Freedom)を持ちます。
- IK_QTask: タスク用のベースクラス(現在、位置と回転のタスクがあります)。
- IK_QJacobian: SVD(特異値分解)、減衰などを備えたヤコビアン行列。
- IK_QJacobianSolver: その反復ソルバー
指数写像のパラメータ化はもはや使用されておらず、代わりに以下を使用しています: - 3DOF と 2DOF の XZ Segment:ロドリーグの式により、直接行列を更新します。
- その他:オイラー角(冗長性に関してはここでは心配いりません)
逆ヤコビアンの計算も変更されました: - SVD アルゴリズムは丸め誤差によるいくつかの問題を防ぐため、NR の代わりに LAPACK のコードを元にしたものになりました。
- この問題が余儀なくされた時(ほとんどの場合)、ヤコビアン行列の転置に SVD が計算されます(高速)。
- 新しい減衰アルゴリズムは、選択的減衰最小自乗法(Selectively Damped Least Squares)と呼ばれるものが使用されており、その結果、より高速に、そしてより安定した収束が得られます。
- Stiffness(堅さ)は重み付き擬似逆行列(weighted pseudo-inverse)が使用されていた時のように実装されています。
ツリー構造をサポート。
回転制限: - 3DOF と 2DOF XZ segment の制限は、スイング(XZ平面上の軸の角度)成分と、ツイスト/ロール(Y軸回転)成分を元にしています。スイング領域は、球上の楕円です。
- 回転の制限は、内部の clamp ループを使用して実装されています:違反がある限り、違反する DOF が clamp されてヤコビアン行列から取り除かれ、そして解が再計算されます。 収束のチェックは、角度の変更の最大の平均、もしくは、繰り返しの最大数を元に行うようになりました。
今回の訳は自信が全くありません。間違いあればご指摘お願いします。
SoCのIKプロジェクトに関しては、前述の、以前のビルドの記事をご覧下さい。 個人的にはもう叫びまわりたいぐらいの嬉しさです。これでサクサクと作業が進められます。IKのスピードを実感して下さい。もちろん、軸回転制限も。
|
|