1. ## Lighting objects

Hi,
I am at a point where I am lighting objects now and I noticed that if you creat one light source(diffuse, ambient, position), and you draw two different cubes, one using the command glutSolidCube, and the other using GL_QUADS, and rotate both of them the lighting have very different effects. the one with glutSolidCube reacts fine to the light, but the one with GL_QUADS gets dark once it rotates a certain amount, then lights up again, and it recures with every full rotation. can somebody explain this.
thanks.
same results with nehes lighting tutorial

2. ## Re: Lighting objects

You need to build vertex normals in order to perform lighting! They are specified with glNormal*(*) and tell opengl in which direction the vertex is "pointing". For a cube, you will want flat shading, which means that the normal for every of the 4 vertices of the quad are the same, which will get you sharp edges. You can get the normal with a crossproduct of two adjacent edges of the quad. Note that the crossproduct is a right handed system, and that the vectors given to opengl must have the length one.

3. ## Re: Lighting objects

thanks for you help, I got it working now. here is what i did:

frontface
glNormal3f(0,0,1)

backface
glNormal3f(0,0,-1)

topface
glNormal3f(0,1,0)

bottomface
glNormal3f(0,-1,0)

leftface
glNormal3f(-1,0,0);

rightface
glNormal3f(1,0,0);

this is the first time doing normals in openGL, is normal just a vector that is perpendicular and pointed in the front direction of a plane? when I did a search, there is a lot( alot is not a word ) of talk of calculating normals, why calculated them if you can tell by looking at the plane? is there something more to this?

4. ## Re: Lighting objects

Yes, there are basically two different important types of normals. Face normals, and vertex normals. It is not always obvious what a vertex normal is, so you calculate them using the face normals and connectivity info.

5. ## Re: Lighting objects

can you please give me an example of a vertex normal and explain its applications??

6. ## Re: Lighting objects

When lighting with plane normals, you will always be able to distinguish the faces (think of a sphere for this example).
Now, in opengl you can average the normals in a certain vertex. So you have calculated the lighting per vertex. Then opengl interpolates the resulting vertex color over the face. Thus, you have a "smooth" looking sphere which you couldn't get with a normal per face. You will still be able to see the edges at the outline of the sphere though...