added a -texturepath option to drawstuff
[ode.git] / tools / ode_convex_export.py
blobc2263e07841286b286c6ecc58e1008afb4fcdac7
1 #!BPY
2 """
3 Name: 'ODE Convex...'
4 Blender: 244
5 Group: 'Export'
6 Tooltip: 'Export to Open Dynamics.'
7 """
8 __author__ = "Rodrigo Hernandez"
9 __url__ = ("http://www.ode.org")
10 __version__ = "0.1"
11 __bpydoc__ = """\
12 ODE Convex Exporter
13 This script Exports a Blender scene as a series of ODE Convex Geom data stored in a C header file.
14 """
15 import Blender
16 import bpy
17 #import struct
19 def WriteMesh(file,ob):
20 mesh = ob.getData(mesh=1)
21 # Write Point Count
22 file.write("unsigned int %s_pointcount = %d;\n" % (ob.getName(),len(mesh.verts)))
23 # Write Plane Count
24 file.write("unsigned int %s_planecount = %d;\n" % (ob.getName(),len(mesh.faces)))
25 # Write Points
26 file.write("dReal %s_points[%d]={\n" % (ob.getName(),(len(mesh.verts)*3)))
27 for vert in mesh.verts:
28 if vert.index==(len(mesh.verts)-1):
29 file.write("%f,%f,%f\n};\n" % (vert.co[0],vert.co[1],vert.co[2]))
30 else:
31 file.write("%f,%f,%f,\n" % (vert.co[0],vert.co[1],vert.co[2]))
32 # Write Polygons
33 file.write("unsigned int %s_polygons[]={\n" % ob.getName())
34 for face in mesh.faces:
35 file.write("%d," % len(face.verts))
36 for vert in face.verts:
37 file.write("%d," % vert.index)
38 if face.index==(len(mesh.faces)-1):
39 file.write("\n};\n");
40 else:
41 file.write("\n");
42 # Write Planes
43 file.write("dReal %s_planes[]={\n" % ob.getName())
44 for face in mesh.faces:
45 # d calculated separatelly for code readability
46 d = face.no[0]*face.verts[0].co[0]+face.no[1]*face.verts[0].co[1]+face.no[2]*face.verts[0].co[2]
47 file.write("%f,%f,%f,%f,\n" % (face.no[0],face.no[1],face.no[2],d))
48 file.write("};\n");
50 # Entry Point
51 sce = bpy.data.scenes.active
52 in_editmode = Blender.Window.EditMode()
53 if in_editmode: Blender.Window.EditMode(0)
54 file = open("convex.h",mode='wt')
55 for ob in sce.objects:
56 if ob.getType()=='Mesh':
57 WriteMesh(file,ob)
58 file.close()
59 if in_editmode:
60 Blender.Window.EditMode(1)
61 print "ODE Export Done"