Home

Page Rank Check    





Ray Casting
Articoli - Teoria della Computer Grafica 3D
Scritto da RedBaron85   
Sabato 30 Gennaio 2010 15:01

Ray Casting

In Computer Grafica, con il termine Ray Casting ("proiettare un raggio", "proiezione di un raggio") ci si riferisce, in generale, ad un insieme di tecniche ed algoritmi per valutare le intersezioni tra rette (raggi) e superfici. Questo può essere fatto per molti scopi, anche se principalmente è utilizzato per denotare un modello di illuminazione e rendering, dove i raggi sono quelli delle fonti luminose e la proiezione avviene su vertici, facce e superfici delle mesh.

Un algoritmo di Ray Casting proietta dei raggi a partire dal punto di vista dell'osservatore, un raggio per pixel, valutando qual è il primo oggetto della scena virtuale intersecato da tale raggio; a questo punto, a seconda delle condizioni del materiale dell'oggetto (utilizzate per determinare colore, assorbimento, riflessione, rifrazione, ...), delle condizioni di luce (direzione dei vettori normali e di illuminazione) e del punto di vista dell'osservatore (vettore dell'osservatore), viene calcolato il valore (colore) da assegnare a ciascun pixel dell'immagine.

 

 

L'espressione Ray Casting è utilizzata anche in altri contesti: ad esempio, per denotare il problema generico di quale o quali oggetti vengono intercettati da un raggio, operazione che avviene ad esempio quando si fa click col mouse sulla rappresentazione della scena 3D per selezionare una o più mesh, oppure per "sparare" ad un nemico in un videogioco, ecc...

Altri campi di applicazione riguardano la rimozione delle superfici nascoste (hidden surface removal) in fase di rendering, oppure varianti del metodo Ray Tracing o ancora il rendering volumetrico, ecc...

 

 

Se utilizzato per denotare un modello di illuminazione e rendering, Ray Casting non va confuso con Ray Tracing: anche se entrambi i metodi (come praticamente tutti i metodi di rendering, d'altronde) si occupano dei raggi luminosi e dei raggi "proiettati" dalla telecamera sulle superfici (che verranno poi ombreggiate con appropriate tecniche di shading), la scansione avviene in maniera differente e Ray Casting non raggiunge il livello di fotorealismo di Ray Tracing, cosa che lo rendere particolarmente veloce (ed è per questo motivo che è stato utilizzato per primo nei videogiochi, vista la possibilità di utilizzarlo facilmente in tempo reale)  ma meno accurato e meno adatto per i rendering architettonici o cinematografici rispetto a Ray Tracing.

Alcune varianti del Ray Casting rappresentano comunque delle soluzioni semplici ma efficaci anche quando bisogna calcolare riflessioni, rifrazioni o anche l'assorbimento dei raggiuna variante di Ray Casting è stata utilizzata, ad esempio, per simulare l'esposizione dei soggetti alle radiazioni in vari scenari, ad esempio per costruire le corazze per i veicoli militari.

 

Uno dei primi videogiochi a far uso di Ray Casting è stato, ad esempio, Wolfenstein 3D: in quel caso, le stanze erano composte da pareti di altezza fissata, soffitto e pavimento, per cui la scansione avveniva per colonne di pixel: per ogni colonna veniva tracciato un raggio e una "fetta" verticale delle texture da applicare a soffitto, pareti e pavimento veniva opportunamente scalata (per adattarla alle dimensioni delle tre parti, a seconda della prospettiva e della distanza dall'osservatore) e applicata a quei pixel.

Con un "mondo" così semplice, le collisioni e le intersezioni erano facili da calcolare e richiedevano poco spazio in memoria.

Tags:     computer grafica      cg      teoria      ray casting      raycasting      rendering      motore di rendering
Ultimo aggiornamento Domenica 22 Gennaio 2012 15:41
 

Ti è piaciuto questo articolo ? Condividilo !



RedBaron85.com Forum community banner

Non hai trovato quello che cercavi ?
Ricerca personalizzata
Copyright © 2012 RedBaron85.com: Informatica, CG 2D e 3D, Blender, Python, Java 2D e 3D, 3D Studio e altro ancora!. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.

Milanese Francesco - Partita IVA: 04950350878

AltroArticoliblog utentiBlueprintsContestenglishProgrammazioneModelliElencoNewsTexturesTutorialsVideotutorials