From c5fc66ee58f2c60f2d226868bb1cf5b91badaf53 Mon Sep 17 00:00:00 2001 From: sanine Date: Sat, 1 Oct 2022 20:59:36 -0500 Subject: add ode --- libs/ode-0.16.1/tools/ode_convex_export.py | 60 ++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 libs/ode-0.16.1/tools/ode_convex_export.py (limited to 'libs/ode-0.16.1/tools/ode_convex_export.py') diff --git a/libs/ode-0.16.1/tools/ode_convex_export.py b/libs/ode-0.16.1/tools/ode_convex_export.py new file mode 100644 index 0000000..17375b5 --- /dev/null +++ b/libs/ode-0.16.1/tools/ode_convex_export.py @@ -0,0 +1,60 @@ +#!BPY +""" +Name: 'ODE Convex...' +Blender: 244 +Group: 'Export' +Tooltip: 'Export to Open Dynamics.' +""" +__author__ = "Rodrigo Hernandez" +__url__ = ("http://www.ode.org") +__version__ = "0.1" +__bpydoc__ = """\ +ODE Convex Exporter +This script Exports a Blender scene as a series of ODE Convex Geom data stored in a C header file. +""" +import Blender +import bpy + +def WriteMesh(file,ob): + mesh = ob.getData(mesh=1) + # Write Point Count + file.write("unsigned int %s_pointcount = %d;\n" % (ob.getName(),len(mesh.verts))) + # Write Plane Count + file.write("unsigned int %s_planecount = %d;\n" % (ob.getName(),len(mesh.faces))) + # Write Points + file.write("dReal %s_points[%d]={\n" % (ob.getName(),(len(mesh.verts)*3))) + for vert in mesh.verts: + if vert.index==(len(mesh.verts)-1): + file.write("%f,%f,%f\n};\n" % (vert.co[0],vert.co[1],vert.co[2])) + else: + file.write("%f,%f,%f,\n" % (vert.co[0],vert.co[1],vert.co[2])) + # Write Polygons + file.write("unsigned int %s_polygons[]={\n" % ob.getName()) + for face in mesh.faces: + file.write("%d," % len(face.verts)) + for vert in face.verts: + file.write("%d," % vert.index) + if face.index==(len(mesh.faces)-1): + file.write("\n};\n"); + else: + file.write("\n"); + # Write Planes + file.write("dReal %s_planes[]={\n" % ob.getName()) + for face in mesh.faces: + # d calculated separatelly for code readability + 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] + file.write("%f,%f,%f,%f,\n" % (face.no[0],face.no[1],face.no[2],d)) + file.write("};\n"); + +# Entry Point +sce = bpy.data.scenes.active +in_editmode = Blender.Window.EditMode() +if in_editmode: Blender.Window.EditMode(0) +file = open("convex.h",mode='wt') +for ob in sce.objects: + if ob.getType()=='Mesh': + WriteMesh(file,ob) +file.close() +if in_editmode: + Blender.Window.EditMode(1) +print "ODE Export Done" \ No newline at end of file -- cgit v1.2.1