ich diesen Code in onDrawFrame in meinem Renderer schrieb:Modell Matrix trasformations OpenGL ES 2.0
[...]
setIdentityM(modelMatrix, 0);
translateM(modelMatrix, 0, 40f, 0f, 25f);
rotateM(modelMatrix, 0, 90f, 1f, 0f, 0f);
scaleM(modelMatrix, 0, 6f, 6f, 6f);
multiplyMM(MVPmatrix, 0, viewProjectionMatrix, 0, modelMatrix, 0);
myHouse1coords = myHouse1.getWorldCoords(modelMatrix); //myHouse1coords is an array
[...]
ich diesen Code verwenden, um die Trasformation ich auf meinem "Haus" beziehen sich auf die Spur zu kommen:
[...]
private final static float[] COORDINATES = { //x, y, z, r, g, b
0f, 0f, 0f, 1f, 0f, 0f, //bottom
2f, 0f, 0f, 0f, 1f, 0f, //dx
0f, 1f, 0f, 0f, 0f, 1f, //sx
2f, 1f, 0f, 1f, 1f, 1f //top
};
public float[] getWorldCoords(float[] matrix)
{
int i = 0;
float[] coordinates1 = new float[4];
float[] coordinates2 = new float[4];
float[] coordinates3 = new float[4];
float[] coordinates4 = new float[4];
do {
coordinates1[i] = COORDINATES[i];
i++;
} while (i < 3);
i = 0;
coordinates1[3] = 0f;
do {
coordinates2[i] = COORDINATES[i + 6];
i++;
} while (i < 3);
i = 0;
coordinates2[3] = 0f;
do {
coordinates3[i] = COORDINATES[i + 12];
i++;
} while (i < 3);
i = 0;
coordinates3[3] = 0f;
do {
coordinates4[i] = COORDINATES[i + 18];
i++;
} while (i < 3);
coordinates4[3] = 0f;
float[] finalCoordinates1 = new float[4];
float[] finalCoordinates2 = new float[4];
float[] finalCoordinates3 = new float[4];
float[] finalCoordinates4 = new float[4];
multiplyMV(finalCoordinates1, 0, matrix, 0, coordinates1, 0);
multiplyMV(finalCoordinates2, 0, matrix, 0, coordinates2, 0);
multiplyMV(finalCoordinates3, 0, matrix, 0, coordinates3, 0);
multiplyMV(finalCoordinates4, 0, matrix, 0, coordinates4, 0);
float[] coordinates = new float[16];
i = 0;
int j = 0;
do {
coordinates[i] = finalCoordinates1[j];
i++;
j++;
} while (j < 4);
j = 0;
do {
coordinates[i] = finalCoordinates2[j];
i++;
j++;
} while (j < 4);
j = 0;
do {
coordinates[i] = finalCoordinates3[j];
i++;
j++;
} while (j < 4);
j = 0;
do {
coordinates[i] = finalCoordinates4[j];
i++;
j++;
} while (j < 4);
Log.d("DRAGTESTRENDERER", "coords[4]" + coordinates[4]);
return coordinates;
}
[...]
Das Problem ist, dass, wenn ich diesen Code in der Logcat ausführen ich 12.0 als Ergebnis, als ob ich nur die Skalierungstransformation auf mein Haus angewendet, und ich verstehe nicht, warum, da ich übersetze und drehe es pr Ewig.