From 18189cf376f7a0a18544df552f1fe8e905d87e38 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 25 Apr 2023 02:46:55 +0100 Subject: Set vertex normals from AssImp data if available --- assetFactory/assimp.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'assetFactory') diff --git a/assetFactory/assimp.cpp b/assetFactory/assimp.cpp index 840c5a9..74b1c54 100644 --- a/assetFactory/assimp.cpp +++ b/assetFactory/assimp.cpp @@ -59,9 +59,15 @@ public: void addMesh(CreatedFaces & faces, ModelFactoryMesh & mesh, const aiMesh * amesh) const { - const auto vhs = AIRANGE(amesh, Vertices) * [&mesh](auto && v) { - return mesh.add_vertex(*v); - }; + mesh.normalsProvidedProperty = amesh->HasNormals(); + const auto vhs = AIRANGE(amesh, Vertices) * + [&mesh, normals = amesh->HasNormals() ? amesh->mNormals : nullptr](auto && v) mutable { + const auto vh = mesh.add_vertex(*v); + if (normals) { + mesh.set_normal(vh, **(normals++)); + } + return vh; + }; const auto & m = scene->mMaterials[amesh->mMaterialIndex]->GetName(); GLuint material {}; -- cgit v1.2.3