Il rendering è quell'operazione che trasforma un modello tridimensionale in una immagine raster, è
in sostanza quella tecnica che sviluppa il progetto 3D di una casa, di un ambiente in una foto, oppure il progetto 3d di un micromondo in movimento in un filmato, si pensi ad esempio ai cartoni animati creati con la computer grafica, come Toy Story, Finding Nemo, Cars, Rango, Rapuntzel, UP della Pixar, oppure Z la formica,Shrek, Shark Tale, Madagascar, Giù per il tubo,Bee Movie,Kung Fu Panda, Mostri contro alieni, Dragon Trainer, Megamind, Il Gatto con gli stivali della Dreamworks.
Dal 1970 ad oggi le tecniche si sono sempre più affinate, la potenza di calcolo è aumentata a dismisura ed i software di rendering sono spuntati come funghi.
I motori di rendering possono essere associati a dei modellatori oppure venduti/distribuiti a parte, a noi interessano quelli open source, sia standalone che incorporati in altri prodotti open source.
Alcuni dei principali algoritmi, sono:
Algoritmo del pittore - L'algoritmo del pittore, conosciuto anche come riempimento prioritario, è una delle soluzioni più semplici al problema della visibilità nella computer grafica. Quando si rappresenta una scena tridimensionale su un piano bidimensionale è necessario decidere quali poligoni sono visibili e quali saranno nascosti. Il nome dell'algoritmo si riferisce al semplice metodo usato dai pittori che disegnano prima le parti distanti delle scena e poi le ricoprono con le parti più vicine.
Algoritmi che utilizzano lo Z-buffer - z-buffering è una tecnica di gestione della coordinata corrispondente alla profondità di un oggetto a livello di singolo pixel,
ovvero della massima risoluzione possibile, è tecnica piuttosto semplice (e lenta), è tuttavia sfruttata nella maggior parte dei motori grafici 3D commerciali, anche perchè spesso supportata dall'hardware.
Illuminazione globale - Questa tecnica viene usata per aggiungere illuminazioni realistiche alle scene. Alcuni di questi algoritmi tengono conto non solo della luce ricevuta direttamente da una sorgente di luce (illuminazione diretta), ma anche di quella riflessa, diffusa, o rifratta da altre superfici (illuminazione indiretta).
Le immagini renderizzate con l'uso di algoritmi di illuminazione globale, spesso appaiono più fotorealistiche rispetto a quelle che utilizzano solo l'illuminazione diretta. La loro computazione, però, è molto più lenta e computazionalmente più costosa.
Esistono delle semplificazioni per l'illuminazione globale, come Radiosity, ray tracing, beam tracing, cone tracing, path tracing, metropolis light transport, ambient occlusion, e photon mapping sono esempi di algoritmi usati nel campo dell'illuminazione globale; alcuni possono essere combinati tra loro per ottenere risultati più rapidi, ma comunque accurati.
Radiosity - È un'applicazione del metodo degli elementi finiti per risolvere l'equazione di rendering di scene composte di superfici perfettamente diffusive.
Questi algoritmi modellano l'inter-riflessione diffusa, una parte molto importante dell'illuminazione globale. Buona parte di questi (esclusa la radiosity) modellano anche la riflessione speculare, il che li rende più precisi nella risoluzione dell'equazione di luce e fornisce un effetto più realistico alla scena.
Gli algoritmi utilizzati per calcolare la distribuzione dell'energia luminosa tra superfici di una scena, sono strettamente correlati con le simulazioni di trasferimento di calore, risolte in ingegneria con l'uso del metodo degli elementi finiti.
Ray tracing - è una tecnica generale di geometria ottica che si basa sul calcolo del percorso fatto dalla luce, seguendone i raggi attraverso l'interazione con le superfici.
E' un perfeionamento della tecnica del ray casting dove si fanno partire i raggi di luce dall'occhio, uno per pixel, e trovare il più vicino oggetto che ne blocca il percorso.
Il Ray tracing semplifica alcuni effetti ottici avanzati, ad esempio un'accurata simulazione della riflessione e della rifrazione, restando abbastanza efficiente da permetterne l'uso in caso si voglia ottenere un risultato di alta qualità.
Photon mapping - è un algoritmo di illuminazione globale, basato sulla simulazione dell'emissione di raggi di luce
Chi deve eseguire il rendering di grandi quantità di immagini (per esempio quelle di una sequenza cinematografica) usa una rete di computer connessi tra loro, detta render farm.
Come si è capito quello del rendering è un problema complesso, e scegliere un motore al posto di un altro è una impresa ardua, molto legata al tipo di rendering che si vuole effettuare, e legato molto agli algoritmi di rendering implementati.
Noi faremo differenza tra i renderer ad illuminazione diretta e quelli a illuminazione globale, i primi sono tipicamente dei renderer interni e semplici, che creano rendering veloci, i secondi sono i renderer fotorealistici, in grado di calcolare accuratamente dal punti di vista della fisica il percorso della luce nella scena.
Alcuni motori di rendering ad illuminazione globale commerciali sono : popolari e potenti motori di render: Mental Ray, Vray, Brazil, Final Render, Maxwell Render, RenderMan della Pixar, li citiamo solo
per completezza, ma è ovvio che siamo molto più interessati a motori sempre ad illuminazione globale, però open source come POV-Ray, Yafaray, Radiance, Kerkythea, Indigo, etc...
Esempio di illuminazione globale - Wooden Room by Rio con Yafaray |
Tralasciando nozioni incomprensibili di matematica, fisica e ottica, alla fine possiamo dire che è solo questione di luce, di come essa illumina la scena, rimbalza sugli oggetti, di come i materiali la trasformano e quindi di come essa arriva al nostro occhio... semplice no?
Nessun commento:
Posta un commento