Archived

This topic is now archived and is closed to further replies.

taybrin

normals and lighting

Recommended Posts

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
This may be stating the obvious, but are you sure your z-buffering is enabled?

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites