|
Hiroj |
.primate.
Registered: May 2006
Posts: 68 (0.01 al dì)
Location:
Corso: Comunicazione Digitale
Anno:
Time Online: 14:45:18 [...]
Status: Offline
Edit | Report | IP: Logged |
Eh... scusate i post precedenti... la connessione mi ha fatto qualche scherzo!
- Legge di Snell
quando la luce passa attraverso un oggetto trasparente subisce tre effetti: viene assorbita, viene assorbita in modo selettivo, in funzione del colore dell'oggetto trasparente e viene deviata con un angolo dipendente dall'indice di rifrazione dell'oggetto trasparente. La legge di Snell in renderman (refract(I, N, eta)) restituisce il vettore deviato uscente dall'oggetto trasparente. I è il vettore incidente, N la normale del punto sulla superficie e eta è l'indice di rifrazione.
- Legge di Fresnel
oltre alla rifrazione, la legge di Fresnel prevede anche il calcolo della riflessione della luce su un materiale trasparente. In renderman è definito in questo modo: fresnel(I, N, eta, Kr, Kt, R, T). Io non la definirei proprio una funzione visto che non restituisce direttamente un valore, ma anzi una procedura perchè memorizza all'interno di alcuni parametri che gli passiamo i valori del vettore di rifrazione e riflessione e i relativi coefficienti. I è il vettore incidente, N la normale del punto sulla superficie, eta l'indice di rifrazione, Kr il coefficiente di riflessione, Kt il coefficiente di rifrazione (o trasmissione), R il vettore di riflessione e T il vettore di rifrazione (o trasmissione). Ovviamente dopo il richiamo di questa procedura devono venir tracciati 2 raggi; uno per la riflessione e uno per la rifrazione. Il colore che resituiscono i due raggi poi verrà sommato o mixato.
- Rayinfo e le etichette dei raggi
rayinfo serve per ottenere informazioni dai raggi che colpiscono lo shader come la direzione, l'origine, la lunghezza, il nome...
Anche questa potrebbe essere considerata una procedura perchè salva in una variabile passata come parametro il valore dell'informazione che vogliamo ottenere.
Es. rayinfo("label", rayname);
dove "label" identifica l'informazione che vogliamo e rayname la variabile dove andrà a finire il risultato.
Per assegnare un'etichetta ad un raggio dobbiamo usare la trace() con qualche parametro in più: trace(P, R, "label", "raggio1"), dove P e R sono il punto di partenza e la direzione del raggio, "label" è l'informazione a cui vogliamo assegnare un valore e "raggio1" è il valore della stringa "label".
Spero di essermi spiegato correttamente e se ci fosse qualche errore prego di segnalarlo.
__________________
Presta a tutti il tuo orecchio, a pochi la tua voce - W. Shakespeare
|