Sempre più l'industria 3D sta adottando lo standard di Mikktspace per il calcolo dello spazio tangente per la mappatura normale e altri effetti che si basano su calcoli accurati e coerenti dello spazio tangente da un'applicazione all'altra. Blender, xNormal, Unity, Substance Painter e Unreal Engine sono solo alcuni dei quali mi viene in mente che ora usano Mikttspace. Sto personalmente cercando di ricodificare i miei progetti per adottare anche questo standard.
Ma ci sono pochissime risorse su come funziona Mikktspace in quanto è una cosa relativamente nuova. Quelle poche risorse ci sono, di solito sono scarse nei dettagli e molto tecniche, non molto facili da capire, o presumono che il programmatore abbia un certo livello di conoscenza che è un po 'sopra il novizio medio appena all'inizio chi ha bisogno di cose spiegate più attentamente.
Sto cercando una chiara spiegazione di come funziona Mikktspace e come implementarlo, con una semplice spiegazione di come la matematica e il codice funzionano in un modo che non è limitato a una sola lingua.
Per esempio, supponiamo che un programmatore abbia un oggetto mesh, con un indice di vertici, ciascuno con una posizione, una coordinata normale e UV e un elenco di triangoli che fanno riferimento a quell'indice.
Per esempio:
Vertex
: {XYZ NX NY NZ ST}VertexIndex
: Una lista diVertex
Triangle
: {V1 V2 V3} (nell'ordine di avvolgimento corretto per la direzione normale)TriangleList
: Una lista diTriangle
In termini semplici, come si farebbe per calcolare per vertice un vettore tangente (TX TY TZ) e un vettore bitangente (BX BY BZ) per ciascun vertice in un modo conforme a Mikktspace?