È giunto il momento di dedicarmi ad un altro passaggio delicato: la creazione di uno shader sufficientemente realistico e credibile per il nostro sacchetto della spesa.
Inizialmente ho provato ad utilizzare shader classici e composizione di nodi molto basilari quindi ho provato ad utilizzare i nodi diffuse e translucent ma il risultato finale era ben lontano dal raggiungere il livello di realismo desiderato...
Mi sono studiato un po' il materiale campione da utilizzare come modello ed ho cercato di replicare il comportamento a partire da qualcosa di simile già utilizzato in precedenza.
Osservando bene il sacchetto reale si nota subito una serie di caratteristiche peculiari:
- il sacchetto (da quando siamo passati dalla plastica a questo materiale riciclabile) non è più lucido e quindi con un alto livello di specularità
- il materiale è tendenzialmente diffuse anche se per via delle sfaccettature che si generano a causa delle pieghe, alcune parti (superfici) del sacchetto riflettono maggiormente la luce ambiente di altre risultando molto più bianche e opache
- le facce (superfici) più in ombra o rivolte maggiormente verso l'osservatore (telecamera) risultano meno illuminate e permettono di intravedere il contenuto del sacchetto attraverso di esse, anche se non in modo nitido e ben definito
L'approccio quindi che ho utilizzato per simulare questi comportamenti è stato di unire con un mix shader node uno shader di tipo glass ed un principled.
Giocando con la roughness del vetro ho ridotto la visibilità attraverso il sacchetto fino ad un livello soddisfacente e per miscelare i due shader in modo da dare priorità alla trasparenza sulle sulle facce frontali e priorità alla componente diffusa sulle facce inclinate ho utilizzato un layer weight node prendendo l'informazione dall'uscita facing.
Dopo un po' di tuning dei parametri sono arrivato a un risultato molto soddisfacente, ad onor del vero ben superiore alle aspettative iniziali per un motore di rendering Real Time, ma mancava ancora un piccolo dettaglio...
Osservando le foto del modello originale era evidente che il sacchetto fosse quasi interamente ricoperto di pieghe dovute all'usura o all'utilizzo del sacchetto.
Queste pieghe ad una prima osservazione non erano caratteristiche di una simulazione di tipo tessuto perché in qualche modo avevano bordi netti e distribuzione casuale, creavano delle facce quasi geometriche di sicuro non simili a quanto ci si aspetterebbe su un tessuto quindi non ho provato a replicarle con la simulazione.
In prima battuta ho pensato di scolpire le pieghe manualmente, idea che ho abbandonato quasi immediatamente perché sono abbastanza sicuro di non disporre delle capacità per farlo. Quindi ho scelto un approccio molto più stupido: ho cercato una texture di un materiale che avesse le pieghe adeguate a quelle del sacchetto.
Alla fine ho trovato una texture che replica il comportamento della carta quando è un po' spiegazzata ed a prima vista le pieghe della carta risultano molto simili a quelle del sacchetto della spesa, quindi ho applicato la mappa delle normali all'ingresso del noto layer weight in modo da influenzare anche il mix tra i due tipi di shader.
Diciamo pure che il sacchetto è da considerarsi pronto a meno di un bel logo inventato da appiccicarci sopra!