I’m totally green so bare w/ me pls.
You can calculate the normal by using cross products.
p1, p2 and p3 is your three points in space. v1 is a vector from p1 to p2 v2 is a vector from p1 to p3 n is the normal calculated by using cross product, v1 x v2. v1.x = p2.x - p1.x v1.y = p2.y - p1.y v1.z = p2.z - p1.z v2.x = p3.x - p1.x v2.y = p3.y - p1.y v2.z = p3.z - p1.z n.x = (v1.y * v2.z) - (v2.y * v1.z) n.y = (v1.z * v2.x) - (v2.z * v1.x) n.z = (v1.x * v2.y) - (v2.x * v1.y)
The example above evaluates to the Face Normal, correct?
n is NOT Normalized yet, correct?
To Normalize the Face Nomal, you then sqrt(n.x^2 + n.y^2 + n.z^2), correct?
The Red Book says you need the “Vertex” Normals for lighting to work properly, via glNormal*(). I gather that in order to get the Vertex Normal of a particular Vertex you have to deal w/ all Face Normals that share said Vertex, correct?
This is where i get a little confused. I’ve read that you must average the “UnNormalized” Face Normals that share said Vertex first, THEN Normalize the averaged Face Normals to get the result glNormal*() needs to work correctly. Is this right?