2 "name": "meshio. (.pmd)(.mqo)",
6 "location": "File > Import-Export",
7 "description": "Import-Export PMD/MQO meshes",
9 "url": "http://meshio.sourceforge.jp/",
11 "support": 'COMMUNITY',
12 "category": "Import-Export"
15 # To support reload properly, try to access a package var, if it's there, reload everything
18 if "import_pmd" in locals():
19 imp.reload(import_pmd)
20 if "export_pmd" in locals():
21 imp.reload(export_pmd)
25 from bpy.props import StringProperty, FloatProperty, BoolProperty
26 from io_utils import ImportHelper, ExportHelper
27 from . import bl25 as bl
33 class ImportPmd(bpy.types.Operator, ImportHelper):
34 '''Import from PMD file format (.pmd)'''
35 bl_idname = "import_scene.mmd_pmd"
36 bl_label = 'Import PMD'
39 filter_glob = StringProperty(default="*.pmd", options={'HIDDEN'})
41 def execute(self, context):
42 from . import import_pmd
43 bl.initialize('pmd_import', context.scene)
44 import_pmd._execute(**self.as_keywords(
45 ignore=("filter_glob",)))
49 def menu_pmd_import(self, context):
50 self.layout.operator(ImportPmd.bl_idname,
51 text="MikuMikuDance model (.pmd)",
59 class ExportPMD(bpy.types.Operator, ExportHelper):
60 '''Export to PMD file format (.pmd)'''
61 bl_idname = "export_scene.mmd_pmd"
62 bl_label = 'Export PMD'
65 filter_glob = StringProperty(default="*.pmd", options={'HIDDEN'})
67 use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
69 def execute(self, context):
70 from . import export_pmd
71 bl.initialize('pmd_export', context.scene)
72 export_pmd._execute(**self.as_keywords(
73 ignore=("check_existing", "filter_glob", "use_selection")))
77 def menu_pmd_export(self, context):
78 default_path=bpy.data.filepath.replace(".blend", ".pmd")
81 text="Miku Miku Dance Model(.pmd)",
83 ).filepath=default_path
89 class ImportMQO(bpy.types.Operator, ImportHelper):
90 '''Import from MQO file format (.mqo)'''
91 bl_idname = "import_scene.metasequioa_mqo"
92 bl_label = 'Import MQO'
95 filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
97 scale = bpy.props.FloatProperty(
99 description="Scale the MQO by this value",
100 min=0.0001, max=1000000.0,
101 soft_min=0.001, soft_max=100.0, default=0.1)
103 def execute(self, context):
104 from . import import_mqo
105 bl.initialize('mqo_import', context.scene)
106 import_mqo._execute(**self.as_keywords(
107 ignore=("filter_glob",)))
111 def menu_mqo_import(self, context):
112 self.layout.operator(
114 text="Metasequoia (.mqo)",
122 class ExportMQO(bpy.types.Operator, ExportHelper):
123 '''Save a Metasequoia MQO file.'''
124 bl_idname = "export_scene.metasequioa_mqo"
125 bl_label = 'Export MQO'
127 filename_ext = ".mqo"
128 filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
130 use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
132 scale = bpy.props.FloatProperty(
134 description="Scale the MQO by this value",
135 min=0.0001, max=1000000.0,
136 soft_min=0.001, soft_max=100.0, default=10.0)
138 apply_modifier = bpy.props.BoolProperty(
139 name="ApplyModifier",
140 description="Would apply modifiers",
143 def execute(self, context):
144 from . import export_mqo
145 export_mqo._execute(**self.as_keywords(
146 ignore=("check_existing", "filter_glob", "use_selection")))
149 def menu_mqo_export(self, context):
150 default_path=bpy.data.filepath.replace(".blend", ".mqo")
151 self.layout.operator(
153 text="Metasequoia (.mqo)",
155 ).filepath=default_path
162 bpy.utils.register_module(__name__)
163 bpy.types.INFO_MT_file_import.append(menu_pmd_import)
164 bpy.types.INFO_MT_file_export.append(menu_pmd_export)
165 bpy.types.INFO_MT_file_import.append(menu_mqo_import)
166 bpy.types.INFO_MT_file_export.append(menu_mqo_export)
169 bpy.utils.unregister_module(__name__)
170 bpy.types.INFO_MT_file_import.remove(menu_pmd_import)
171 bpy.types.INFO_MT_file_export.remove(menu_pmd_export)
172 bpy.types.INFO_MT_file_import.remove(menu_mqo_import)
173 bpy.types.INFO_MT_file_export.remove(menu_mqo_export)
175 if __name__ == "__main__":