PDA

View Full Version : how to calculate normal for each vertex?



caesar5
02-29-2004, 11:09 PM
what formula can i use to calculate normal for vertex??
i use this parametric formula for my object:
x=1.6f*(cos(0.5*angle1)*cos(0.5*angle1)*cos(0.5*an gle1));
y=1.6f*(cos(angle2)*sin(0.5*angle1)*cos(angle2)*si n(0.5*angle1)*cos(angle2)*sin(0.5*angle1));
z=1.6f*sin(angle2)*sin(0.5*angle1);

can anyone pls give me example how to use parametric function in opengl??i put it under double loop and i failed to get good shape. i just started studying com graphics this week.

[This message has been edited by caesar5 (edited 03-01-2004).]

[This message has been edited by caesar5 (edited 03-01-2004).]

Dodger
02-29-2004, 11:55 PM
Iterate through all triangles of your mesh. For each vertex of each triangle, take the cross product of the two edges the vertex is part of and store it associated to the vertex (you'll get several normals for each vertex, because every vertex can be part of several faces). Add all normals for each vertex. Normalize. Voila http://www.opengl.org/discussion_boards/ubb/wink.gif

chemdog
03-02-2004, 06:04 PM
You can use auto-normals and evaluators to render your geometry.

OR you can take cross-products of the partial derivatives to find the normal.

analox
03-03-2004, 07:58 AM
By the way, could U show me how to render the parametric object in OpenGL in step-by-step instructions as i'm a newbie for this one http://www.opengl.org/discussion_boards/ubb/frown.gif

santyhamer
03-03-2004, 08:05 AM
Just take the vertex normal from your favourite 3D program ( 3dsmax, maya, lw.. ) in your exporter

4TheKing
03-30-2004, 05:54 PM
Take a look at the NeHe Tutorials (http://nehe.gamedev.net/) , they will be invaluable if you're learning to code in OpenGL. (Or spend some $$ on a book like I did)

Zeno
04-01-2004, 09:59 PM
C'mon guys, he's got an analytic formula here!

Caesar, you should take advantage of this fact and use the gradient operator to find your normals (ask if you need more info on this). You don't need to pre-tesselate or use any adjacency information then, and the normals will probably end up being smoother.

Don't forget to normalize the result :)