.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Grafica e immagini digitali (http://www.dsy.it/forum/forumdisplay.php?forumid=77)
-- Problemi con il Ray tracing (http://www.dsy.it/forum/showthread.php?threadid=37155)


Posted by jonny86 on 13-12-2008 18:06:

Problemi con il Ray tracing

Ciao a tutti,

In questi giorni stavo dando una smanettata ai codici dei vari shader. Fino alla lezione prima del ray tracing nessun problema, mi uscivano tutti. Invece con il ray tracing ho qualche problema, a parte che Viale non pubblica gli shader e non ho copiato il codice a lezione, ho provato di tutto ma niente.

Il mio codice sostanzialmente è fatto così:

vector In = -normalize(I);

color finalColor;

if (Krif > 0) { //Krif è il coefficiente di riflettività
normal dirSpec = normalize(reflect(In, Nf)); //Nf è la normale normalizzata
color refractColor = trace(P,dirSpec);
finalColor = mix(Cs,refractColor,Krif);
} else
finalColor = Cs;

Poi alla fine passo indietro il colore con la formula di phong.

Solo che non mi riesce niente... cioè o ritorna il nero o ritorna un bluastro, ma non ritorna quello che dovrebbe riflettere della scena. Ho provato sia col rib di esempio che si usa solitamente a lezione sia con il rib dello scorso esame... ma niente :( .

Qualcuno con lo stesso problema che ha risolto può passare rib e shader?

grazie.


Posted by ButterFlower on 13-12-2008 18:08:

supernick c'è bisogno di te!:D


Posted by *°§_-??? on 15-12-2008 08:38:

Scusami, ma volevo cercare di capire... :? perchè usi il mix?
e il Krif che valore ha?

(ora non ho il codice sottomano ma non mi pare sia necessaria la funzione mix per ottenere il ray tracing, almeno se l'intenzione è quella di avere un effetto perfettamente a specchio)

__________________
:pccrash::pccrash:


Posted by jonny86 on 15-12-2008 16:05:

Krif come ho commentato dal codice è il coefficiente di riflesso (quanto specchia l'oggetto) e uso il mix per mischiare il colore normale dell'oggetto preso dal rib al colore riflesso dallo specchio (se il coefficiente è a 1 diventa una superficie perfettamente specchiante, se a 0 non usa il ray tracing, se una via di mezzo mischia i due colori).

Comunque il problema non sta lì perchè avevo provato anche a togliere tutto e far ritornare solo il trace, ma niente...


Posted by Ste.dv on 16-12-2008 08:57:

Innanzitutto assicurati di aver inserito nel file RIB l'attributo che abilita il ray tracing.

Attribute "visibility" "int specular" 1

Senza questo attributo le superfici su cui calcoli la riflessione appaiono prossime al nero.

A parte questo, il tuo codice mi sembra grossomodo corretto.
L'unico errore credo stia nell'inversione del vettore In normalizzato: va invertito per il calcolo del modello di Phong, non per determinare la riflessione.
Prova a togliere quel meno.

Io ho realizzato lo shader in questo modo:

simpleTacing

surface simpleTracing (float Kr = 0.8)
{
normal Nf = faceforward(normalize(N), I);
vector In = normalize(I);

vector reflectionDir = normalize(reflect(In, Nf));

Ci = Cs * Kr * trace(P, reflectionDir);
}


Posted by jonny86 on 16-12-2008 19:26:

Il punto è proprio questo... non so interagire più di quel tanto con un file RIB... ho provato ad usare il rib del progetto dell'anno scorso e ho visto che lì ci sono indicati gli attributi di visibility ma non funziona.

O l'attributo non è da mettere lì (ma non credo che all'esame diano un rib sbagliato) oppure mi sa che è un problema di pixie a sto punto. Io uso la versione 2.2.2 perchè la 2.2.4 non andava (e non trovavo la 2.2.3, poi ha messo il link ma ormai andava e ho tenuto quella).

Non so cosa pensare... semmai provo a installare la 2.2.3 e vedo cosa esce, ma ho i miei dubbi...


Posted by jonny86 on 16-12-2008 20:03:

Ok... disistallato e reinstallata al volo la nuova versione e ora va.. e pensare che ci ho perso giorni e poi era colpa della versione!!!


All times are GMT. The time now is 12:51.
Show all 7 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.