Le système de coordonnées de Blender est différent de ce à quoi je suis habitué, dans la mesure où Z pointe vers le haut au lieu de Y. Quelle serait la manière la plus simple de convertir toutes les données du monde (pour que toutes les animations, coordonnées de texture, etc. fonctionnent toujours) pour que Y pointe vers le haut?
Clarification:
Les positions des objets sont définies comme des matrices, donc la simple commutation des informations de translation / rotation / échelle dans les matrices n'est pas une tâche triviale. (au moins cela ne me semble pas être une tâche triviale)
mathematics
blender
coordinates
Jari Komppa
la source
la source
Réponses:
Pourquoi ne pouvez-vous pas simplement faire la matrice de rotation pour l'orienter correctement la première partie de votre matrice mondiale?
Si vous souhaitez le corriger lors du chargement, créez la matrice de rotation pour l'orienter correctement (c'est-à-dire à 90 degrés autour de l'axe X). Appliquez ceci à tous les sommets, puis changez toutes les matrices existantes en (rotation * existante).
la source
Votez contre moi si je me trompe, mais je ne vois pas pourquoi les gens recommandent d'échanger y et z. Cela rendrait votre système de coordonnées droitier à gaucher. Essayez vous-même, permutez les y et z, et réorientez l'axe de sorte que x pointe vers la droite et y pointe vers le haut. Vous verrez que z pointe dans la direction opposée à son original (loin de l'écran). La bonne façon consiste à faire pivoter autour de l'axe des x, qui est de permuter y et z, puis inverser le signe du z final.
Je pense que la solution la plus simple est de construire vos modèles avec une valeur y en hausse.
la source
Comme le suggère le camarade Duck, vous pouvez simplement échanger Y et Z. Si vous avez besoin d'une matrice pour le faire, utilisez celle-ci:
ou en coordonnées homogènes
la source
Si votre matrice est:
Alors pourquoi pas:
Ou quelle que soit la méthode de swap que vous souhaitez.
la source
Lorsque vous chargez vos maillages avec le code de chargeur de mailles que vous utilisez, changez simplement les valeurs Z et Y. Le maillage sera ensuite chargé dans votre jeu dans l'espace de coordonnées approprié et vous pourrez faire ce que vous voudrez (appliquer des rotations, des traductions, etc.). C'est une situation similaire que j'ai eue avec 3DS Max.
la source