diff --git a/engine/src/loader/models/MeshSection.h b/engine/src/loader/models/MeshSection.h index c3b0625..32cfe79 100644 --- a/engine/src/loader/models/MeshSection.h +++ b/engine/src/loader/models/MeshSection.h @@ -19,6 +19,7 @@ namespace engine { std::string name; unsigned int indexOffset; // in Indizes, nicht Bytes unsigned int indexCount; + glm::vec3 centroid; std::shared_ptr material; }; diff --git a/engine/src/loader/models/ModelUploader.cpp b/engine/src/loader/models/ModelUploader.cpp index 27b5c93..bf17ff4 100644 --- a/engine/src/loader/models/ModelUploader.cpp +++ b/engine/src/loader/models/ModelUploader.cpp @@ -9,6 +9,7 @@ #include #include "Material.h" +#include "glm/vec3.hpp" #include "loader/textures/TextureUploader.h" #include "spdlog/spdlog.h" @@ -98,6 +99,12 @@ engine::Model engine::ModelUploader::uploadSections(const std::vector(localIndex)); + glm::vec3 centroidSum(0.0f); + for (size_t i = 0; i < section.vertices.size(); i += 3) { + centroidSum += glm::vec3(section.vertices[i], section.vertices[i+1], section.vertices[i+2]); + } + meshSection.centroid = centroidSum / static_cast(section.vertices.size() / 3); + vertexOffset += static_cast(section.vertices.size() / 3); meshSections.push_back(std::move(meshSection)); }