Hi, your code is nearly correct! You need to iterate on the faces,not on the normals: change the “for” to go from 0 to (triangle.Length / 3), and with increment “i += 3” to iterate triangle by triangle (as each triangle is composed of 3 indexes to 3 vertices/normals/uv etc…)
Then, for each triangle, you will want to get the average of the 3 normals using
Then, as this “average” is an approximation, you’ll need to re-normalize the result using faceNormal.Normalize().
In fact, the result will not always be correct. It depends how the normals are defined = if the object is a smooth sphere it should be ok, but it will not work with all kind of geometry (imagine a cube with half of the vertices with “smooth” normals and the other half with normals perpendicular to each faces)