3D業界では、あるアプリケーションから別のアプリケーションへの接線空間の正確で一貫した計算に依存する法線マッピングやその他の効果の接線空間を計算するために、Mikktspaceの標準がますます採用されています。Blender、xNormal、Unity、Substance Painter、Unreal Engineは、現在Mikttspaceを使用していると考えることができるほんの一部です。私は個人的に、この標準を採用するために自分のプロジェクトを再コーディングすることも試みています。
しかし、Mikktspaceは比較的新しいものであるため、その動作に関するリソースはほとんどありません。どんな小さなリソースでも、通常は詳細が少なく、非常に技術的であり、ユーザーフレンドリーではありません。または、コーダーが特定のレベルの知識を持っていると想定しています。
1つの言語だけに限定されない方法で数学とコードがどのように機能するかについての簡単な説明とともに、Mikktspaceの仕組みとその実装方法についての明確な説明を探しています。
例として、プログラマが頂点のインデックスを持つメッシュオブジェクトを持っているとします。頂点にはそれぞれ、位置、法線とUV座標、そのインデックスを参照する三角形のリストが含まれます。
例えば:
Vertex
:{XYZ NX NY NZ ST}VertexIndex
: のリストVertex
Triangle
:{V1 V2 V3} (法線方向の正しい巻き順)TriangleList
: のリストTriangle
簡単に言えば、各頂点のMikktspaceに準拠した方法で、頂点ごとに正接ベクトル(TX TY TZ)と正接ベクトル(BX BY BZ)を計算するにはどうすればよいでしょうか。