Advertisement
Guest User

__init__.py

a guest
Apr 6th, 2014
629
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.07 KB | None | 0 0
  1. import os
  2. import bpy
  3.  
  4. bl_info = {
  5.     "name":         "PSX",
  6.     "author":       "TheDukeOfZill",
  7.     "blender":      (2,6,9),
  8.     "version":      (0,0,1),
  9.     "location":     "File > Import-Export",
  10.     "description":  "Export psx data format",
  11.     "category":     "Import-Export"
  12. }
  13.        
  14. import bpy
  15. from bpy_extras.io_utils import ExportHelper
  16.  
  17. class ExportMyFormat(bpy.types.Operator, ExportHelper):
  18.     bl_idname       = "export_psx.c";
  19.     bl_label        = "PSX compatible format exporter";
  20.     bl_options      = {'PRESET'};
  21.     filename_ext    = ".c";
  22.    
  23.     def execute(self, context):
  24.         scale = 20
  25.         f = open(os.path.normpath(self.filepath),"w+")
  26.         for m in bpy.data.meshes:
  27.  
  28.             f.write("SVECTOR "+"model"+m.name+"_mesh[] = {\n")
  29.             for i in range(len(m.vertices)):
  30.                 v = m.vertices[i].co
  31.                 f.write("\t{"+str(v.x*scale)+","+str(v.y*scale)+","+str(v.z*scale)+"}")
  32.                 if i != len(m.vertices) - 1:
  33.                     f.write(",")
  34.                 f.write("\n")
  35.             f.write("};\n\n")
  36.  
  37.             f.write("SVECTOR "+"model"+m.name+"_normal[] = {\n")
  38.             for i in range(len(m.polygons)):
  39.                 poly = m.polygons[i]
  40.                 f.write("\t"+str(poly.normal.x)+","+str(poly.normal.y)+","+str(poly.normal.z)+",0")
  41.                 if i != len(m.polygons) - 1:
  42.                     f.write(",")
  43.                 f.write("\n")
  44.             f.write("};\n\n")
  45.  
  46.             f.write("CVECTOR "+"model"+m.name+"_color[] = {\n")
  47.             for i in range(len(m.polygons)):
  48.                 colors = m.vertex_colors["Col"].data
  49.                 f.write("\t"+str(int(colors[i*3].color.r*255))+","+str(int(colors[i*3].color.g*255))+","+str(int(colors[i*3].color.b*255))+", 0")
  50.                 if i != len(m.polygons) - 1:
  51.                     f.write(",")
  52.                 f.write("\n")
  53.             f.write("};\n\n")
  54.  
  55.             f.write("int "+"model"+m.name+"_index[] = {\n")
  56.             for i in range(len(m.polygons)):
  57.                 poly = m.polygons[i]
  58.                 f.write("\t"+str(poly.vertices[0])+","+str(poly.vertices[1])+","+str(poly.vertices[2]))
  59.                 if i != len(m.polygons) - 1:
  60.                     f.write(",")
  61.                 f.write("\n")
  62.             f.write("};\n\n")
  63.  
  64.            
  65.             f.write("TMESH "+"model"+m.name+" = {\n")
  66.             f.write("\t"+"model"+m.name+"_mesh,\n")
  67.             f.write("\t"+"model"+m.name+"_normal,\n")
  68.             f.write("\t0,\n")
  69.             f.write("\t"+"model"+m.name+"_color,\n")
  70.             f.write("\t"+str(len(m.polygons))+"\n")
  71.             f.write("};\n")
  72.         f.close()
  73.         return {'FINISHED'};
  74.  
  75. def menu_func(self, context):
  76.     self.layout.operator(ExportMyFormat.bl_idname, text="PSX Format(.c)");
  77.  
  78. def register():
  79.     bpy.utils.register_module(__name__);
  80.     bpy.types.INFO_MT_file_export.append(menu_func);
  81.    
  82. def unregister():
  83.     bpy.utils.unregister_module(__name__);
  84.     bpy.types.INFO_MT_file_export.remove(menu_func);
  85.  
  86. if __name__ == "__main__":
  87.     register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement