From 44fc9b88ead11e7325bd193e4c853f8b10e9b175 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Mon, 5 May 2014 22:58:13 +0300 Subject: [PATCH] Add an option to export a separate mesh file when exporting an object --- blender/io_mspgl/__init__.py | 9 +++++++++ blender/io_mspgl/export_object.py | 16 +++++++++++++--- blender/io_mspgl/outfile.py | 1 + 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/blender/io_mspgl/__init__.py b/blender/io_mspgl/__init__.py index 9b49da8f..7426685f 100644 --- a/blender/io_mspgl/__init__.py +++ b/blender/io_mspgl/__init__.py @@ -102,17 +102,26 @@ class ExportMspGLObject(bpy.types.Operator, ExportMspGLMeshBase): material_tex = bpy.props.BoolProperty(name="Material texture", description="Generate a texture based on material colors", default=False) srgb_colors = bpy.props.BoolProperty(name="sRGB colors", description="Export material colors as sRGB instead of linear", default=True) + separate_mesh = bpy.props.BoolProperty(name="Separate mesh", description="Write mesh data into a separate file", default=False) + def create_exporter(self): from .export_object import ObjectExporter return ObjectExporter() def draw(self, context): super().draw(context) + col = self.texturing_col col.prop(self, "textures") col.prop(self, "material_tex") col.prop(self, "srgb_colors") + self.layout.separator(); + + col = self.layout.column() + col.label("Files") + col.prop(self, "separate_mesh") + class ExportMspGLArmature(bpy.types.Operator, ExportMspGLBase): bl_idname = "export.mspgl_armature" bl_label = "Export Msp GL armature" diff --git a/blender/io_mspgl/export_object.py b/blender/io_mspgl/export_object.py index 12b15b63..8065c09a 100644 --- a/blender/io_mspgl/export_object.py +++ b/blender/io_mspgl/export_object.py @@ -1,3 +1,5 @@ +import os + def linear_to_srgb(l): if l<0.0031308: return 12.92*l @@ -10,6 +12,7 @@ class ObjectExporter: self.material_tex = False self.srgb_colors = True self.textures = "REF" + self.separate_mesh = False def export(self, context, out_file): from .outfile import open_output @@ -20,9 +23,16 @@ class ObjectExporter: for k, v in self.__dict__.items(): setattr(mesh_export, k, v) - out_file.begin("mesh") - mesh = mesh_export.export(context, out_file) - out_file.end() + if self.separate_mesh: + path, base = os.path.split(out_file.filename) + base, ext = os.path.splitext(base) + mesh_out = open_output(os.path.join(path, base+".mesh")) + mesh = mesh_export.export(context, mesh_out) + out_file.write("mesh", "\""+base+".mesh\"") + else: + out_file.begin("mesh") + mesh = mesh_export.export(context, out_file) + out_file.end() out_file.begin("technique") out_file.begin("pass", '""') diff --git a/blender/io_mspgl/outfile.py b/blender/io_mspgl/outfile.py index 5d5cb8ea..2ccaa1b0 100644 --- a/blender/io_mspgl/outfile.py +++ b/blender/io_mspgl/outfile.py @@ -2,6 +2,7 @@ import sys class OutFile: def __init__(self, fn): + self.filename = fn if fn==None: self.file = sys.stdout else: -- 2.45.2