Comment fonctionne Mikktspace pour calculer l'espace tangent pendant une cartographie normale?


8

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 de Vertex
  • Triangle: {V1 V2 V3} (dans l'ordre d'enroulement correct pour la direction normale)
  • TriangleList: Une liste de Triangle

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?


C'est trop dur? N'importe qui est le bienvenu s'il veut estimer pouvoir donner une réponse. Même juste une brève explication de ce qui diffère spécifiquement de la technique de Mikktspace à la technique générale des calculs d'espace tangent fera?
Grady

Réponses:


3

Il y a plus de code pour ce projet:
https://github.com/teared/mikktspace-for-houdini/tree/master/source

Vous pouvez également trouver des informations sur les cartes normales de l'espace tangent ici:
https://archive.blender.org/wiki/index.php/Dev:Shading/Tangent_Space_Normal_Maps/ http://image.diku.dk/projects/media/morten. mikkelsen.08.pdf

Les autres informations sur les cartes normales de l'espace tanget (Mikktspace) ne sont pas très claires.

Une brève explication sur les méthodes est très longue et j'ai donc inclus les deux liens ci-dessus pour faire référence à la bonne explication sur les cartes normales de l'espace tangent.

Remarque: Blender donne également des conseils sur les raisons de ne pas utiliser cette méthode.

J'espère que cela a été utile :)


1
Je pense que vous devriez mettre quelques informations (une introduction en quelque sorte) en dehors des liens seuls. Ils ne sont pas très utiles s'ils deviendraient un jour 404.
Aistis

Très vrai, bonne idée Aistis. Mais vous pouvez également télécharger un site Web si vous le souhaitez.
Tripl3Fac3

J'accepte cette réponse comme la bonne réponse parce que Tripl3Fac3 m'a été d'une grande aide personnellement, et les informations que Tripl3Fac3 a fournies dans les liens résument à peu près toutes les meilleures ressources collectives sur ce sujet dans sa forme actuelle.
Grady

1
Le lien pdf fonctionne bien pour moi @Fire
Tripl3Fac3

1
Cette réponse serait immédiatement supprimée en cas de débordement de pile. Il est surprenant qu'il n'ait pas été supprimé ici. Ce n'est pas une réponse. Ce sont des liens. Les liens peuvent être laissés dans les commentaires ou utilisés pour augmenter une réponse, mais sans explication réelle dans la question elle-même, ce n'est pas une réponse et doit être signalé et supprimé comme "pas une réponse"
gman
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.