How to compute surface normals for a general vertex/face geometry: (1) For each face, compute a faceNormal as follows: - Set faceNormal to [0,0,0] - For every triple A,B,C of successive vertices around the face: faceNormal += crossProduct(C-B, B-A) (2) For each vertex: - Sum together faceNormals of all faces containing this vertex - Normalize this sum to unit length Note: The cross product of two vectors U and V is the vector: [ Uy * Vz - Uz * Vy , Uz * Vx - Ux * Vz , Ux * Vy - Uy * Vx ]