A propos de la transformation de coordonnées des modèles 3D
substance
Tout d’abord
Vous pouvez souvent voir des images 3D sur les écrans de télévision et les affichages dans les jeux, mais comment afficher des objets qui existent dans l’espace 3D, tels que des personnages et des bâtiments qui se déplacent à l’écran, sur un écran 2D ?
Dans les jeux 2D, il n’y a que des éléments bidimensionnels de « X et Y » comme valeurs de coordonnées, et l’affichage est également en 2D, donc si vous dessinez un objet en spécifiant la position des coordonnées de X et Y, vous comprendrez intuitivement comment il sera dessiné à quelle position.
Cependant, en 3D, ce n’est pas si facile. Comme son nom l’indique, la 3D est « 3 dimensions » et comporte trois coordonnées : « X, Y et Z ». Comme les coordonnées sont différentes de l’affichage en 2D, il n’est pas possible de dessiner l’objet tel quel.
Ensuite, ce qu’il faut faire est de « convertir des informations tridimensionnelles en informations bidimensionnelles ». C’est ce qu’on appelle communément une « transformation de coordonnées ». Gardez à l’esprit que cette transformation de coordonnées est essentielle pour la programmation 3D.
Il existe plusieurs types de transformations de coordonnées pour convertir la 3D en 2D, mais il existe trois principaux types de transformations de coordonnées gérées par les programmeurs : la « transformation du monde », la « transformation de la vue » et la « transformation de la projection ». Ici, nous allons expliquer tout ce qui concerne la transformation des coordonnées.
Systèmes de coordonnées pour gauchers et droitiers
En 3D, il existe deux systèmes de coordonnées, le « système de coordonnées gauche » et le « système de coordonnées droite », qui ont des orientations différentes pour chaque coordonnée, comme le montre la figure ci-dessous.
Direct3D utilisait principalement un système de coordonnées pour gaucher, mais il existe également des fonctions de calcul pour les systèmes de coordonnées pour droitier. Cependant, XNA ne fournit que des méthodes de calcul pour les systèmes de coordonnées droitiers. Cela semble être en accord avec le fait que d’autres applications utilisent souvent des systèmes de coordonnées pour droitiers.
Tous les conseils XNA sur ce site utilisent le système de coordonnées pour droitier.
Système de coordonnées local (système de coordonnées du modèle)
Chaque modèle possède un système de coordonnées centré sur l’origine. Lorsque l’on crée un modèle avec un logiciel de modélisation, je pense qu’il est plus facile de comprendre si vous imaginez le créer avec l’origine comme centre.
Système de coordonnées mondial
Le système de coordonnées universelles vous permet de placer le modèle n’importe où. Si vous ne faites rien dans cette transformation du monde, le modèle sera placé à l’origine de la même manière que les coordonnées locales. Le placement ne consiste pas seulement à se déplacer à partir de l’origine, mais aussi à faire pivoter et à mettre à l’échelle.
Afficher le système de coordonnées
Une fois que vous avez placé le modèle en coordonnées mondiales, vous avez besoin d’informations sur l’endroit où vous regardez et où vous regardez dans l’espace 3D. C’est ce que l’on appelle les « transformations de vue ». Les transformations de vue sont généralement représentées sous forme de caméras.
Les paramètres requis pour cette conversion sont « position de la caméra », « point d’intérêt de la caméra » et « direction de la caméra vers le haut ». L’orientation de la caméra est déterminée par ces trois paramètres. La figure ci-dessous montre l’appareil photo d’un point de vue tiers.
La figure ci-dessous est en fait vue du point de vue de l’appareil photo avec la disposition montrée dans la figure ci-dessus (à ce stade, nous n’avons pas encore converti les coordonnées à l’écran, il ne s’agit donc que d’une image).
Dans l’explication précédente, il semble que la caméra soit positionnée et que les coordonnées soient transformées, mais dans le calcul réel, les coordonnées mondiales sont converties en fonction de la position et de l’orientation de la caméra. Par conséquent, l’origine est la position de la caméra, comme le montre la figure ci-dessous.
Système de coordonnées projectif
Une fois que vous avez décidé à partir de quelle position visualiser l’espace 3D, l’étape suivante consiste à traiter l’affichage des « petits objets qui sont loin » et des « grandes choses qui sont à proximité ». C’est ce qu’on appelle une transformation projective. Il existe deux méthodes de transformation de projection, la « projection en perspective » et la « projection orthographique », mais l’image couramment utilisée « projection en perspective » est la suivante.
La projection en perspective utilise les paramètres suivants : Angle de vue, Rapport d’aspect, Position du clip avant et Position du clip arrière. La zone étiquetée « frustum » dans la figure ci-dessus apparaîtra enfin à l’écran.
« Angle de vision » spécifie la plage de vision visible depuis l’appareil photo. Diminuer l’angle permet d’effectuer un zoom avant, tandis que l’augmentation de l’angle effectue un zoom arrière. L’angle de vue sera la valeur verticale du frustum.
Le rapport hauteur/largeur est utilisé pour déterminer l’angle de vue horizontal, tandis que l’angle de vision est un angle vertical. L’angle horizontal est généralement déterminé par « l’angle de vision × le rapport hauteur », et le rapport hauteur/largeur est essentiellement la valeur de la « largeur ÷ de la hauteur » de l’écran que vous essayez d’afficher. Si vous modifiez cette valeur, l’objet 3D affiché semble s’étirer horizontalement ou verticalement.
La position du clip avant et la position du clip arrière sont spécifiées pour déterminer si l’objet est affiché à l’avant ou à l’arrière. En raison de la nature de l’ordinateur, il n’est pas possible d’afficher jusqu’à l’infini, nous allons donc fixer une limite. Cette valeur affecte également la précision de la mémoire tampon Z, il n’est donc pas recommandé de l’inclure dans la zone de dessin au-delà de la plage qui n’a pas besoin d’être affichée.
L’objet transformé en perspective est converti en un espace semblable à celui ci-dessous. Les objets qui étaient proches de la caméra sont zoomés et les objets qui étaient éloignés sont réduits.
Ceci est illustré dans un schéma facile à comprendre ci-dessous.
Si vous le regardez réellement du point de vue de l’appareil photo, il ressemble à ci-dessous.
Une autre méthode de transformation projective est la projection orthographique, qui projette une zone visible telle que celle ci-dessous. Comme la largeur et la hauteur sont constantes quelle que soit la profondeur, la taille de l’objet ne change pas avec la profondeur.
Système de coordonnées de l’écran
Après la transformation de la projection, il est converti aux coordonnées de l’écran réel. Même s’il s’agit d’un écran, la position et la portée de l’affichage changent en fonction des paramètres de la fenêtre d’affichage définis sur l’appareil. Cependant, dans le cas des jeux, les coordonnées du client de la fenêtre sont souvent la fenêtre d’affichage telle qu’elle est, donc je ne pense pas que vous ayez trop à vous inquiéter.
Les coordonnées de l’écran (0, 0) sont converties à partir des coordonnées de projection (-1, 1, z). De même, les coordonnées de l’écran (largeur, hauteur) sont converties à partir des coordonnées de projection (1, -1, , z).