X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mesh_mspgl%2Fmesh.py;h=f8a553530f379841a2bf49884bf71c28597d2fc2;hb=8b8361a2bb9bb377f222408ec59422bd33cfd64f;hp=e3405f9f8e055490b71bf7a4323abcfc1475c752;hpb=203ef7534bcbb98b2cddfe9a52128134e46d4133;p=libs%2Fgl.git diff --git a/blender/io_mesh_mspgl/mesh.py b/blender/io_mesh_mspgl/mesh.py index e3405f9f..f8a55353 100644 --- a/blender/io_mesh_mspgl/mesh.py +++ b/blender/io_mesh_mspgl/mesh.py @@ -41,13 +41,15 @@ class Vertex: self._mvert = mv._mvert self.normal = mv.normal self.uvs = mv.uvs[:] + self.tan = mv.tan + self.bino = mv.bino else: self._mvert = mv self.uvs = [] + self.tan = None + self.bino = None self.flag = False self.faces = [] - self.tan = None - self.bino = None def __getattr__(self, attr): return getattr(self._mvert, attr) @@ -97,6 +99,10 @@ class Line: self.flag = False +class FakeUvTex: + def __init__(self, n): + self.name = n + def uvtex_unit_number(uvtex): dot = uvtex.name.find('.') if dot!=-1 and uvtex.name[dot+1:dot+5]=="unit" and uvtex.name[dot+5:].isdigit(): @@ -179,9 +185,9 @@ class Mesh: e.check_smooth(1) def generate_material_uv(self): + self.uv_textures.append(FakeUvTex("material_tex")) for f in self.faces: - f.uv = ([(f.material_index+0.5)/len(self.materials), 0.5],)*len(f.vertices) - self.has_uv = True + f.uvs.append([((f.material_index+0.5)/len(self.materials), 0.5)]*len(f.vertices)) def split_vertices(self, find_group_func, progress, *args): groups = [] @@ -295,24 +301,18 @@ class Mesh: i = f.vertices.index(v) v.uvs = [u[i] for u in f.uvs] - def compute_tbn(self, uvtex): + def compute_tbn(self, index): if not self.uv_textures: return - uvtex_names = [u.name for u in self.uv_textures] - if uvtex in uvtex_names: - uvtex_index = uvtex_names.index(uvtex) - else: - uvtex_index = 0 - for v in self.vertices: v.tan = mathutils.Vector() v.bino = mathutils.Vector() for f in v.faces: fv = f.pivot_vertices(v) - uv0 = fv[0].uvs[uvtex_index] - uv1 = fv[1].uvs[uvtex_index] - uv2 = fv[-1].uvs[uvtex_index] + uv0 = fv[0].uvs[index] + uv1 = fv[1].uvs[index] + uv2 = fv[-1].uvs[index] du1 = uv1[0]-uv0[0] du2 = uv2[0]-uv0[0] dv1 = uv1[1]-uv0[1]