J'aimerais connaître les informations suivantes:
- Que sont-ils?
- Exemple d'utilisation dans le développement de jeux (la zone dans laquelle ils sont utilisés)
A propos des types de vecteurs suivants:
Normal
Tangent
Binormal
Une simple explication centrée sur le développement du jeu suffirait.
Réponses:
De manière générale, un vecteur Normal représente la direction pointant directement "sortie" d'une surface, ce qui signifie qu'il est orthogonal (à un angle de 90 degrés) avec tout vecteur coplanaire avec (dans le cas d'une surface plane) ou tangent à (dans le cas d'une surface non plane) la surface en un point donné.
Un vecteur tangent est généralement considéré comme un vecteur qui existe dans le plan de la surface (pour une surface plane) ou qui est tangent à un point de référence d'une surface courbe (c'est-à-dire si un plan plat a été construit avec la même normale à partir du point de référence , le vecteur tangent serait coplanaire avec ce plan).
Le concept de vecteur binormal est un peu plus complexe. en infographie, il s'agit généralement d'un vecteur Bitangent (référence ici ), qui est en réalité le "autre" vecteur tangent de la surface, qui est orthogonal au vecteur Normal et au vecteur Tangent choisi.
En ce qui concerne leur calcul, cela varie en fonction de la complexité de la surface et du degré de précision souhaité (dans certains cas, comme avec les shaders lisses, il est plus souhaitable de calculer une normale pour une surface approximée, lorsque l’information réelle pour une surface n’est pas présente), mais il existe plusieurs formules généralisées données ici .
Pour ce qui est de l'endroit où ils se produisent, la réponse est partout . Les vecteurs normaux sont utilisés pour positionner les caméras et les objets dans l’espace 3D, pour déterminer les trajectoires, les réflexions et les angles dans les calculs physiques, pour mapper les apparences et les textures sur des modèles 3D, pour déterminer les décalages de trajectoire de visée dans la programmation de l’intelligence artificielle, pour éclairer, ombrer et colorer des points sur une surface par rapport aux lumières, à la caméra, à d'autres objets, etc. C’est peut-être l’une des informations les plus utiles à disposer dans un environnement 3D, et ils sont même extrêmement utiles en 2D.
la source
Les vecteurs normaux sont généralement utilisés pour les calculs d'éclairage. C'est un vecteur censé être perpendiculaire à la surface et approché par les sommets d'un maillage. Les normales sont définies à chaque position du sommet, mais peuvent être calculées différemment en fonction de la manière dont la lumière doit être réfléchie à ce sommet ou de ce que vous voulez faire avec vos calculs de lumière dans le shader.
Les vecteurs tangents et binormaux sont des vecteurs perpendiculaires entre eux et le vecteur normal décrivant essentiellement la direction des coordonnées de texture u, v par rapport à la surface que vous essayez de restituer. En règle générale, elles peuvent être utilisées parallèlement à des cartes normales, ce qui vous permet de créer des détails d'éclairage de sous-surface adaptés à votre modèle (bosses).
Il existe évidemment d'autres moyens d'utiliser ces vecteurs et je viens de décrire leur utilisation moyenne. Pour plus d'informations techniques, je vous suggère de prendre un livre sur l'infographie ou d'explorer quelques articles sur Internet. Il existe de nombreuses informations à ce sujet.
la source
La différence entre la tangente et le binormal est moins nette sur les surfaces, mais cela ne devrait pas être trop surprenant - le binormal a été défini à l'origine non pas pour les surfaces, mais pour les courbes , où le concept est beaucoup plus logique (et où il vit réellement). «normal» en ce sens qu’il est orthogonal à la direction du mouvement, d’où son nom). Pour être plus précis, étant donné une courbe d’espace de la forme p = V (t) = (V x (t), V y (t), V z (t)), puis la tangente - qui est un vecteur pointant dans la direction du mouvement - est donnée par T u = dp / dt = (dV x / dt, dV z / dt, dV z/ dt). (J'utilise l'indice ici pour distinguer le mot 'non normalisé' puisque je n'ai pas mon MathJax ici.) Ensuite, la vitesse (instantanée) le long de la courbe est simplement s = | T u |, la longueur du vecteur tangent, et le vecteur tangent «normalisé» est simplement T = T u / s.
Alors le vecteur normal à la courbe est la dérivée du vecteur tangent normalisé dans le temps, N u = dT / dt; la raison pour laquelle la tangente normalisée est utilisée ici est de garder la vitesse le long de la courbe de fausser le vecteur normal - vous pouvez montrer qu'avec cette définition, nous avons toujours TN u = 0. Notez que N u n'est pas nécessairement un vecteur unitaire. , pas plus que tu n'est; en fait, sa magnitude k = | N u | est la courbure (instantanée) de la courbe au point donné et le point p + N u est le centre du cercle dit osculant (au point donné). La normale normalisée est alors juste N = N u/ k, et la bitangente B est le produit croisé B = TxN; Puisque T et N sont tous deux des vecteurs unitaires orthogonaux, B est également un vecteur unitaire et (T, N, B) est un cadre orthogonal.
Notez que par cette définition, le «binormal» d’une courbe est plus proche de ce que nous appelons la normale à une surface (c’est la normale au plan «local» de la courbe) et la normale à une courbe est plus proche de ce nous pensons que le bitangent à une surface.
(Malheureusement, cette image ne rend pas vraiment justice au concept, mais c'est le meilleur que j'ai pu trouver sur le Web et je ne peux pas construire facilement la mienne ...)
la source