Come riprodurre il Bump Node?

Oct 20 2020

È possibile riprodurre questo nodo proceduralmente?

Vorrei saperne di più su come funzionano i nodi di Blender, sto facendo molte ricerche e sono molto curioso di questo nodo, incluso il nodo "Mappa normale"

È qualcosa di molto complicato?

Faccio una piccola modifica alla domanda per essere più specifico. Sto cercando di capire come riprodurre questo nodo evitando l'uso di questo nodo. Non so se sia possibile, ma nei nodi di Blender quasi tutto sembra possibile

Risposte

6 Nathan Oct 20 2020 at 04:00

Non è possibile riprodurre un nodo bump tramite i nodi componenti. La ragione di ciò è che un nodo di rilievo non si limita a cercare il valore di rilievo del campione in corso di valutazione, ma i valori di rilievo di campioni adiacenti, al fine di generare una pendenza per il campione, che viene quindi tradotta in rotazione della normale . Quella parte difficile è: quanto dovrebbero essere quelle ricerche adiacenti? Non puoi guardare semplicemente spostando 1 pixel UV, perché potrebbe essere una distanza enorme o una distanza minuscola, a seconda della distanza, del FOV e della scala UV. (Per non parlare del filtraggio.) È necessario capire fino a che punto guardare, e farlo richiede qualcosa come i derivati ​​dello spazio sullo schermo (che sono probabilmente usati per Eevee, ma Cycles probabilmente fa qualcosa di diverso) per vedere quanto cambia UV rispetto a posizione mondiale.

Sfortunatamente, Blender non espone i derivati ​​dello spazio dello schermo ai suoi nodi. (Il che è onestamente un peccato, perché ci sono altre cose interessanti che puoi fare anche con i derivati ​​dello spazio dello schermo.)

Tuttavia, anche se questi non possono essere ricreati utilizzando solo i nodi di Blender, esistono molti ambienti in cui puoi giocare con esattamente come funziona il bump mapping. Se sei interessato a questo genere di cose, Unity è un ottimo posto per conoscere il rendering (rasterizzatore) e ci sono molti shader pubblici disponibili per lo studio.

La mappatura normale è leggermente diversa, perché non richiede alcun derivato dello spazio sullo schermo (tranne per determinare la tangente UV, se non lo si fornisce come dati di vertice, ma Blender ti fornisce gentilmente un nodo tangente, quindi non lo fai. Il modo in cui funziona è ruotando la normale verso o lontano dalla tangente sulla base di + o - rosso, e verso o lontano dal binormale (un vettore unitario perpendicolare a entrambe le tangenti e il "grezzo" normale) sulla base di + o - verde. (Cos'è meno verde? I colori di una mappa normale sono in realtà vettori di unità rimappati, che esistono nello spazio da -1 a 1 per tutti i canali, rimappati nello spazio da 0 a 1 in modo che si adattino ai formati di immagine tipici. Ecco perché il colore di base di una mappa normale dello spazio tangente è il lilla: 0,5,0,5 rosso verde mappato effettivamente a 0,0 x, ye 1.0 blu mappato a 1,0 z.)

Se avessi una cottura di allungamento UV, potresti eseguire un bump proceduralmente, con altri nodi, supponendo che la tua mesh non si sia deformata , il che cambierebbe l'allungamento UV. Tuttavia, l'intera ragione per cui usiamo mappe normali dello spazio tangente è per supportare mesh deformanti. Se stavi lavorando con una mesh che non si è deformata, puoi anche usare una mappa normale dello spazio degli oggetti.

Le mappe normali dello spazio degli oggetti sono estremamente semplici: puoi semplicemente rimapparle in -1,1 spazio e trasformare il vettore da oggetto a mondo.

Va detto che non c'è nulla da guadagnare dal ricreare nessuno di questi nei nodi, tranne la comprensione , e tale comprensione potrebbe essere ottenuta molto più facilmente leggendo gli shader che implementano il bump mapping.