Il colore delle normali renderizzate viene distorta?

Sep 03 2020

Sto cercando di eseguire il rendering dell'output normale del nodo della geometria, quindi riportarlo come texture proiettata dalla finestra. Ma quando lo faccio, l'immagine è molto diversa dall'output del socket originale:

Perché la mia immagine è diversa, quando è letteralmente solo un rendering della stessa cosa? Sono consapevole della gestione del colore che distorce il rendering. Ho provato a eseguire il rendering con diversi dispositivi di visualizzazione, trasformazioni di visualizzazione, sia .png che .exr, diversi spazi colore sul nodo della trama, disabilitando Salva come rendering, ecc.

Dalla mia comprensione, essere in Display Device: sRGB, Standard view transform, e quindi impostare il nodo texture su Linear o Non-Color Data dovrebbe funzionare, ma non è così. Cos'altro potrebbe succedere?

Risposte

2 lemon Sep 05 2020 at 16:07

Penso che la causa principale delle differenze sia il modo in cui i dati vengono codificati quando le normali sono state renderizzate inizialmente.

Se lo salvi in ​​jpg o png, i colori vengono codificati come numeri interi. Quindi questo porta ad alcuni valori arrotondati che non possono essere convertiti nei valori normali iniziali esatti.

Quindi puoi salvare questo file renderizzato con il formato OpenExr per mantenere le cose come valori float:

(il codec può essere "none" o "zip looseless" per la precisione, se necessario ... prova i codec a seconda di ciò che desideri, dimensione del file e precisione).

Il risultato può essere questo (non perfetto però):

Invece di usare png:

Inoltre, mantieni la texture dell'immagine come "non color" o "raw" e, come hai detto nella domanda, imposta "raw" e "non color" nella parte di gestione del colore.

Modifica: un'altra cosa che altera il rendering è l'anti aliasing. Se si utilizza Cicli, impostare il filtro pixel su box nella sezione film. Il rendering utilizzando la texture dell'immagine proiettata sulla finestra dovrebbe dare un risultato migliore.