Illuminazione Globale (Global Illumination) per i Rendering in CG 3D
Le tecniche di illuminazione globale consistono in algoritmi e procedure che, in fase di Rendering delle scene in Computer Grafica 3D, tengono conto dell'illuminazione diretta degli oggetti e (a differenza delle altre tecniche) dell'illuminazione indiretta.
Per illuminazione diretta intendiamo l'effetto dato dai fasci luminosi provenienti da una sorgente di luce che colpiscono direttamente una superficie, mentre per illuminazione indiretta intendiamo l'effetto dato dai raggi riflessi da altre superfici (non per forza specchi: tutte le superfici riflettono una certa quantità, anche minima, di raggi luminosi) o rifratti (nel caso di oggetti semitrasparenti).
I raggi riflessi o rifratti, poi, "portano" anche contributi di colore sulle superfici che vanno a colpire.
I calcoli necessari per determinare le traiettorie dei raggi e i loro effetti sono molti, per cui i Rendering effettuati con algoritmi di illuminazione globale richiedono più tempo rispetto ai Rendering "semplici", tuttavia questa tecnica consente di ottenere immagini fotorealistiche (le superfici -soprattutto quelle non illuminate direttamente- non appaiono uniformi, "piatte", ma colorate tenendo conto dei contributi dati dai raggi riflessi dagli oggetti vicini, ecc...).
Esistono molti algoritmi che si occupano di implementare gli effetti dell'Illuminazione Globale per vari motori di Rendering e molti di loro possono essere usati anche in combinazione con altri.
Tra gli algoritmi di Global Illumination abbiamo ad esempio Radiosity, RayTrace, Ambient Occlusion, Photon Mapping, ecc... Ad esempio, il software di modellazione, animazione e rendering 3D Blender consente di utilizzare il RayTracing, Radiosity e Ambient Occlusion (nonchè di implementare riflessi, trasparenze ed altri effetti) in fase di Rendering delle scene.
La tecnica Radiosity (Radiosità), ad esempio, utilizza il metodo degli elementi finiti per risolvere l'equazione del Rendering. Per una trattazione matematica approfondita di Radiosity, si rimanda a questo articolo di Allen Martin (Inglese).
In genere, per via della potenza di calcolo richiesta per implementare tale effetto, l'illuminazione Globale NON viene effettuata in tempo reale; molti motori real-time (ad esempio quello nativo di Java 3D) utilizzano, ad esempio, la "luce ambientale" (Ambient Light, una luce tenue, che non crea ombre, uniforme per tutte le superfici) o altre tecniche (che, comunque, non sono tecniche di illuminazione globale, quanto espedienti, "cheats" (trucchi)).
|