Blog

Impostare displacement in mental ray e maya

displacement maya mentalray setup 01

In maya esistono due modi per applicare una texture di displacement ad un materiale.
Il primo è quello classico, ed è rimasto invariato rispetto al workflow tradizionale che si usava nel software render.

In pratica è sufficiente inserire la texture nello slot Displacement mat. nella sezione Shading Group Attributes dello shading group del proprio materiale. Maya si occupa di creare un nodo intermedio di displacement. Intensità e offset del displacement sono controllati da alpha gain e alpha offset della texture. Questo workflow funziona perfettamente anche con mental ray, ma si appoggia a nodi non nativi del motore di rendering che quindi hanno bisogno di essere tradotti e interpretati dal motore. Preferisco, quando possibile, affidarmi a soluzioni integralmente native di mr.

Il secondo metodo non prevede nodi intermedi di maya. Ovviamente, trattandosi di mental ray, è meno intuitivo del precedente.
Il procedimento è il seguente.

Dopo aver creato la nostra texture, aprire la sezione mental ray dello shading group del materiale. Qui vediamo lo slot displacement shader. È questo che useremo. Ci verrebbe naturale inserire direttamente qui la nostra texture. Purtroppo non funzionerà. Abbiamo bisogno di un nodo che traduca in valori comprensibili dal motore di displacement di mr la nostra immagine.

slot displacement dello shading group

Lo slot displacement shader dello shading group del materiale.

Creiamo quindi un nodo mib_color_alpha che si trova nella sezione sample compositing dell'hypershade.

mib_color_alpha

Creazione di un nodo mib_color_apha.

Cosa fa questo nodo?
Leggiamo dalla documentazione:

This shader converts a color to RGBA grayscale by extracting the alpha component. The resulting grayscale value can also be used as a scalar. The returned R, G, B and A components all have the same value.

In pratica prende l'alpha della texture e la trasforma in valori di luminanza interpretabili come altezze dal displacement. Alcuni usano mib_color_intensity, che fa un'operazione simile, a partire non dall'alpha ma dai canali RGB dell'immagine. Questo però non permette di impostare l'offset della texture su valori negativi e quindi non sarà possibile avere nel displacement altezze inferiori al livello della superficie della nostra geometria, perché, anche se alteriamo il color offset della texture, i valori RGB non possono andare sotto allo zero (lo zero rappresenta appunto il livello della superficie della geometria di partenza).

Con mib_color_alpha invece possiamo controllare intensità e offset del displacement tramite alpha gain e alpha offset, quindi possiamo andare anche sotto il livello della superficie della nostra geometria.
Prima di tutto colleghiamo la texture all'attributo input di questo nodo. Perchè funzioni però dobbiamo attivare Alpha Is Luminance nella sezione Color Balance della nostra texture.

attivare alphais luminance perchè possa funzionare con displacement

Attivare alpha is luminance nella sezione color balance della texture.

Si deve inoltre disabilitare il filtering della texture impostando Filter Type su off. Questo si deve fare perchè non vogliamo che maya interpoli i sample del displacement.

Ora non ci resta che inserire mib_color_alpha nello slot displacement shader dello shading group.

Infine perché mental ray sia efficiente e possa controllare il livello di suddivisione della superficie al momento del render, assegnamo alla geometria un nodo di approximation.

Dal menu Window > Rendering Editors > Mental ray > Approximation Editor e creare un nodo di subdivision approximation. Io solitamente tra tutte le opzioni disponibili scelgo Spatial come Approx Method e modifico i valori di Max Subdivisions e Leght in base alle esigenze.

Mental ray displacement approximation node

Attributi del nodo di approssimazione per il displacement.

Ecco che ora abbiamo il nostro displacement ottimizzato per l'uso con mental ray.

displacement in maya mental ray

Immagine di una superficie con displacement.

Paolo Mazzoccato, fondatore Fisheye Studio

Paolo Mazzoccato

Fondatore di Fisheye Studio e appassionato di grafica 3d dal 1996. Quando la tecnologia mi volta le spalle trovo conforto nelle fusa dei miei gatti.

Linkedin

comments powered by Disqus