Je suis assez nouveau dans le développement 3D de tous types, néanmoins les jeux. En lisant des tutoriels et des exemples, je trouve que les coordonnées X / Y / Z semblent un peu en arrière que ma première supposition.
J'avais imaginé que si une personne se promenait dans un champ, sa position X / Y changerait et si elle devait sauter ou monter ou descendre une colline, alors sa position Z changerait. Mes hypothèses semblent fausses parce que marcher autour d'un champ semble changer X / Z et sauter ou monter / descendre une colline modifie le Y.
1) Mes observations sont-elles correctes? La 3D est nouvelle pour moi et je ne pense peut-être pas aux choses correctement.
2) Quelle est la logique derrière le mouvement horizontal étant X / Z et le mouvement vertical étant Y?
3) Serais-je si mal d'utiliser X / Y comme mouvement horizontal et Z comme mouvement vertical dans XNA Framework?
la source
Réponses:
Vos hypothèses ne sont pas fausses: chaque moteur traite ces coordonnées différemment. D'une manière générale, X est presque toujours l'axe Est-Ouest, mais que Y ou Z soit l'axe Altitude a tendance à varier. Si je comprends bien, Quake 3, le moteur source et le moteur Torque ont tous Z comme place. Il en va de l'outil de modélisation 3DS Max. Ce n'est pas rare.
Il est logique d'avoir un système de coordonnées qui est ordonné grossièrement par ordre décroissant d'importance, de sorte que l'aplatissement d'une représentation en moins de dimensions soit plus facile à comprendre. Par exemple, si votre jeu est défini sur une carte de hauteur 2D, il est logique que Z soit `` vers le haut '', car alors vos coordonnées X et Y dans la carte du monde 3D directement aux coordonnées X et Y sur la carte de hauteur. D'un autre côté, si vous pensez principalement en termes de rendu (et de nombreux développeurs de moteurs de jeu le font), vous êtes habitué à ce que X et Y soient les coordonnées de l'écran, donc l'ajout d'un 3e axe va naturellement à l'intérieur ou à l'extérieur de l'écran.
Utilisez ce qui est le plus simple pour vous, mais sachez que tout choix est arbitraire et que vous devrez peut-être convertir entre eux et utiliser plusieurs systèmes de coordonnées dans un même programme.
la source
Imaginez-vous en regardant un morceau de papier tendu devant vous avec un graphique dessus, les axes sont généralement étiquetés X en bas et Y en haut de la verticale; cela laisse Z être l'axe extérieur le long du sol.
Ce n'est qu'une convention, mais il est beaucoup utilisé dans les graphiques où nous considérons Z comme la profondeur de la scène.
Dans d'autres domaines comme la CAO, votre version serait plus courante.
la source
L'idée est que les axes x et y restent les mêmes - y est «en haut» à l'écran et x est en travers.
z - la troisième dimension, se projette à nouveau dans l'écran (en ignorant ici les problèmes de neutralité). En 3 dimensions, cela devient un peu étrange, mais pour positionner les choses dans l'espace d'écran, cela a plus de sens.
3) Vous pouvez si vous le souhaitez, mais ce serait douloureux et maladroit. Je vous conseillerais simplement de vous habituer aux projets Z dans / hors du moniteur.
la source
1) Oui, vos observations sont correctes.
2) Le système de coordonnées XYZ global standard a du sens lorsque vous pensez en termes de tir à la première personne, lorsque vous regardez à travers les yeux d'un personnage de la scène avec une matrice de transformation vierge (identité). Comme lorsque vous dessinez un système de coordonnées sur une feuille de papier, X pointe vers la droite et Y vers le haut. Selon la règle de la main droite (x-> pouce, y-> index, z-> majeur), Z pointe vers vous.
3) Ce ne serait pas faux, mais ce serait un détournement des normes. Il y a trois problèmes auxquels je peux penser en ce moment: (a) Disons qu'un jour vous voulez utiliser une bibliothèque de physique qui utilise le cadre de coordonnées standard. Si vous n'avez pas suivi la norme, vous devez maintenant penser à la transformation qui vous emmène de votre monde vers le monde de la physique. Peut devenir ennuyeux lorsque vous souhaitez corriger un bug. (b) Lorsque vous voulez partager du code avec quelqu'un, ou amener quelqu'un pour aider au développement, il doit s'habituer à votre convention. (c) Lorsque vous utilisez des modèles 3D standard, vous devez toujours avoir une transformation au-dessus d'eux pour les empêcher de regarder de côté.
Maintenant, pour ajouter à la question 2, il est tellement utile de penser à X, Y et Z comme non seulement trois lettres, mais comme à droite, vers le haut et vers l'arrière. Chaque personnage de la scène a un système de coordonnées local qui lui est attaché, et dans leurs cadres de coordonnées locaux, X a toujours raison, Y est en haut et Z en arrière. Une fois que vous avez cela, vous pouvez maintenant donner un sens aux vecteurs que vous imprimez ou écrire vos algorithmes d'une manière logique. Disons que vous avez deux caractères A et B et que vous voulez faire quelque chose si l'un d'eux est face à l'autre. Vous pouvez simplement trouver l'emplacement de B dans le cadre de coordonnées de A (Ta ^ -1 * p_b), regardez le vecteur que vous obtenez et voyez si Z (en arrière) est négatif et X (à droite) et Y (en haut) sont petits, parce que ce vecteur vous indique combien en arrière, à droite et en haut B est par rapport à A.
la source