NVIDIA mental ray

Mental ray nasce nel 1986, sviluppato dalla società tedesca Mental Image GmbH. La sua prima incarnazione commerciale viene lanciata nel 1989; inizialmente mental ray viene sviluppato come software stand-alone, ovvero slegato da altri applicativi di modellazione 3D, ma col tempo verrà integrato in alcuni dei principali applicativi, come Softimage|3D (1993-mray 1.9), Softimage|XSI (1996), 3D Studio Max (1999), Maya (2002) e numerosi altri, rendendolo uno dei motori di rendering più utilizzati e apprezzati in assoluto.

La Mental Image GmbH è sta acqusita nel 2011 da NVIDIA, la nota casa delle schede video, che si occupa a tutt’oggi dello sviluppo della versione stand-alone, la cui versione integrata in 3ds Max 2013 è arrivata alla 3.10, quindi del core, oltre ad alcune delle funzionalità principali (shaders) che vengono integrate nei vari plug-in; lo sviluppo dei plug-in di connessione e l’integrazione stessa nei programmi di modellazione viene invece delegata alle varie OEM (Avid, Autodesk, etc). 

Sostanzialmente, quindi, non ci sono grosse differenze tra i plug-in di mental ray fornite nei differenti software; le principali differenze riguardano l’interfaccia e le opzioni supportate, e sono legate quindi al livello di integrazione che hanno raggiunto all’interno dei software stessi.

Funzionalità presenti in mental ray 3.10

Algoritmi

  • Scanline.
  • Rasterizer.
  • Ray Tracing. 

Sampling (Campionamento)

  • Strictly deterministic low-discrepancy sampling (QMC).
  • Automatic anti-aliasing.
  • Adaptive recursive oversampling e under-sampling.
  • Strictly deterministic low-discrepancy jittering.

Global Illumination (Illuminazione Globale)

  • Photon Map.
  • Final Gather.

Shaders

  • Tipologie: material, texture, light, volume, shadow, atmosphere, lens, environment, photon, photon emitter, displacement, output, contour, geometry, inheritance, e state shader.

Supporto per BRDF arbitrari

Materials (Materiali)

  • Physically correct shaders.
  • Glossy reflections/refractions.
  • Accurate highlights.
  • Phisically correct sub-surface scattering.
  • Fast sub-surface scattering.
  • Metallic car paint.
  • Spectral rendering shaders.
  • Production shaders.

Camera effects (Effetti Cinepresa)

  • Depth-of-field with boken effects.
  • Accurate 3D Motion Blur.
  • 2D Motion Blur.

Lights (Luci)

  • Area light (rettangolo, disco, sfera, cilindro).
  • Skylight.
  • Portal Light (dalla versione 2008 di Autodesk 3ds Max).
  • IES e Eulumdat.

Maps (Mappe)

  • Bump mapping.
  • Normal mapping.
  • Displacement mapping.
  • Shadow depth mapping.
  • Light mapping.
  • HDRI.

Exposure control (Controllo esposizione, o Tone mapping)

  • Mr Photographic Exposure Control (dalla versione 2008).

Multipass rendering

Funzioni presenti ma non attivate in Autodesk 3ds Max e Maya (e non supportate da Autodesk)

  • Importons e Irradiance Map, algoritmi per il calcolo della Global Illumination.
  • Image Base Lighting (IBL), funzione per il calcolo dell’illuminazione diretta.
  • Progressive Render per il campionamento e l’antialiasing dell’immagine.

Architettura di mental ray

