]> git.tdb.fi Git - libs/gl.git/blob - mesh_export.py
Add script for exporting meshes from Blender
[libs/gl.git] / mesh_export.py
1 #!BPY
2 # $Id$
3
4 """
5 Name: 'MSP GL Mesh (.mesh)...'
6 Blender: 244
7 Group: 'Export'
8 """
9
10 import sys
11 import Blender
12
13 class Exporter:
14         def __init__(self, fn):
15                 self.filename=fn
16                 if fn==None:
17                         self.out_file=sys.stdout
18                 else:
19                         self.out_file=file(fn, "w")
20
21         def export(self):
22                 scene=Blender.Scene.GetCurrent()
23
24                 obj=scene.getActiveObject()
25                 if obj.getType()!="Mesh":
26                         raise Exception, "Can only export Mesh data"
27
28                 mesh=obj.getData(mesh=True)
29
30                 self.out_file.write("vertices NORMAL3,VERTEX3\n{\n")
31                 for v in mesh.verts:
32                         self.out_file.write("\tnormal3 %g %g %g;\n"%tuple(v.no))
33                         self.out_file.write("\tvertex3 %g %g %g;\n"%tuple(v.co))
34                 self.out_file.write("};\n")
35                 self.out_file.write("batch TRIANGLES\n{\n")
36                 for f in mesh.faces:
37                         for i in range(2, len(f.verts)):
38                                 self.out_file.write("\tindices %u %u %u;\n"%(f.verts[0].index, f.verts[i-1].index, f.verts[i].index))
39                 self.out_file.write("};\n")
40
41 class FrontEnd:
42         def run(self):
43                 #self.export(None)
44                 Blender.Window.FileSelector(self.export, "Export MSP GL mesh", Blender.sys.makename(ext='.mesh'))
45         
46         def export(self, fn):
47                 exp=Exporter(fn)
48                 exp.export()
49
50 if __name__=="__main__":
51         fe=FrontEnd()
52         fe.run()