X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mspgl%2Fexport_mesh.py;h=18ae856a927ce8f28b70a45c51ab4ed5b9cfda00;hb=820d8ff86b911f1119b8cde03839687176b9b1ee;hp=c1dd2ac09b488cd87e5e856b7a46ebdedf10b42d;hpb=912ae952489699769be43f90d4478263461964a4;p=libs%2Fgl.git diff --git a/blender/io_mspgl/export_mesh.py b/blender/io_mspgl/export_mesh.py index c1dd2ac0..18ae856a 100644 --- a/blender/io_mspgl/export_mesh.py +++ b/blender/io_mspgl/export_mesh.py @@ -206,7 +206,7 @@ class MeshExporter: from .mesh import Mesh from .util import Progress - progress = Progress() + progress = Progress(context) progress.set_task("Preparing", 0.0, 0.0) mesh = None @@ -243,13 +243,20 @@ class MeshExporter: mesh.generate_material_uv() texunits = [] - if mesh.uv_layers and self.export_uv!="NONE": + force_unit0 = False + if mesh.uv_layers and (self.export_uv!="NONE" or self.material_tex): # Figure out which UV layers to export - if self.export_uv=="UNIT0": - if mesh.uv_layers[0].unit==0: - texunits = [0] - else: + if self.export_uv=="ALL": texunits = range(len(mesh.uv_layers)) + elif self.material_tex: + # The material UV layer is always the last one + texunits = [len(mesh.uv_layers)-1] + force_unit0 = True + else: + for i, u in enumerate(mesh.uv_layers): + if u.unit==0: + texunits = [i] + break texunits = [(i, mesh.uv_layers[i]) for i in texunits] texunits = [u for u in texunits if not u[1].hidden] @@ -285,7 +292,7 @@ class MeshExporter: fmt = ["NORMAL3"] if texunits: for i, u in texunits: - if u.unit==0: + if u.unit==0 or force_unit0: fmt.append("TEXCOORD2") else: fmt.append("TEXCOORD2_%d"%u.unit) @@ -296,7 +303,7 @@ class MeshExporter: fmt.append("VERTEX3") out_file.begin("vertices", *fmt) normal = None - uvs = [None]*len(texunits) + uvs = [None]*(max(u[0] for u in texunits)+1) tan = None bino = None group = None @@ -306,7 +313,7 @@ class MeshExporter: normal = v.normal for i, u in texunits: if v.uvs[i]!=uvs[i]: - if u.unit==0: + if u.unit==0 or force_unit0: out_file.write("texcoord2", *v.uvs[i]) else: out_file.write("multitexcoord2", u.unit, *v.uvs[i])