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
27 from io_utils import ImportHelper, ExportHelper
29 from bpy_extras.io_utils import ImportHelper, ExportHelper
30 from . import bl25 as bl
36 class ImportPmd(bpy.types.Operator, ImportHelper):
37 '''Import from PMD file format (.pmd)'''
38 bl_idname = "import_scene.mmd_pmd"
39 bl_label = 'Import PMD'
42 filter_glob = StringProperty(default="*.pmd", options={'HIDDEN'})
44 def execute(self, context):
45 from . import import_pmd
46 bl.initialize('pmd_import', context.scene)
47 import_pmd._execute(**self.as_keywords(
48 ignore=("filter_glob",)))
52 def menu_pmd_import(self, context):
53 self.layout.operator(ImportPmd.bl_idname,
54 text="MikuMikuDance model (.pmd)",
62 class ExportPMD(bpy.types.Operator, ExportHelper):
63 '''Export to PMD file format (.pmd)'''
64 bl_idname = "export_scene.mmd_pmd"
65 bl_label = 'Export PMD'
68 filter_glob = StringProperty(default="*.pmd", options={'HIDDEN'})
70 use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
72 def execute(self, context):
73 from . import export_pmd
74 bl.initialize('pmd_export', context.scene)
75 export_pmd._execute(**self.as_keywords(
76 ignore=("check_existing", "filter_glob", "use_selection")))
80 def menu_pmd_export(self, context):
81 default_path=bpy.data.filepath.replace(".blend", ".pmd")
84 text="Miku Miku Dance Model(.pmd)",
86 ).filepath=default_path
92 class ImportMQO(bpy.types.Operator, ImportHelper):
93 '''Import from MQO file format (.mqo)'''
94 bl_idname = "import_scene.metasequioa_mqo"
95 bl_label = 'Import MQO'
98 filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
100 scale = bpy.props.FloatProperty(
102 description="Scale the MQO by this value",
103 min=0.0001, max=1000000.0,
104 soft_min=0.001, soft_max=100.0, default=0.1)
106 def execute(self, context):
107 from . import import_mqo
108 bl.initialize('mqo_import', context.scene)
109 import_mqo._execute(**self.as_keywords(
110 ignore=("filter_glob",)))
114 def menu_mqo_import(self, context):
115 self.layout.operator(
117 text="Metasequoia (.mqo)",
125 class ExportMQO(bpy.types.Operator, ExportHelper):
126 '''Save a Metasequoia MQO file.'''
127 bl_idname = "export_scene.metasequioa_mqo"
128 bl_label = 'Export MQO'
130 filename_ext = ".mqo"
131 filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
133 use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
135 scale = bpy.props.FloatProperty(
137 description="Scale the MQO by this value",
138 min=0.0001, max=1000000.0,
139 soft_min=0.001, soft_max=100.0, default=10.0)
141 apply_modifier = bpy.props.BoolProperty(
142 name="ApplyModifier",
143 description="Would apply modifiers",
146 def execute(self, context):
147 from . import export_mqo
148 export_mqo._execute(**self.as_keywords(
149 ignore=("check_existing", "filter_glob", "use_selection")))
152 def menu_mqo_export(self, context):
153 default_path=bpy.data.filepath.replace(".blend", ".mqo")
154 self.layout.operator(
156 text="Metasequoia (.mqo)",
158 ).filepath=default_path
165 bpy.utils.register_module(__name__)
166 bpy.types.INFO_MT_file_import.append(menu_pmd_import)
167 bpy.types.INFO_MT_file_export.append(menu_pmd_export)
168 bpy.types.INFO_MT_file_import.append(menu_mqo_import)
169 bpy.types.INFO_MT_file_export.append(menu_mqo_export)
172 bpy.utils.unregister_module(__name__)
173 bpy.types.INFO_MT_file_import.remove(menu_pmd_import)
174 bpy.types.INFO_MT_file_export.remove(menu_pmd_export)
175 bpy.types.INFO_MT_file_import.remove(menu_mqo_import)
176 bpy.types.INFO_MT_file_export.remove(menu_mqo_export)
178 if __name__ == "__main__":