Blender Italia forums ArtWork Work in Progress [test shader] Neve

Status della richiesta: Non è una richiesta di supporto

Taggato: , , ,

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Autore
    Post
  • Anfeo
    Partecipante
    #523056

    Ispirato da questo sito:

    http://www.shaders.xyz/

    dove si fanno contest sugli shader, ho deciso di provare in Blender. Dopo molti fallimenti ho preso spunto dal breakdown del vincitore del contest del sito sopra:
    https://www.artstation.com/artwork/92EJQ

    Questa è la schermata dei nodi:

     


    Harvester
    Moderatore
    #523059

    Ottimo risultato visivo Alfonso ma attento ai valori che utilizzi perché con tutti quei nodi Add Shader il principio di conservazione dell’energia è andato a farsi benedire. Su CG Cookie avevo visto questo tutorial di Kent Trammell.

    Anfeo
    Partecipante
    #523061

    Non  ho l’accesso all’area VIP, sai dirmi qualcosa di più su questa cosa della conservazione dell’energia?

    Pensavo che gli shader fossero semplicemente dei sistemi che riflettono la luce (o la emettono) a modo loro, cioè ognuno con una peculiarità. Non esiste il nodo Multiply perché quello che interessa di uno shader è la sua parte in luce, cioè con valori chiari.
    Lavorando di Add, uno va a pescare solo i valori chiari di uno shader e da questo puoi ricavare molti effetti, come ad esempio separare gli specular tra soft e hard, usare diversi livelli di SSS ecc…

     


    Harvester
    Moderatore
    #523066

    Il principio di conservazione dell’energia applicato al nostro caso significa che un materiale (shader) non dovrebbe emettere più luce di quella che riceve, cioè Riflessi Diffusi + Riflessi Speculari (per fare un caso molto semplice di materiale dielettrico non traslucente nè trasparente) <= 1 (ponendo che il raggio incidente abbia valore unitario). In pratica, per implementare questa condizione in Cycles devi usare il nodo Mix Shader (come specificato sul manuale).

    Si potrebbe anche usare il nodo Add Shader ma è più complicato del necessario anche se fattibile se conosci le formule da usare. Nel caso del materiale dielettico d’esempio il ragionamento è semplice: se la superficie ha riflessi totalmente diffusi allora non può averne di speculari e viceversa. In realtà è l’effetto Fresnel che media tra le due componenti in base all’angolo di osservazione, all’indice di rifrazione (IOR) del materiale ed alle proprietà microscopiche della superficie (roughness).

    Al di là del fatto che quello che conta è il risultato finale, usare un approccio più pragmatico non guasta specialmente ora che il PBR spopola (certo, se ti serve quel tipo di qualità di shading) ed il Disney’s Principled BSDF è ora incluso nelle versioni di sviluppo e quindi presumibilmente lo sarà anche nella prossima versione 2.79.

    Detto questo, gli shader in Cycles rappresentano solo specifici aspetti del comportamento delle superfici alla luce che vanno assemblati per ottenere uno shader completo.

    Nel caso della neve, osservando la sua superficie si notano alcune cose: 1) il valore di riflettività della superficie, colore o albedo, è tra i più alti in natura, ma non raggiunge comunque mai il 100% (quindi non sarà mai bianco puro); 2) la superficie è composta ma cristalli di neve e ghiaccio che riflettono e rifrangono la luce in modo complesso creando una trama complessa; 3) la luce subisce un effetto di dispersione sotto la superficie o Subsurface Scattering; 4) la luce può venire dispersa e trasmessa fino ad uscire dalla parte opposta (traslucentezza); 5) il fatto che sia composta da cristalli d’acqua implica la presenza di una certa quantità di riflessi speculari (Glossy BSDF); 6) poiché i riflessi speculari possono subire un’attenuazione a causa dellle micro asperità della superficie, ma possono anche rimbalzare più volte e venire riflessi, è opportuno l’uso dell’algoritmo Multiscatter GGX nello shader Glossy BSDF perché GGX considera solo il primo rimbalzo che statisticamente può risultare occluso.

    Queste sono solo alcune considerazioni di massima e scusa se mi sono dilungato troppo nella risposta.

    andcamp
    Moderatore
    #523068

    Dalla discussione:
    “più che riflessioni puntuali mi sa che la neve ha generato puntini e basta”

    più che una critica era una depressa osservazione, prova come dice Harvester magari risolvi


    Anfeo
    Partecipante
    #523070

    Grazie delle dritte Harvester, anche se dovrò rileggere più volte per capire, perché c’è veramente da aprire una porta su una vastità di informazioni che non conosco.
    Come dici tu, il nodo Add va ad aggiungere più luce, infatti dai primi test avevo proprio questo problema, la luce era troppa. Di solito risolvo abbassando il “Value” della componente colore dello shader che vado a ad addizionare. Questo mi permette di avere una libertà di manovra e controllare il livello di riflessione, che poi alla fine è solo uno specular. Cerco di lavorare prevalentemente al risultato finale, in questo shader in particolare ho trovato veramente complicato ottenere una mappa di granulosità delle superficie ghiacciata adatta (infatti come fa notare Andcamp) si vedono dei puntini bianchi sparsi, che sono già pochi, perché nella versione originale avevo i Clamp di rendering disattivati.

    Non ho usato un procedimento reale/matematico, mi sono basato su quello che vedevo in una foto e ho cercato di ricrearlo. In oltre non è pensabile (se non per fini scientifici) mettersi  a tenere conto di tutte le proprietà fisiche della neve reale, ad esempio non ho tenuto conto della traslucenza. Ma se l’immagine prevede un inquadratura che vuole la traslucenza, in quel caso il materiale creato non funzionerà.


    andcamp
    Moderatore
    #523072

    anche Price c’aveva provato https://www.blenderguru.com/tutorials/make-snow/


    Harvester
    Moderatore
    #523073

    Certamente non è possibile riprodurre esattamente il comportamento di un materiale alla luce poichè troppo complesso, ma gli shader in Cycles simulano tramite specifici algoritmi determinate componenti, gli shader BSDF, che combinati appropriatamente danno risultati verosimili se anche i valori immessi sono altrettanto plausibili. Partire da una base fisicamente corretta ci permette poi di uscire dalle righe ed aggiungere un quid artistico anche se non aderente alla fisica.

    In certi casi si può o deve scendere a compromessi come, per esempio, usare solo uno shader Diffuse per la pelle di personaggi che risultano distanti dalla camera al punto che il raggio di dispersione è inferiore ad un pixel, mentre in un primo piano non potremo esimerci dall’includere effetti di SSS. Oppure usare Traslucent BSDF piuttosto che Subsurface BSDF per ottimizzare i tempi di rendering (se la situazione ed il risultato finale lo rendono accettabile).

    Potresti considerare l’uso della funzione Microdisplacement associata ad una mappa dei rilievi (o impostando MD su Both nella scheda del materiale) che aggiungerebbero dettagli importanti alla geometria fine della superficie, simulando la granulosità della neve.

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Devi essere connesso per rispondere a questo topic.