Come funziona Mikktspace per il calcolo dello spazio tangente durante la normale mappatura?


8

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 di Vertex
  • Triangle: {V1 V2 V3} (nell'ordine di avvolgimento corretto per la direzione normale)
  • TriangleList: Una lista di Triangle

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?


È troppo difficile? Chiunque può provarlo se sente di poter dare una risposta. Anche solo una breve spiegazione di ciò che differisce specificamente dalla tecnica di Mikktspace alla tecnica generale dei calcoli dello spazio tangente?
Grado

Risposte:


3

C'è più codice per quel progetto:
https://github.com/teared/mikktspace-for-houdini/tree/master/source

Inoltre puoi trovare informazioni sulle mappe normali dello spazio tangente qui:
https://archive.blender.org/wiki/index.php/Dev:Shading/Tangent_Space_Normal_Maps/ http://image.diku.dk/projects/media/morten. mikkelsen.08.pdf

Altre informazioni sulle mappe normali dello spazio groviglio (Mikktspace) non sono molto chiare.

Una breve spiegazione dei metodi è molto lunga e quindi ho incluso i due link sopra per fare riferimento alla buona spiegazione delle mappe normali dello spazio tangente.

Nota: Blender dà anche consigli sul perché non usare questo metodo.

Spero sia stato utile :)


1
Penso che dovresti mettere alcune informazioni (una sorta di introduzione) a parte i soli collegamenti. Non sarebbero molto utili se un giorno diventassero 404.
Aistis,

Verissimo, buona idea Aistis. Ma puoi anche scaricare un sito Web se lo desideri.
Tripl3Fac3

Accetto questa risposta come la risposta corretta perché Tripl3Fac3 mi è stato di grande aiuto personalmente e le informazioni che Tripl3Fac3 ha fornito nei link riassumono praticamente tutte le migliori risorse collettive su questo argomento così come sono attualmente.
Grady

1
Il link pdf funziona bene per me @Fire
Tripl3Fac3

1
Questa risposta verrebbe immediatamente eliminata in caso di overflow dello stack. È sorprendente che non sia stato eliminato qui. Questa non è una risposta Sono alcuni link. I collegamenti possono essere lasciati nei commenti o utilizzati per aumentare una risposta ma senza una vera spiegazione nella domanda stessa non è una risposta e dovrebbero essere contrassegnati ed eliminati come "non una risposta"
gman
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.