TerraForge3D  2.3.1
3D Terrain And Landscape Generator

◆ RecalculateNormals()

void Mesh::RecalculateNormals ( )

Definition at line 163 of file Mesh.cpp.

164{
165 glm::vec3 e1;
166 glm::vec3 e2;
167 glm::vec3 no;
168 int iabc[3];
169
170 for (int i = 0; i < indexCount; i += 3)
171 {
172 iabc[0] = indices[i];
173 iabc[1] = indices[i + 1];
174 iabc[2] = indices[i + 2];
175 glm::vec4 &tmp4a = vert[iabc[0]].position;
176 glm::vec4 &tmp4b = vert[iabc[1]].position;
177 glm::vec4 &tmp4c = vert[iabc[2]].position;
178 VEC3_SUB(tmp4a, tmp4b, e1);
179 VEC3_SUB(tmp4c, tmp4b, e2);
180 VEC3_CROSS(e1, e2, no);
181 VEC3_ADD(vert[iabc[0]].normal, no, vert[iabc[0]].normal);
182 VEC3_ADD(vert[iabc[1]].normal, no, vert[iabc[1]].normal);
183 VEC3_ADD(vert[iabc[2]].normal, no, vert[iabc[2]].normal);
184 }
185
186 for (int i = 0; i < vertexCount; i++)
187 {
188 VEC3_NORMALIZE(vert[i].normal, vert[i].normal);
189 }
190}