From 75805642b5035b95d52a63cb263b635803af8a95 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 26 Oct 2024 13:13:47 +0300 Subject: [PATCH] feat: VEC3 automatic normals generation --- src/coders/vec3.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/coders/vec3.cpp b/src/coders/vec3.cpp index 61a08082..a6c68927 100644 --- a/src/coders/vec3.cpp +++ b/src/coders/vec3.cpp @@ -102,6 +102,13 @@ static model::Mesh build_mesh( } if (normals) { vertex.normal = normals[indices[i * attrsCount + normalsIndex]]; + } else if (coords) { + // Flat normal calculation + int idx = (i / 3) * 3; + auto a = coords[indices[idx * attrsCount + coordsIndex]]; + auto b = coords[indices[(idx + 1) * attrsCount + coordsIndex]]; + auto c = coords[indices[(idx + 2) * attrsCount + coordsIndex]]; + vertex.normal = glm::normalize(glm::cross(b - a, c - a)); } vertices.push_back(std::move(vertex)); }