Normalmente non usiamo questo passo perché non è fisicamente accurato, ma di sicuro per alcuni effetti ed in certe occasioni diventa fondamentale il suo corretto ottenimento.
Potete trovare qui l'articolo sul depth pass per una spiegazione completa del funzionamento degli Assembly, dei loro vantaggi e limiti.
La soluzione è identica a quella già utilizzata per il depth pass e cioè la modifica tramite editor di testo del file assembly esportato da maya. Fate riferimento all'articolo appena linkato per la procedura di esportazione ed individuazione del punto in cui modificare il file.
Cambia ovviamente il codice da inserire che sarà il seguente:
"adskPassAmbientOcclusion" ( "frameBufferNumber" 1, "encodingIndex" 1, "useShadingEngineThreshold" off, "transparencyThreshold" 0., "useLocalSettings" on, "rays" 64, "brightColor" 1. 1. 1., "darkColor" 0. 0. 0., "spread" 0., "spreadExponent" 1., "maxDistance" 1., "reflective" off, "cachePoints" 0, "occInAlpha" off, "outputMode" 0 )
Sarà da immettere subito prima della linea shadow = ”nome_materiale”.
Il codice completo, inserito nella sezione shading group del mnostro materiale, sarà quindi:
material "nome_materiale_SG" "adskMayaShadingEngine" ( "surfaceShader" = "nome_materiale.result", "cutAwayOpacity" 0., "customShader" on ) "adskPassCameraDepth" ( "frameBufferNumber" 0, "encodingIndex" 0, "holdout" off, "useShadingEngineThreshold" off, "transparencyThreshold" 0., "remap" off, "znear" 0., "zfar" 1000., "minbuffer" 0., "maxbuffer" 1. ) "adskPassAmbientOcclusion" ( "frameBufferNumber" 1, "encodingIndex" 1, "useShadingEngineThreshold" off, "transparencyThreshold" 0., "useLocalSettings" on, "rays" 64, "brightColor" 1. 1. 1., "darkColor" 0. 0. 0., "spread" 0., "spreadExponent" 1., "maxDistance" 1., "reflective" off, "cachePoints" 0, "occInAlpha" off, "outputMode" 0 ) shadow = "nome_materiale" photon = "nome_materiale" end material
Notare che in questo includo anche le linee necessarie per far funzionare il depth pass
Naturalmente, dovrete sosituire il "nome_materiale" con il nome del materiale da voi creato.
Prestate particolare attenzione alla riga useLocalSettings che deve essere impostata su on per poter poi controllare il resto dei parametri sottostanti.
Per farlo tuttavia è necessario modificare a mano i valori di queste linee di codice. Non il massimo della vita, ma al momento non sono riuscito a trovare dei modi alternativi per risolvere il problema in maniera più rapida.
La mia ricerca continua e nel caso riuscissi a trovare una soluzione migliore la riporterò in queste pagine.
Spero di avere risparmiato qualche mal di testa a qualcuno!