NVIDIA mental ray è un motore di rendering ibrido.
Per capire cosa significa bisogna prima concentrarsi su cosa un motore di rendering deve fare per permetterci di visualizzare una scena tridimensionale, ovvero interagire con le geometrie presenti in scena; l’interazione tra il nostro software e queste geometrie può avvenire in diversi modi, ogni modo presenta dei vantaggi e degli svantaggi.
Se ora cambiate la parola “modo” con la parola algoritmo, vedrete che il nostro motore di rendering non è altro che un software che usa determinati algoritmi (modi di interagire con la scena tridimensionale), per generare le informazioni da noi volute (immagini); gli algoritmi utilizzati in un motore di rendering sono tanti, noi ovviamente ci concentreremo sui principali.
NVIDIA mental ray, in pratica, può mescolare tra loro diversi algoritmi per ottenere il l’immagine finale, il rendering; il principale vantaggio di questo approccio è che non si rimane vincolati al limite di un solo algoritmo, ma si può scegliere quello che meglio risponde alle nostre esigenze.
Wcco una lista dei principali algoritmi integrati in NVIDIA mental ray:
  • Scanline.
  • Rasterizer.
  • Ray Tracing.
  • QMC (Quasi Monte Carlo, strictly deterministic low-discrepancy sampling).
  • Photon map.
  • Final Gather.
 
Si possono suddividere gli algoritmi appena elencati in tre categorie: 
  • Algoritmi che servono al calcolo dei Primary rays (prima generazione di raggi), ovvero atti principalmente a capire quali zone della geometria sono visibili e quali no e, in parte, a dare una prima parvenza di informazioni su colori, luci e cose di questo tipo. Fanno parte di questa categoria gli algoritmi Scanline, Rasterizer e Ray Tracing.
  • Algoritmi che servono ai Secondary rays (seconda generazione di raggi), ovvero a restituire effetti più complessi quali ombre, riflessioni, rifrazioni, illuminazione globale e via dicendo; il calcolo viene eseguito unicamente con l’algoritmo Ray Tracing.
  • Algoritmi ausiliari che servono per effetti più complessi, come l’illuminazione indiretta (Photon Map, Final Gather) e che sono adibiti a completare o migliorare gli altri algoritmi (QMC).

Algoritmi per il calcolo dei Primary rays

Abbiamo ora un quadro su quelli che sono gli algoritmi utilizzati da NVIDIA mental ray per generare i suoi Primary rays, ma cosa sono in realtà questi Primary rays? Osservate la figura sottostante.
 
Mental ray - I primary rays.
 
Come abbiamo già detto, il motore di rendering interagisce con le geometrie presenti nella scena 3d per ottenere delle informazioni. Tramite i Primary rays, esso raccoglie le prime informazioni fondamentali dalla scena, che riguardano i colori, le luci, trasparenze (da non confondere con le rifrazioni), i volumi occupati, ecc. Tramite i Primary rays, insomma, si procede a una prima raccolta di informazioni, che però esclude la riproduzione di effetti avanzati, come riflessioni, rifrazioni, ombre, illuminazione globale ecc.
Osservate la scena d’esempio nella Figura sottostante.
 
Mental ray - Rendering con primary rays.
 
Nel rendering sopra riportato sono attivi solo i Primary rays, in questo caso calcolati con lo Scanline, che è l’algoritmo di default per questo genere di effetti.
Come già detto, in mental ray gli algoritmi che si possono utilizzare per i Primary rays sono:
  • Scanline.
  • Ray Tracing.
  • Rasterizer.
Tra questi solo uno, il Ray Tracing, può essere utilizzato anche per i Secondary rays. Inoltre, come vedremo qualche paragrafo più avanti, gli algoritmi Scanline e Ray Tracing permettono di utilizzare un campionamento adattivo per il calcolo dei dettagli dell’immagine, mentre il Rasterizer non ne consente l’uso limitando l’utente all’utilizzo di un campionamento “fisso”, tecnicamente chiamato Fixed. Vediamo ora una descrizione sommaria degli algoritmi per il calcolo dei Primary rays.

Scanline

Lo Scanline è uno degli algoritmi più conosciuti nella Computer Grafica, presente in 3ds Max Design fin dalle prime versioni, permette di calcolare una scena tridimensionale partendo da una “linea di scansione” (da qui il termine Scanline), che, intersecando le geometrie presenti nella scena ne determina la posizione e i bordi visibili.
È un algoritmo piuttosto semplice, e non permette di riprodurre un gran numero di effetti; in sostanza appartiene alla categoria dei Primary rays, ma non permette di riprodurre effetti più complessi, se non combinato con altri algoritmi.
I principali vantaggi invece riguardano l’esclusione dalla rappresentazione delle parti non visibili delle geometrie; sostanzialmente i vantaggi riguardano il lato prestazionale. Questo è anche l’algoritmo che NVIDIA mental ray utilizza di default per i Primary rays, in quanto è in genere il più veloce nella maggior parte delle scene.

