Question

Je construis un moteur 3D rapide pour un jeu que je développe.

Actuellement, je suis rotation des objets de manipulation 3D en rotation autour de l'axe global Y, X puis Z. Est-ce la bonne façon de le faire, ou devrais-je être des objets tournant autour de son axe local?

Ce qui recommandez-vous et pourquoi?

Si la méthode d'axe local est la matrice doivent être utilisés de manière correcte, un serait 3x3 ou 4x4 3D pour calculer les rotations correctement? Comment?

Était-ce utile?

La solution

4x4 matrices vous donner plus de flexibilité. Par exemple, vous pouvez concatenate plusieurs transformations (translation, rotation, etc.) à travers la multiplication de matrices.

Autres conseils

Qu'est-ce que vous essayez d'accomplir? Si vous voulez voir l'objet « spin », puis les rotations doivent être effectuées sur l'origine locale. D'autre part, rotation autour de l'origine globale fera l'objet « orbite » l'origine mondiale.

Regardez la discussion concernant l'ordre de transformation ici une illustration.

Il n'y a vraiment pas un ordre de rotation correcte . Si vous faites votre propre moteur de jeu, l'ordre est vraiment à vous.

Cependant, cela ne veut pas dire que vous ne pouvez pas choisir d'être compatible avec d'autres moteurs de jeu. Unité, par exemple, applique rotations Euler-angle de l'ordre Z, X, Y. ( ) Et je ne peux pas confirmer à 100%, mais mon expérience avec conduit Unity me croire qu'il utilise des axes globaux, et non local.

Si vous prenez l'approche mentionnée dans d'autres réponses et concaténer matrices de rotation 4x4, vous aurez probablement obtenir un comportement axe local.

Mais vraiment, si vous voulez éviter tous ces problèmes, vous devriez apprendre probablement quaternions ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top