私はCとOpenGLで作業しています。私は骨格アニメーションの3Dモデルを読み込もうとしていますが、アニメーションの各フレームの各骨の絶対行列を計算しているようには見えません。各骨の絶対行列を取得するにはどうすればよいですか?
私は以下を持っています:各骨について、私は行列と逆行列を持ち、アニメーションの各フレームについて、私は回転(オイラー)と各骨の平行移動を持っています。
ブレンダーのインポート/エクスポートスクリプト:
編集:誰かが(それもいいと思い、ブレンダーおよびエクスポートで私を骨の絶対行列を取得する方法を知っている場合は、」
for each frame f
for each bone i
glLoadIdentity();
glMultMatrixd(bones[i].matrix);
for each parent bone ii(starting from the top)
glTranslated(bones[ii].translation[f].x, bones[ii].translation[f].y, bones[ii].translation[f].z);
glRotated(bones[ii].degrees[f].z, 0.0, 0.0, 1.0);
glRotated(bones[ii].degrees[f].x, 1.0, 0.0, 0.0);
glRotated(bones[ii].degrees[f].y, 0.0, 1.0, 0.0);
glMultMatrixd(bones[i].inversematrix);
glGetDoublev(GL_PROJECTION_MATRIX, bones[i].absmatrix[f]);
私は、最初の親の骨から回転/転移を適用しようとしました。それから私は骨(まだ最初の親の骨から始まっています)の行列を適用してから、回転/平行移動、次にその骨の逆行列を試してみました。私はまた、他の多くのことを試しました... – Jonathan
あなたが試したことのいくつかの例のコードを与えることができますか、それについては何ができません? –
最新の試行を表す擬似コードを追加しました – Jonathan