De plus en plus, l'industrie 3D adopte la norme de Mikktspace pour calculer l'espace tangent pour une cartographie normale et d'autres effets qui reposent sur un calcul précis et cohérent de l'espace tangent d'une application à une autre. Blender, xNormal, Unity, Substance Painter et Unreal Engine ne sont que quelques-uns dont je peux penser qui utilisent maintenant Mikttspace. J'essaie personnellement de recoder mes propres projets pour adopter également cette norme.
Mais il y a très peu de ressources sur le fonctionnement de Mikktspace car c'est une chose relativement nouvelle. Le peu de ressources disponibles sont généralement rares sur les détails et très techniques, peu conviviales à comprendre, ou supposent que le codeur a un certain niveau de connaissances qui est un peu supérieur au débutant moyen qui commence juste à avoir besoin d'explications plus détaillées.
Je cherche une explication claire de la façon dont Mikktspace fonctionne et comment l'implémenter, avec une explication simple de la façon dont les mathématiques et le code fonctionnent d'une manière qui ne se limite pas à une seule langue.
Par exemple, supposons qu'un programmeur ait un objet maillé, avec un index de sommets, chacun avec une position, une coordonnée normale et UV, et une liste de triangles qui référencent cet index.
Par exemple:
Vertex
: {XYZ NX NY NZ ST}VertexIndex
: Une liste deVertex
Triangle
: {V1 V2 V3} (dans l'ordre d'enroulement correct pour la direction normale)TriangleList
: Une liste deTriangle
En termes simples, comment procéder pour calculer par sommet un vecteur tangent (TX TY TZ) et un vecteur bitangent (BX BY BZ) pour chaque sommet d'une manière conforme à Mikktspace?