diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-04-25 17:53:49 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-04-25 17:53:49 +0100 |
commit | ac3d38f019b9593d4dda49921c0db6c0b8c9a1a6 (patch) | |
tree | eecd6de4c49d9f775db38c5cbedc0a4db55f248e /assetFactory/factoryMesh.cpp | |
parent | Remove duplicate Tree-01-1 definition (diff) | |
parent | Clear world objects explicitly (diff) | |
download | ilt-ac3d38f019b9593d4dda49921c0db6c0b8c9a1a6.tar.bz2 ilt-ac3d38f019b9593d4dda49921c0db6c0b8c9a1a6.tar.xz ilt-ac3d38f019b9593d4dda49921c0db6c0b8c9a1a6.zip |
Merge remote-tracking branch 'origin/assimp-normals'
Diffstat (limited to 'assetFactory/factoryMesh.cpp')
-rw-r--r-- | assetFactory/factoryMesh.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/assetFactory/factoryMesh.cpp b/assetFactory/factoryMesh.cpp index f7bc7c8..784179f 100644 --- a/assetFactory/factoryMesh.cpp +++ b/assetFactory/factoryMesh.cpp @@ -13,10 +13,13 @@ FactoryMesh::createMesh() const ModelFactoryMesh mesh; use->createMesh(mesh, 1); - mesh.update_face_normals(); - mesh.update_vertex_normals(); + if (!mesh.normalsProvidedProperty) { + mesh.update_face_normals(); + mesh.update_vertex_normals(); + } for (const auto & face : mesh.faces()) { - const auto & smooth = mesh.property(mesh.smoothFaceProperty, face); + const auto & useVertexNormals + = mesh.property(mesh.smoothFaceProperty, face) || mesh.normalsProvidedProperty; const auto & colour = mesh.color(face); const auto & material = mesh.property(mesh.materialFaceProperty, face); @@ -25,8 +28,8 @@ FactoryMesh::createMesh() const const auto & vertex = mesh.to_vertex_handle(heh); const auto & textureUV = mesh.texcoord2D(heh); const auto & point = mesh.point(vertex); - const auto & normal = smooth ? mesh.property(mesh.vertex_normals_pph(), vertex) - : mesh.property(mesh.face_normals_pph(), face); + const auto & normal = useVertexNormals ? mesh.property(mesh.vertex_normals_pph(), vertex) + : mesh.property(mesh.face_normals_pph(), face); Vertex outVertex {point, textureUV, normal, colour, material}; if (const auto existingItr = std::find(vertices.rbegin(), vertices.rend(), outVertex); existingItr != vertices.rend()) { |