OSDN Git Service

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