OSDN Git Service

fix blender plugin packaging
[meshio/pymeshio.git] / blender26-meshio / exporter / __init__.py
1 # coding: utf-8
2 """
3 Blenderのメッシュをワンスキンメッシュ化する
4 """
5 from .. import bl
6 from . import oneskinmesh
7 from . import bonebuilder
8
9
10 class ObjectNode(object):
11     '''
12     Objectの木構造構築
13     '''
14     __slots__=['o', 'children']
15     def __init__(self, o):
16         self.o=o
17         self.children=[]
18
19
20 class Exporter(object):
21     '''
22     Blenderから情報収集する
23     '''
24     __slots__=[
25             'oneSkinMesh',
26             'skeleton',
27             'root',
28             ]
29     def setup(self):
30         # scene内のオブジェクトの木構造を構築する
31         object_node_map={}
32         for o in bl.object.each():
33             object_node_map[o]=ObjectNode(o)
34         for o in bl.object.each():
35             node=object_node_map[o]
36             if node.o.parent:
37                 object_node_map[node.o.parent].children.append(node)
38         self.root=object_node_map[bl.object.getActive()]
39
40         # ワンスキンメッシュを作る
41         self.oneSkinMesh=oneskinmesh.OneSkinMesh()
42         self.oneSkinMesh.build(self.root)
43         bl.message(self.oneSkinMesh)
44         if len(self.oneSkinMesh.morphList)==0:
45             # create emtpy skin
46             self.oneSkinMesh.createEmptyBasicSkin()
47
48         # skeleton
49         self.skeleton=bonebuilder.BoneBuilder()
50         self.skeleton.build(self.oneSkinMesh.armatureObj)
51