Perché le mappe normali dello spazio tangente non sono completamente blu?


11

Perché le mappe normali non sono solo blu? Penserei che le mappe normali dovrebbero essere prevalentemente di colore blu perché la componente Z della normale è rappresentata dal blu. Le normali puntano fuori dalla superficie nella direzione Z, quindi dovremmo vedere il blu come il colore predominante poiché la componente Z è dominante.

Per definizione lo spazio tangente è perpendicolare alla superficie. In qualsiasi momento dovremmo avere la normale che punta sempre nella Z (direzione blu) senza X (direzione rossa) o Y (direzione verde). Quindi la mappa normale (poiché è una "mappa normale") dovrebbe avere il colore delle normali che è solo blu (R = x = 0, G = y = 0, B = z = 1) senza sfumature nel mezzo.

Ma le mappe normali non sono così, e hanno gradienti di sfumature in esse. Perché è così?

Risposte:


19

Lo spazio tangente è perpendicolare alle normali geometriche - le normali interpolate dei vertici dei poligoni. La mappa normale fornisce le normali di ombreggiatura , relative allo spazio tangente definito dalle normali geometriche. Quando le normali di ombreggiatura non sono le stesse di quelle geometriche, ovvero perché si dispone di una trama superficiale dettagliata con caratteristiche che non sono modellate nella geometria, la mappa normale si discosta dal "blu piatto" (RGB 128, 128, 255).

Questo è un po 'l'intero punto delle normali mappe: sono il modo in cui ottieni la forma dettagliata e su piccola scala di una superficie da rappresentare con l'illuminazione e l'ombreggiatura anche se non hai modellato tutti quei piccoli dettagli con i poligoni.


1
Per elaborare, le mappe normali vengono generalmente eseguite nello spazio tangente poiché questo rimane accurato quando la mesh è animata, mentre ad esempio le mappe normali dello spazio modello richiederebbero che le mappe normali vengano animate in tandem con qualsiasi animazione possiate avere (il che sarebbe particolarmente complicato con scheletri e ragdoll arbitrari, per esempio). Per la geometria statica, non vi è alcun motivo tecnico per cui non si possa avere una mappa normale spaziale, non del tutto blu, che semplifichi leggermente il pixel shader (a scapito della coerenza, richiedendo più shader e, a sua volta, richiedendo più shader modifiche di selezione).
MaulingMonkey,

1
(anche i normali dati delle mappe in genere non possono essere riutilizzati in più punti su una mesh se nello spazio modello)
MaulingMonkey

+1; il para finale è la chiave della domanda: se la superficie su cui si trovavano doveva essere completamente piatta, sarebbero blu. Se si suppone che la superficie abbia una certa rugosità, la normale mappa modella tale rugosità senza la necessità di specificare una geometria aggiuntiva.
Maximus Minimus,

2

La semplice risposta è che è a causa della differenziazione della gamma.

Le normali hanno un intervallo compreso tra -1,0 e 1,0, per ciascun componente (x, y, z). La mappa normale, memorizzata come immagine RGB a 24 bit, d'altra parte, ha un intervallo da 0 a 255 per ciascun componente.

Ciò significa che tutti i componenti che erano zero diventano 127,5 (il centro esatto) nella mappa normale (che viene arrotondata a 128).

Il vettore normale (0,0,1) diventa (128,128,255) nell'immagine normale della mappa, che è un colore violaceo, piuttosto che blu puro (0,0,255).

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.