normals and lighting

Started by
4 comments, last by taybrin 22 years, 5 months ago
Hey everyone, I am trying to make my own cone primative, its for a class, and have all of the points for the cone defined. We have to have lighting and stuff so I have defined normals and and enabled lighting in OpenGL, but when i draw the cone the shading is off. Is there in order i have to draw my vertices in, do i have to negate my normals. I have tried all of these things and am wondering what is wrong. i do not want a solution i would like steps to a solution, as i like figuring things out on my own, but i am stuck this time . . .
"PC Load Letter, what the F*Ck's that" ~Office Space
Advertisement
What do you mean by the shading is off? Could you post a screenshot? Are you sure your normals are correct? One way to visually see your normals is tell opengl to draw a line where a normal is supposed to be (and of course have the line pointing in the same direction as the normal ) and make it only a few units long. This way you will see some lines pointing in the direction your normals are and you can tell if they are correct. Its a neat little trick.

-SirKnight
How do I post a screenshot into these messages??

When I say that the shading is off I mean that parts of the cone look somewhat normal, other parts it seems like I am seeing the inside, and still other parts it seems as though the same normal is being used the whole time even though I have calculated a different normal and set a different normal for each triangle . . .

any suggestions
"PC Load Letter, what the F*Ck's that" ~Office Space
quote:Original post by taybrin
How do I post a screenshot into these messages??

Like this:
<img src="http://site.of.image.com/imagefilename.jpg">

As for your problem, I think you have your ordering of vertices wrong. You see, you have to pass the vertices to OpenGL in a counter-clockwise order as seen from the outside:
    0   / \   <-- frontfacing triangle  /   \ 1-----2    0   / \   <-- backfacing of triangle  /   \ 2-----1


To check if this is indeed the problem you''re having, try inserting the following two lines into your OpenGL initialization code:

glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);

If all the triangles that appeared to be on the inside of the cone disappear after that change, you at least know what the problem is. To fix this however depends on how you are getting your triangles from your set of points.
Dirk =[Scarab]= Gerrits
This may be stating the obvious, but are you sure your z-buffering is enabled?
yeah i am pretty sure that the Z-buffer is on

I clear the GL_DEPTH_BUFFER_BIT each time I display and I have

glEnable(GL_DEPTH_TEST) and I toss GLUT_DEPTH to the glutInitDisplayMode() . . .

I also thought of the ordering of the vertices, I am going to go try that now . . .

thanks

taybrin
"PC Load Letter, what the F*Ck's that" ~Office Space

This topic is closed to new replies.

Advertisement