]> git.tdb.fi Git - libs/gl.git/blobdiff - blender/io_mspgl/mesh.py
Refactor face cull settings in Blender
[libs/gl.git] / blender / io_mspgl / mesh.py
index fb568ec416fb04739ef7b49c8b2bbd0a1f9f972e..3b1c74dfbec9675403226a3435fed354ffed7ef8 100644 (file)
@@ -1,4 +1,3 @@
-import bpy
 import math
 import mathutils
 import itertools
@@ -155,7 +154,6 @@ class Mesh:
        def __init__(self, mesh):
                self.name = mesh.name
 
-               self.winding_test = mesh.winding_test
                self.smoothing = mesh.smoothing
                self.use_uv = mesh.use_uv
                self.tangent_uvtex = mesh.tangent_uvtex
@@ -181,7 +179,7 @@ class Mesh:
                if mesh.use_uv=='NONE' or not mesh.uv_layers:
                        self.uv_layers = []
                else:
-                       self.uv_layers = [UvLayer(u) for u in mesh.uv_layers]
+                       self.uv_layers = [UvLayer(u) for u in mesh.uv_layers if u.data]
 
                        # Assign texture unit numbers to UV layers that lack one
                        missing_unit = [u for u in self.uv_layers if u.unit is None]
@@ -193,7 +191,7 @@ class Mesh:
 
                        self.uv_layers = sorted(self.uv_layers, key=(lambda u: u.unit))
 
-                       if mesh.use_uv=='UNIT0':
+                       if mesh.use_uv=='UNIT0' and self.uv_layers:
                                self.uv_layers = [self.uv_layers[0]]
                                if self.uv_layers[0].unit!=0:
                                        self.uv_layers = []
@@ -708,7 +706,8 @@ class Mesh:
                # Keep track of the score and number of unused faces for each vertex
                vertex_info = [[0, len(v.faces)] for v in self.vertices]
                for vi in vertex_info:
-                       vi[0] = valence_boost_scale*(vi[1]**valence_boost_power)
+                       if vi[1]:
+                               vi[0] = valence_boost_scale*(vi[1]**valence_boost_power)
 
                face = None
                reordered_faces = []
@@ -783,6 +782,11 @@ class Mesh:
                                        v.index = len(reordered_vertices)
                                        reordered_vertices.append(v)
 
+               for v in self.vertices:
+                       if v.index<0:
+                               v.index = len(reordered_vertices)
+                               reordered_vertices.append(v)
+
                self.vertices = reordered_vertices
 
                for e in self.edges:
@@ -812,7 +816,6 @@ def create_mesh_from_object(ctx, obj, material_atlas):
                bmesh = eval_obj.to_mesh()
 
                # Object.to_mesh does not copy custom properties
-               bmesh.winding_test = o.data.winding_test
                bmesh.smoothing = o.data.smoothing
                bmesh.use_lines = o.data.use_lines
                bmesh.vertex_groups = o.data.vertex_groups