diff --git a/modules/asset_loader/src/vkcv/asset/asset_loader.cpp b/modules/asset_loader/src/vkcv/asset/asset_loader.cpp
index 1fdb693226a4308f93b6458bf6a5d85a1de1edff..87b2860a734c7abfad6a8d43c8369fe476b6a557 100644
--- a/modules/asset_loader/src/vkcv/asset/asset_loader.cpp
+++ b/modules/asset_loader/src/vkcv/asset/asset_loader.cpp
@@ -330,13 +330,13 @@ int loadScene(const std::string &path, Scene &scene){
     std::vector<Sampler> samplers;
     std::vector<Mesh> meshes;
     std::vector<VertexGroup> vertexGroups;
-    std::vector<int> vertexGroupsIndex;
     int groupCount = 0;
 
     Mesh mesh = {};
 
 
     for(int i = 0; i < sceneObjects.meshes.size(); i++){
+        std::vector<int> vertexGroupsIndices;
         fx::gltf::Mesh const &objectMesh = sceneObjects.meshes[i];
 
         for(int j = 0; j < objectMesh.primitives.size(); j++){
@@ -440,12 +440,12 @@ int loadScene(const std::string &path, Scene &scene){
                 static_cast<uint8_t>(objectPrimitive.material)
             });
 
+            vertexGroupsIndices.push_back(groupCount);
             groupCount++;
-            vertexGroupsIndex.push_back(groupCount);
         }
 
         mesh.name = sceneObjects.meshes[i].name;
-        mesh.vertexGroups = vertexGroupsIndex;
+        mesh.vertexGroups = vertexGroupsIndices;
 
         meshes.push_back(mesh);
     }
diff --git a/projects/first_scene/src/main.cpp b/projects/first_scene/src/main.cpp
index 7cabe46a22dc155d0489dead37e30e07b7db8d94..c867cdf1071cf470601001a77ff090bdf709876c 100644
--- a/projects/first_scene/src/main.cpp
+++ b/projects/first_scene/src/main.cpp
@@ -180,11 +180,14 @@ int main(int argc, const char** argv) {
 	}
 
 	std::vector<glm::mat4> modelMatrices;
-	modelMatrices.clear();
-	for(int m = 0; m < scene.meshes.size(); m++){
-	    modelMatrices.push_back(arrayTo4x4Matrix(scene.meshes[m].modelMatrix));
+	modelMatrices.resize(scene.vertexGroups.size(), glm::mat4(1.f));
+	for (const auto &mesh : scene.meshes) {
+		const glm::mat4 m = arrayTo4x4Matrix(mesh.modelMatrix);
+		for (const auto &vertexGroupIndex : mesh.vertexGroups) {
+			modelMatrices[vertexGroupIndex] = m;
+		}
 	}
-    std::vector<glm::mat4> mvp;
+	std::vector<glm::mat4> mvp;
 
 	auto start = std::chrono::system_clock::now();
 	while (window.isWindowOpen()) {