Rasterizer

È un’alternativa allo Scanline, possiamo dire un’evoluzione. È molto simile all’ algoritmo Reyes, che viene utilizzato dal famoso PRman (Pixar RenderMan), conosciuto anche come RenderMan per l’interpretazione e la visualizzazione delle scene. PRman è un motore di rendering di alto livello, utilizzato da tutte le case produttrici cinematografiche per la resa di effetti speciali o animazioni nei propri film.
 
Il Rasterizer, come lo Scanline, permette di rappresentare le scene escludendo le geometrie non visibili; inoltre ha una natura “view dependent”, che gli permette di interpretare gli elementi nella scena in base alla vicinanza/lontananza dalla camera (punto di vista), e proprio in base a questi parametri determina che tipo di qualità deve dare alla rappresentazione, dando maggiore qualità agli oggetti in primo piano e minore a quelli lontani.
L’algoritmo interviene sullo shading (qualità dell’illuminazione) e sull’Anti Aliasing (qualità di rappresentazione dei bordi delle superfici).
I principali vantaggi del Rasterizer sono la velocità nel renderizzare effetti complessi quali il Motion Blur,  il Displacement, la Profondtà di campo (DOF Depth Of Field), etc.
Uno dei principali svantaggi legati al suo utilizzo, invece, è la difficoltà di combinarlo con algoritmi di illuminazione globale (nel caso di NVIDIA mental ray avete a disposizione Final Gather e Photon Map), oltre ad alcuni limiti di utilizzo in combinazione con l’algoritmo Ray Tracing. Avendo un quadro sui vantaggi e sui limiti di questo algoritmo si può capire il perché venga usato in alcune pipeline negli studi di animazione, che in genere non necessitano di utilizzare Global Illumination e preferiscono simularne gli effetti in altri modi (Ambient Occlusion o altre tecniche ancora).

Ray Tracing

È uno dei principali e più famosi algoritmi usati nella Computer Grafica. È l’unico dei tre che può essere utilizzato sia per i Primary che per i Secondary rays e permette di determinare non solo la posizione delle geometrie visibili, ma anche effetti più complessi, come le interazioni che si vengono a creare tra i raggi di luce e le geometrie stesse, la generazione delle ombre e molto altro ancora. Il Ray Tracing è l’algoritmo che sta alla base anche di quasi tutti i principali algoritmi per il calcolo dell’ illuminazione globale (tra cui il Final Gather e la Photon Map usati in mental ray). 
I limiti sono sostanzialmente legati alla maggiore complessità di funzionamento (questo riguarda principalmente gli aspetti tecnici, e quindi gli sviluppatori) e alle performance leggermente inferiori (ma non in tutti i casi) rispetto a algoritmi più semplici come lo Scanline.
 

Algoritmi per il calcolo dei Secondary rays

Come abbiamo già accennato, i Primary rays non sono sufficienti per riuscire a renderizzare effetti più complessi; per questo interviene l’algoritmo dei Secondary rays (Figura sottostante) che è essenzialmente uno: il Ray Tracing. Lo schema riassume in che modo vengono generati Primary e Secondary rays, il fatto che più algoritmi possano essere utilizzati insieme è una caratteristica distintiva dei motori di rendering ibridi come NVIDIA mental ray.

Mental ray - Secondary rays.

Nella Figura sottostante è riportato lo stesso rendering visto in precedenza, ma con l’attivazione sia dei Primary che dei Secondary rays.

Mental ray - rendering con secondary rays.

In questo sito utilizziamo i cookie per fornire la migliore esperienza di fruizione. Continuando la navigazione, acconsenti all'utilizzo. Privacy