OSDN Git Service

b49fc1d28e7fad933e0cfe7ce1976fdf1ff2c560
[meshio/pymeshio.git] / meshio / __init__.py
1 bl_info = {
2     "name": "MMD pmd format (.pmd)/ Metasequioa mqo format (.mqo)",
3     "author": "ousttrue",
4     "blender": (2, 5, 7),
5     "api": 35622,
6     "location": "File > Import-Export",
7     "description": "Import-Export PMD/MQO meshes",
8     "warning": "",
9     "wiki_url": "",
10     "tracker_url": "",
11     "support": 'COMMUNITY',
12     "category": "Import-Export"
13 }
14
15 # To support reload properly, try to access a package var, if it's there, reload everything
16 if "bpy" in locals():
17     import imp
18     if "import_pmd" in locals():
19         imp.reload(import_pmd)
20     if "export_pmd" in locals():
21         imp.reload(export_pmd)
22
23
24 import bpy
25 from bpy.props import StringProperty, FloatProperty, BoolProperty
26 from io_utils import ImportHelper, ExportHelper
27 from . import bl25 as bl
28
29
30 '''
31 PMD IMOPORTER
32 '''
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'
37
38     filename_ext = ".pmd"
39     filter_glob = StringProperty(default="*.pmd", options={'HIDDEN'})
40
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",)))
46         bl.finalize()
47         return {'FINISHED'}
48
49 def menu_pmd_import(self, context):
50     self.layout.operator(ImportPmd.bl_idname,
51             text="MikuMikuDance model (.pmd)",
52             icon='PLUGIN'
53             )
54
55
56 '''
57 PMD EXPORTER
58 '''
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'
63
64     filename_ext = ".pmd"
65     filter_glob = StringProperty(default="*.pmd", options={'HIDDEN'})
66
67     use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
68
69     def execute(self, context):
70         from . import export_pmd
71         export_pmd._execute(**self.as_keywords(
72             ignore=("check_existing", "filter_glob")))
73         return {'FINISHED'}
74
75 def menu_pmd_export(self, context):
76     default_path=bpy.data.filepath.replace(".blend", ".pmd")
77     self.layout.operator(
78             ExportPMD.bl_idname,
79             text="Miku Miku Dance Model(.pmd)",
80             icon='PLUGIN'
81             ).filepath=default_path
82
83
84 '''
85 MQO IMPORTER
86 '''
87 class ImportMQO(bpy.types.Operator, ImportHelper):
88     '''Import from MQO file format (.mqo)'''
89     bl_idname = "import_scene.metasequioa_mqo"
90     bl_label = 'Import MQO'
91
92     filename_ext = ".mqo"
93     filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
94
95     scale = bpy.props.FloatProperty(
96             name="Scale",
97             description="Scale the MQO by this value",
98             min=0.0001, max=1000000.0,
99             soft_min=0.001, soft_max=100.0, default=0.1)
100
101     def execute(self, context):
102         from . import import_mqo
103         bl.initialize('mqo_import', scene)
104         import_mqo._execute(**self.as_keywords(
105             ignore=("filter_glob",)))
106         bl.finalize()
107         return {'FINISHED'}
108
109 def menu_mqo_import(self, context):
110     self.layout.operator(
111             ImportMQO.bl_idname,
112             text="Metasequoia (.mqo)",
113             icon='PLUGIN'
114             )
115
116
117 '''
118 MQO EXPORTER
119 '''
120 class ExportMQO(bpy.types.Operator, ExportHelper):
121     '''Save a Metasequoia MQO file.'''
122     bl_idname = "export_scene.metasequioa_mqo"
123     bl_label = 'Export MQO'
124
125     filename_ext = ".mqo"
126     filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
127
128     use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
129
130     scale = bpy.props.FloatProperty(
131             name="Scale",
132             description="Scale the MQO by this value",
133             min=0.0001, max=1000000.0,
134             soft_min=0.001, soft_max=100.0, default=10.0)
135
136     apply_modifier = bpy.props.BoolProperty(
137             name="ApplyModifier",
138             description="Would apply modifiers",
139             default=False)
140
141     def execute(self, context):
142         from . import export_mqo
143         export_pmd._execute(**self.as_keywords(
144             ignore=("check_existing", "filter_glob")))
145         return {'FINISHED'}
146
147 def menu_mqo_export(self, context):
148     default_path=bpy.data.filepath.replace(".blend", ".mqo")
149     self.layout.operator(
150             ExportMQO.bl_idname,
151             text="Metasequoia (.mqo)",
152             icon='PLUGIN'
153             ).filepath=default_path
154
155
156 '''
157 REGISTER
158 '''
159 def register():
160     bpy.utils.register_module(__name__)
161     bpy.types.INFO_MT_file_import.append(menu_pmd_import)
162     bpy.types.INFO_MT_file_export.append(menu_pmd_export)
163     bpy.types.INFO_MT_file_import.append(menu_mqo_import)
164     bpy.types.INFO_MT_file_export.append(menu_mqo_export)
165
166 def unregister():
167     bpy.utils.unregister_module(__name__)
168     bpy.types.INFO_MT_file_import.remove(menu_pmd_import)
169     bpy.types.INFO_MT_file_export.remove(menu_pmd_export)
170     bpy.types.INFO_MT_file_import.remove(menu_mqo_import)
171     bpy.types.INFO_MT_file_export.remove(menu_mqo_export)
172
173 if __name__ == "__main__":
174     register()
175