5 Name: 'MSP GL Mesh (.mesh)...'
15 def __init__(self, me):
20 def __getattr__(self, attr):
21 return getattr(self._medge, attr)
23 def check_smooth(self, limit):
24 if len(self.faces)!=2:
27 d=Blender.Mathutils.DotVecs(self.faces[0].no, self.faces[1].no)
28 if (d>limit and self.faces[0].smooth and self.faces[1].smooth) or d>0.999:
31 def other_face(self, f):
32 if f.index==self.faces[0].index:
33 if len(self.faces)>=2:
42 def __init__(self, mv):
43 if mv.__class__==Vertex:
48 def __getattr__(self, attr):
49 return getattr(self._mvert, attr)
53 def __init__(self, mf):
55 self.smooth_group=None
57 self.verts=[v for v in mf.verts]
59 def __getattr__(self, attr):
60 return getattr(self._mface, attr)
68 def find_vertices(self):
71 for i in range(len(f.verts)):
73 if v.index not in vert_map:
81 f.verts[i]=vert_map[v.index]
85 def __init__(self, fn):
88 self.out_file=sys.stdout
90 self.out_file=file(fn, "w")
92 def find_smooth_group(self, face, sg):
101 if f2 and not f2.smooth_group:
107 scene=Blender.Scene.GetCurrent()
109 obj=scene.getActiveObject()
110 if obj.getType()!="Mesh":
111 raise Exception, "Can only export Mesh data"
113 mesh=obj.getData(mesh=True)
115 faces=[Face(f) for f in mesh.faces]
117 edges=dict([(e.key, Edge(e)) for e in mesh.edges])
119 for e in f.edge_keys:
120 edges[e].faces.append(f)
121 f.edges.append(edges[e])
123 smooth_limit=math.cos(mesh.degr*math.pi/180)
124 for e in edges.itervalues():
125 e.check_smooth(smooth_limit)
129 if not f.smooth_group:
131 smooth_groups.append(sg)
132 self.find_smooth_group(f, sg)
135 for sg in smooth_groups:
141 self.out_file.write("vertices NORMAL3_VERTEX3\n{\n")
143 self.out_file.write("\tnormal3 %g %g %g;\n"%tuple(v.no))
144 self.out_file.write("\tvertex3 %g %g %g;\n"%tuple(v.co))
145 self.out_file.write("};\n")
146 self.out_file.write("batch TRIANGLES\n{\n")
148 for i in range(2, len(f.verts)):
149 self.out_file.write("\tindices %u %u %u;\n"%(f.verts[0].index, f.verts[i-1].index, f.verts[i].index))
150 self.out_file.write("};\n")
156 Blender.Window.FileSelector(self.export, "Export MSP GL mesh", Blender.sys.makename(ext='.mesh'))
158 def export(self, fn):
163 if __name__=="__main__":