Lunedì 1 Maggio 2017
Accedi Registrati

Accedi al tuo account

Username
Password *
Ricordami

Pov-Ray, ovvero sulla Computer-Grafica in Ray-Tracing (seconda parte)

Continua la nostra carrellata sul "rendering" (per chi non l'ha letta, si rimanda alla prima parte)

Vorrei finalmente addentrarmi nel discorso riguardante il ray-tracing, che dovrebbe essere l’argomento principale di questo articolo. Purtroppo per questioni di spazio, mi devo accontentare di una rapida introduzione e sorvolare per ora su altri tipi di rappresentazione grafica che potevano essere molto interessanti, ma davvero l’articolo sta diventando troppo lungo. Se ci sarà occasione, ne parleremo un’altra volta.

 Il ray-tracing, che letteralmente significa "tracciamento del raggio", è una tecnica che differisce quasi totalmente dalle altre due che abbiamo finora visto. Detto in parole povere, la filosofia sulla quale poggia questa modalità di rappresentazione degli oggetti è quella di immaginare che ogni pixel che costituisce l’immagine da realizzare sia descritto da un raggio di luce che arriva ai nostri occhi (in effetti un solo occhio idealmente puntiforme) dalla scena che stiamo osservando. Quindi l’idea, se vogliamo, è semplice: noi vediamo una scena come una matrice di pixel, quindi basterà stabilire di quale colore/luminosità è ognuno di questi pixel per poter ricostruire l’immagine!

 Geniale, da veri volpini, direi. Sì, ma... come facciamo a sapere di che "colore" sarà un dato pixel? Per poter sapere ciò, occorre innanzitutto definire la scena in termini di:

  • contenuto della scena, ossia forma, dimensione, posizione degli oggetti presenti in essa;
  • caratteristiche ottiche degli oggetti, ossia colore, finitura, trasparenza, riflettività o altro;
  • posizione dell’osservatore, direzione del suo sguardo ed eventuale rotazione della visuale;
  • illuminazione presente nella scena;

Queste sono le informazioni minime, eventualmente se ne possono aggiungere altre, secondo la complessità della scena o del software utilizzato.

caccola

Esempio di immagine realizzata in Ray-Tracing con Pov-Ray.

 Torniamo al nostro generico pixel. Immaginiamo di seguire a ritroso il raggio di luce (ideale) che, passando attraverso di esso, arriva nel nostro occhio. Lo facciamo matematicamente, utilizzando l’equazione della retta contenente il raggio. Avendo a disposizione tutte le informazioni sugli oggetti presenti in scena, siamo in grado di determinare le eventuali intersezioni della retta con ognuno degli oggetti e le coordinate dei punti di intersezione. Nel caso in cui nessun oggetto venga intersecato dalla retta, si utilizza un colore “di sfondo” prefissato, in caso contrario possiamo stabilire che il colore del raggio sarà quello dell’oggetto per il quale l’intersezione è più vicina all’osservatore. Nel far questo occorrerà tener conto della normale alla superficie dell’oggetto rispetto alla direzione di illuminazione (come abbiamo visto prima) ed eventualmente della variazione del colore dell’oggetto da punto a punto, per le colorazioni non uniformi.
 Un algoritmo che si limitasse a questo sarebbe più propriamente denominato di "ray casting". Il ray tracing invece esegue ulteriori controlli e calcoli, perché in corrispondenza del più vicino punto di intersezione, non si limita a calcolare il colore dell’oggetto in quel punto, ma nel caso in cui l’oggetto sia riflettente o trasparente, anche in parte, suddivide il raggio in più rami, aggiungendo un raggio riflesso, un raggio rifratto e un raggio ombra. Quest’ultimo serve a verificare quali sorgenti luminose contribuiscono all’illuminazione dell’oggetto, mentre per gli altri si utilizza ricorsivamente l’algoritmo di ray tracing. Ognuno di questi raggi darà un contributo al colore finale, pesato secondo le caratteristiche ottiche della superficie mentre, per limitare il numero totale di raggi, si stabiliscono opportune soglie oltre le quali si smette di generare nuove suddivisioni dei raggi.

 Questo tipo di analisi dei cammini dei raggi permette di costruire immagini molto suggestive e che aumentano velocemente la qualità dell’immagine ottenuta. Infatti si otterranno oggetti riflettenti, trasparenti o semitrasparenti, oggetti dalle trame più o meno complesse, dalla superficie più o meno liscia o lucida e così via.
Presenterò qui alcune immagini di esempio fatte in ray tracing, con PoV-ray (dove PoV è l’acronimo di Persistence of Vision), un programma di pubblico dominio liberamente scaricabile da Internet, del quale è possibile avere perfino i codici sorgente per chi volesse personalizzarlo.

 Una delle particolarità di questo programma è che gli oggetti, principalmente sfere, cilindri, piani, parallelepipedi, tori, coni ed altri ancora, vengono di norma memorizzati ed elaborati come singole entità geometriche e non come mesh più o meno complesse di triangoli, come avviene nella grande maggioranza di software di questo tipo. Di conseguenza, ad esempio, per una sfera (come quella che vediamo qui sotto) verranno memorizzati semplicemente la lunghezza del raggio e le coordinate del centro.

sfera 7
 È poi possibile effettuare operazioni booleane su più oggetti, come unione, intersezione o differenza tra due o più forme così definite, e sulle singole entità (o sugli aggregati) si possono eseguire operazioni di traslazione, rotazione o scala. Il tutto in via matematica, secondo un apposito linguaggio, denominato Scene Description Language, o SDL.
 Il fatto che per gli oggetti si forniscano le proprietà geometriche in via parametrica e non una rete di poligoni che descrivano la superficie, porta immediatamente a vantaggi e svantaggi. Tra i primi senz’altro c’è il fatto che ogni oggetto risulti perfettamente definito e regolare ad ogni livello di ingrandimento (a meno di errori di precisione nei calcoli). Come possiamo vedere nell’immagine qui sotto, una sfera realizzata con facce piane, molte più facce di quelle viste prima, comunque risulta più “spigolosa” rispetto a quella in alto.

sfera 8

 Tra gli svantaggi sicuramente si devono annoverare la maggiore difficoltà di definizione di oggetti molto complessi e la sostanziale impossibilità di deformare liberamente la forma di un oggetto, eseguendo ad esempio stiramenti non uniformi, piegamenti, deformazioni non lineari e così via, cose che invece si possono fare tutto sommato facilmente con mesh di triangoli. 

 Oltre alla scelta di considerare gli oggetti della scena come entità matematiche, PoV-ray di base non fornisce strumenti di pre-visualizzazione o manipolazione interattiva di ciò che si vuole costruire. Tutto va descritto sotto forma di un programma di testo, scritto in SDL! E questo vale anche per la definizione delle proprietà ottiche delle superfici degli oggetti, come finiture, trasparenze, riflettività e molte altre cose. È vero comunque che esistono svariati programmi di utilità che danno una mano, sotto questo punto di vista.

 Quanto detto, relativamente alla descrizione del contenuto della scena che si vuole rappresentare, influisce pesantemente sulla modalità in cui si dovranno non solo realizzare gli elementi scenici, ma anche sulla tipologia di soggetti rappresentati, perché naturalmente chi utilizza questo programma è per forza di cose portato maggiormente a rappresentare oggetti geometrici e molto meno oggetti irregolari come piante, animali o meno ancora persone, soprattutto in movimento.

 In ogni caso, con un minimo di impegno si riescono ad ottenere risultati molto soddisfacenti (almeno a livello dilettantistico). Ad esempio, è molto semplice definire una finitura con colorazione di tipo granito, come quella che vediamo qui sotto.

sfera 9

 Notiamo anche l’ombra proiettata automaticamente sul piano. Altre suggestive caratteristiche possono facilmente essere aggiunte.
Nell’immagine seguente vediamo in primo piano una semplice sfera rossa, una sfera rossa con effetto phong, che simula una superficie lucida, una sfera con una variazione simulata della normale secondo un pattern denominato crackle (ma in realtà la sfera rimane perfettamente liscia) ed effetto phong, mentre, nella fila posteriore, a sinistra c’è una sfera rossa trasparente ma senza indice di rifrazione, a destra una sfera con pigmento secondo un pattern crackle e al centro una sfera rossa, trasparente, con indice di rifrazione di 1.5, effetto phong e riflettente. Per la scena poi ho inserito un’illuminazione diffusa, che non crea ombre nette (come nel caso della scena precedente), ed infine ho inserito il calcolo della radiosità di qualità media, che in parole povere fa sì che gli oggetti (incluso il cielo azzurro) illuminino in parte ciò che li circonda.

sfere
 In conclusione, col ray tracing si riescono ad ottenere immagini molto suggestive e addirittura fotorealistiche con gli strumenti giusti. Ma come si può ben immaginare, lo scotto da pagare per ottenere ciò è un’enorme quantità di calcoli, già senza l’utilizzo della radiosità, a maggior ragione quando invece essa viene utilizzata, ancor più se si introduce la sfocatura dell’immagine in dipendenza della distanza degli oggetti rappresentati e se si usano le mappe di fotoni (per questo occorre approfondire a parte l’argomento).

 Bene, per ora fermiamoci qui con questo articolo che, a dispetto della lunghezza, non ha che appena sfiorato l’argomento. Speriamo di poter approfondire tutto ciò in un prossimo futuro.

Remo Di Loreto

 

Si ringraziano Marco Di Lorenzo e Elisabetta Bonora per l'assistenza nella fase di editing/pubblicazione su AliveUniverse.

Altre info su questo post:

Condividi e resta aggiornato!

Remo Di Loreto

Sono laureato in Fisica ed attualmente lavoro in un’industria di semiconduttori (principalmente sensori di immagine). I miei interessi principali nel tempo libero sono la grafica al computer, il rendering 3D, il disegno e pittura su carta o di miniature, la pirografia, le tecniche audio/video, la palestra, i film, soprattutto di genere fantastico e di animazione, la lettura di libri e fumetti, sia italiani che giapponesi e i giochi in generale, inclusi enigmi e giochi matematici.


Email Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

Lascia un commento

Assicurati di inserire (*) le informazioni necessarie ove indicato.
Codice HTML non è permesso.

Newsletter

I nostri articoli sono anche su Coelum Astronomia!

GRATIS E DIGITALE: leggilo ora!

Immagine del giorno

Mission log

AstroAppuntamenti

Maggio 2017
L M M G V S D
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Dal nostro album di Flickr

Meteo spaziale

  • NEO News
    NEO News

    Notizie e aggiornamenti sugli incontri ravvicinati con oggetti potenzialmente pericolosi e sulla loro catalogazione. Aggiornato al 29 Aprile.

Sole e Luna

Attività solare - Credit: SDO/HMI / spaceweather.com

Buchi coronali - Credit: SDO/AIA / spaceweather.com

SOHO LASCO C2 - Credit ESA/NASA SOHO/LASCO

SOHO LASCO C3 - Credit ESA/NASA SOHO/LASCO

Aurora - emisfero nord - Credit: NOAA/Ovation

Aurora - emisfero sud - Credit: NOAA/Ovation

CURRENT MOON

Aggregatore notizie RSS - - Paperblog : le migliori informazioni in diretta dai blog - Segnala a Zazoom - Blog Directory - intopic.it

[IT] Questo sito utilizza cookie tecnici e di terze parti, per migliorare i servizi e l'esperienza dei lettori. Per saperne di più o negare il consenso prendete visione dell'Informativa Estesa.
Chiudendo questo banner cliccando su 'Accetto' ed in qualunque altro modo, o proseguendo la navigazione su questo sito web, acconsentite al loro uso.
[EN] This site uses technical and third-party cookies, in order to improve services and experiences of our readers. If you want to know more or deny cookies exchange, please view "Cookie Information".
Closing this banner clicking on 'Agree' and in any other way, or continuing to browse this website, you consent with the cookies usage.