Bonjour,

Je débute en opengl et je dois manipuler le raytracing dans un code qui n'est pas le mien. J'aimerais appliquer à ma sphere la loi de lambert pour la luminosité. La première étape est de calculer la normale.

Ce que j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
// Pour chaque pixels :
			ray r;
                        // permet d'obtenir la coordonée 3D du pixel par lancé de rayon sur la sphère
			ogl->get_coords( i,j,r );
Comment calculer la normale de chaque point?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
void MyGlWindow::get_coords(int i,int j, ray & r)
{
	gluUnProject(i*1.0,j*1.0,0.,(GLdouble*) ModelViewMatrix,(GLdouble*) ProjectionMatrix,(GLint *) Viewport,&r.p.X, &r.p.Y, &r.p.Z);
	gluUnProject(i*1.0,j*1.0,1.,(GLdouble*) ModelViewMatrix,(GLdouble*) ProjectionMatrix,(GLint *) Viewport, &r.v.X, &r.v.Y, &r.v.Z);
	r.v=r.p-r.v;
	r.v.normalize();
}
Merci de votre aide