現在、Android用の3Dゲームエンジンの開発に取り組んでおり、Lenovo TAB 10でも問題なく動作します回転中にメッシュが平坦化(スキュー)します。私はそれが1つのデバイス上で動作するので、どこから見るべきか分からない。何か案は?いずれかの軸で3次元回転させると、一部のAndroidデバイスでメッシュスキューが発生する
オブジェクト自体に対して、任意の軸(右、上、および前)の周りのすべてを回転します。
Matrix.setIdentityM(mMesh.mModelMatrix, 0);
Matrix.translateM(mMesh.mModelMatrix, 0, mvLocation.mX, mvLocation.mY, mvLocation.mZ);
Matrix.scaleM(mMesh.mModelMatrix, 0, mfScale, mfScale, mfScale);
Matrix.multiplyMM(mMesh.mModelMatrix, 0, mMesh.mModelMatrix, 0, mMatRotate.getFloatArray(), 0);
mMesh.draw(viewMatrix, projMatrix, Renderer);
:
私のドローインサイド
cMatrix4( float a, float b, float c, float d,
float e, float f, float g, float h,
float i, float j, float k, float l,
float m, float n, float o, float p)
{
mfMatrixData[0] = a; mfMatrixData[1] = b; mfMatrixData[2] = c; mfMatrixData[3] = d;
mfMatrixData[4] = e; mfMatrixData[5] = f; mfMatrixData[6] = g; mfMatrixData[7] = h;
mfMatrixData[8] = i; mfMatrixData[9] = j; mfMatrixData[10] = k; mfMatrixData[11] = l;
mfMatrixData[12] = m; mfMatrixData[13] = n; mfMatrixData[14] = o; mfMatrixData[15] = p;
}
()関数は次のようになります。次のように
mMatRotate = new cMatrix4(
mvRight.mX, mvUp.mX, mvForward.mX, 0.0f,
mvRight.mY, mvUp.mY, mvForward.mY, 0.0f,
mvRight.mZ, mvUp.mZ, mvForward.mZ, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f);
実際の行列が定義されている次のように回転軸は、回転行列に入れています
最終的な変換は次のようになります。
私はこんなことに固執しています。どんな提案も役に立ちます。