From e1be0d24e3a38d931897358a96d5ddc000c153f0 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Tue, 30 Jul 2024 18:30:19 +0300 Subject: [PATCH] Deep copy vertex groups when copying vertices in the exporter If multiple vertices reference the same group data after splitting by normals, group mapping gets applied multiple times, resulting in incorrect group indices. --- blender/io_mspgl/mesh.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/blender/io_mspgl/mesh.py b/blender/io_mspgl/mesh.py index c0d9c11b..0856ef2a 100644 --- a/blender/io_mspgl/mesh.py +++ b/blender/io_mspgl/mesh.py @@ -47,9 +47,11 @@ class Vertex: if vertex.__class__==Vertex: self.uvs = vertex.uvs[:] self.tan = vertex.tan + self.groups = [VertexGroup(g) for g in vertex.groups] else: self.uvs = [] self.tan = None + self.groups = [] self.index = vertex.index self.co = mathutils.Vector(vertex.co) self.normal = mathutils.Vector(vertex.normal) @@ -57,7 +59,6 @@ class Vertex: self.flag = False self.edges = [] self.faces = [] - self.groups = vertex.groups[:] def __cmp__(self, other): if other is None: @@ -178,7 +179,7 @@ class Mesh: self.vertices = [Vertex(v) for v in mesh.vertices] if self.vertex_groups: for v in self.vertices: - v.groups = [VertexGroup(g) for g in v.groups] + v.groups = [VertexGroup(g) for g in mesh.vertices[v.index].groups] self.faces = [Face(f) for f in mesh.polygons] self.edges = [Edge(e) for e in mesh.edges] -- 2.45.2