Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi G - M > Grafica e immagini digitali
 
Problemi con il Ray tracing
Clicca QUI per vedere il messaggio nel forum
jonny86
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.

ButterFlower
supernick c'è bisogno di te!:D

*°§_-???
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)

jonny86
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...

Ste.dv
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);
}

jonny86
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...

jonny86
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!!!

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate