J'ai la matrice suivante dans un jeu que je fais de l'ingénierie inverse pour voir comment cela fonctionne.Obtenir des angles à partir de ModelViewMatrix
j'ai réussi à capturer cette matrice lorsqu'un modèle est rendu:
0.999971, 0.003148, -0.006994, 0.000000
0.000000, 0.911863, 0.410494, 0.000000
0.006903, -0.410485, 0.911844, 0.000000
-25014.388672, 11944.956055, -19475.357422, 1.000000
j'ai commencé à calculer l'angle à l'aide de ce qui suit:
Point CalculateRotatation(float ModelView[16])
{
Point Result;
Result.X = atan2(ModelView[9], ModelView[10]) * (180/PI);
Result.Y = atan2(-ModelView[8], ModelView[9]) * (180/PI);
Result.Z = atan2(ModelView[4], ModelView[0]) * (180/PI);
return Result;
}
Je suivais: http://db-in.com/blog/2011/04/cameras-on-opengl-es-2-x/
Je Je ne sais pas si je le fais correctement. Le jeu n'utilise pas OpenGL-ES mais je ne suis pas sûr que cela compte. Est-ce que l'un d'entre vous peut me dire si je suis sur le bon chemin ou si ma fonction Calculer est correcte? La valeur Y semble être incorrecte. Je sais qu'il y a beaucoup de choses comme ça et j'ai regardé à travers eux mais ils ne semblent pas faire ce que j'ai. Ils utilisent des produits scalaires et des produits croisés. J'ai juste besoin de confirmation ou d'un peu d'aide.
EDIT: Je sais ceci:
Je sais que les calculs pour les rotations X et Y sont corrects. Si je change la vue de mon personnage de gauche à droite, le Z augmente/diminue. Si je change la hauteur de vue de mon personnage, le X augmente/diminue. Y mais je ne sais pas si elle est juste ou comment l'obtenir .. J'ai ce schéma:
connaissez-vous le modèle et la matrice de vue? – yngccc
Assurez-vous de bien vérifier la colonne majuscule/rangée majeure, c'est toujours un endroit pour les écarts. –
Je ne connais pas les deux matrices séparément. J'ai mis à jour OP avec tout ce que je sais à coup sûr. – Brandon