private void genNormals()
{
// For each triangle
for (int i = 0; i < nIndices; i += 3)
{
// Find the position of each corner of the triangle
Vector3 v1 = vertices[indices[i]].Position;
Vector3 v2 = vertices[indices[i + 1]].Position;
Vector3 v3 = vertices[indices[i + 2]].Position;
// Cross the vectors between the corners to get the normal
Vector3 normal = Vector3.Cross(v1 - v2, v1 - v3);
normal.Normalize();
// Add the influence of the normal to each vertex in the triangle
vertices[indices[i]].Normal += normal;
vertices[indices[i + 1]].Normal += normal;
vertices[indices[i + 2]].Normal += normal;
}
// Average the influences of the triangles touching each vertex
for (int i = 0; i < nVertices; i++)
vertices[i].Normal.Normalize();
}