Androidアプリでは、走っている脚を描きたい。脚の上部を出力するには、次のようにします。どのように変換してから次に平行移動し、次に回転させるのかを行列で計算しますか?
// legCX,legCY is the location on screen about which the leg rotates.
Matrix m = new Matrix();
m.postTranslate(-legCX,-legCY);
m.postRotate(legRot);
m.postTranslate(legCX,legCY);
次に、キャンバスに行列を設定して脚を描画します。
どのように私は膝から下の脚の第二の部分を描くのですか?それはその上の脚とは異なる速度で回転し、上の脚で動く中心点を有する。私は次のことを試しましたが、最終結果は上の脚に従わない単一の点の回りの回転です。
Matrix m = new Matrix();
m.postTranslate(-legCX,-legCY);
m.postRotate(legRot);
m.postTranslate(0,-legLength);
m.postRotate(footRot);
m.postTranslate(0,legLength);
m.postTranslate(legCX,legCY);
私はそれが二つの異なるマトリックスオブジェクトに2つの回転を行い、その後、何とかそれらを組み合わせることがおそらく必要だと思われるが、私はそれを行う方法を正確に把握することはできません。
EDIT: 行列のこのタイプは、「変換行列」と呼ばれているように見えます。複数の操作を組み合わせることは、変換の合成と呼ばれます。しかし、このトピックのページでは、一連の翻訳と回転のしかたについては言及していません。あなたは1点の周りで回転を行うには、マトリックスを使用できるかどう
確かに、一点と異なる点の周りの追加の回転についての回転を可能にする何らかの方法で、複数の行列演算を行うことが可能でなければなりません。
私は、骨格アニメーションのページを見てみましたが、私は、彼らが何を言ってるのかの頭や尾をすることはできません。
あなたは 'legRot'を取り消すのを忘れたようです。あなたの最も内側の回転を除いて、他のすべての操作は完全にバランスが取れているはずです。これを実現するには、逆回転を適切な位置に追加するか、最初の3つの演算を1つの行列に結合し、その行列を最初に適用し、その後逆行列を適用します。これで問題が解決したら、このコメントを回答に変えます。 – MvG
これは機能しませんでした。私はこれを行う方法についてのチュートリアルを見つけることができればいいと思うが、それは不可能であるか、または間違ったことを探している。 – HappyEngineer