OSDN Git Service

df17a8f26746727fe4de56fa4211a2506369a06e
[meshio/pymeshio.git] / meshio / __init__.py
1 bl_info = {
2     "name": "meshio. (.pmd)(.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     "url": "http://meshio.sourceforge.jp/",
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         bl.initialize('pmd_export', context.scene)
72         export_pmd._execute(**self.as_keywords(
73             ignore=("check_existing", "filter_glob", "use_selection")))
74         bl.finalize()
75         return {'FINISHED'}
76
77 def menu_pmd_export(self, context):
78     default_path=bpy.data.filepath.replace(".blend", ".pmd")
79     self.layout.operator(
80             ExportPMD.bl_idname,
81             text="Miku Miku Dance Model(.pmd)",
82             icon='PLUGIN'
83             ).filepath=default_path
84
85
86 '''
87 MQO IMPORTER
88 '''
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'
93
94     filename_ext = ".mqo"
95     filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
96
97     scale = bpy.props.FloatProperty(
98             name="Scale",
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)
102
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",)))
108         bl.finalize()
109         return {'FINISHED'}
110
111 def menu_mqo_import(self, context):
112     self.layout.operator(
113             ImportMQO.bl_idname,
114             text="Metasequoia (.mqo)",
115             icon='PLUGIN'
116             )
117
118
119 '''
120 MQO EXPORTER
121 '''
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'
126
127     filename_ext = ".mqo"
128     filter_glob = StringProperty(default="*.mqo", options={'HIDDEN'})
129
130     use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
131
132     scale = bpy.props.FloatProperty(
133             name="Scale",
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)
137
138     apply_modifier = bpy.props.BoolProperty(
139             name="ApplyModifier",
140             description="Would apply modifiers",
141             default=False)
142
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")))
147         return {'FINISHED'}
148
149 def menu_mqo_export(self, context):
150     default_path=bpy.data.filepath.replace(".blend", ".mqo")
151     self.layout.operator(
152             ExportMQO.bl_idname,
153             text="Metasequoia (.mqo)",
154             icon='PLUGIN'
155             ).filepath=default_path
156
157
158 '''
159 REGISTER
160 '''
161 def register():
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)
167
168 def unregister():
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)
174
175 if __name__ == "__main__":
176     register()
177