Zunehmend übernimmt die 3D-Industrie den Standard von Mikktspace zur Berechnung des Tangentenraums für normale Abbildungen und andere Effekte, die auf einer genauen und konsistenten Berechnung des Tangentenraums von einer Anwendung zur anderen beruhen. Blender, xNormal, Unity, Substance Painter und Unreal Engine sind nur einige Beispiele, die jetzt Mikttspace verwenden. Ich persönlich versuche, meine eigenen Projekte neu zu codieren, um diesen Standard ebenfalls zu übernehmen.
Es gibt jedoch nur sehr wenige Ressourcen zur Funktionsweise von Mikktspace, da es sich um eine relativ neue Sache handelt. Die wenigen Ressourcen, die es gibt, sind in der Regel detailarm und sehr technisch, nicht sehr benutzerfreundlich zu verstehen, oder es wird davon ausgegangen, dass der Codierer über einen bestimmten Wissensstand verfügt, der etwas über dem durchschnittlichen Neuling liegt, der gerade erst anfängt und die Dinge genauer erklärt werden muss.
Ich suche nach einer klaren Erklärung, wie Mikktspace funktioniert und wie es implementiert wird, mit einer einfachen Erklärung, wie Mathematik und Code auf eine Weise funktionieren, die nicht nur auf eine Sprache beschränkt ist.
Nehmen wir zum Beispiel an, ein Programmierer hat ein Netzobjekt mit einem Index von Eckpunkten, die jeweils eine Position, eine Normal- und eine UV-Koordinate enthalten, sowie eine Liste von Dreiecken, die auf diesen Index verweisen.
Zum Beispiel:
Vertex
: {XYZ NX NY NZ ST}VertexIndex
: Eine Liste vonVertex
Triangle
: {V1 V2 V3} (in der richtigen Wicklungsreihenfolge für die normale Richtung)TriangleList
: Eine Liste vonTriangle
Wie würde man in einfachen Worten vorgehen, um pro Scheitelpunkt einen Tangentenvektor (TX TY TZ) und einen Bitangensvektor (BX BY BZ) für jeden Scheitelpunkt auf eine Weise zu berechnen, die Mikktspace entspricht?
Antworten:
Dieses Projekt enthält mehr Code:
Dieses https://github.com/teared/mikktspace-for-houdini/tree/master/source
Informationen zu normalen Tangentenraumkarten finden Sie auch hier:
https://archive.blender.org/wiki/index.php/Dev:Shading/Tangent_Space_Normal_Maps/ http://image.diku.dk/projects/media/morten. mikkelsen.08.pdf
Andere Informationen über die normalen Karten des Tangetenraums (Mikktspace) sind nicht sehr klar.
Eine kurze Erklärung zu den Methoden ist sehr lang und daher habe ich die beiden obigen Links eingefügt, um auf die gute Erklärung zu Tangentenraum-Normalkarten zu verweisen.
Hinweis: Blender gibt auch Tipps, warum Sie diese Methode nicht verwenden sollten.
Ich hoffe das war hilfreich :)
quelle