14 normals[tri.v0] += face_normal;
15 normals[tri.v1] += face_normal;
16 normals[tri.v2] += face_normal;
19 for (
auto &n : normals) {
20 float len = glm::length(n);
24 n =
Vec3(0.0f, 0.0f, 1.0f);
void compute_vertex_normals(const Mesh &mesh, std::vector< Vec3 > &normals)
Compute per-vertex normals by averaging adjacent face normals.
glm::vec3 Vec3
3-component floating-point vector (xyz).
Vec3 compute_face_normal(const Vec3 &v0, const Vec3 &v1, const Vec3 &v2)
Compute the unit-length normal vector of a triangle face.
Compute per-vertex surface normals for lighting.
A 3D triangle mesh using an indexed face set representation.
std::vector< Vec3 > vertices
3D vertex positions.
std::vector< Triangle > triangles
Triangle index triplets.