OSDN Git Service

implement tail bone.
authorousttrue <ousttrue@gmail.com>
Thu, 20 May 2010 00:44:07 +0000 (09:44 +0900)
committerousttrue <ousttrue@gmail.com>
Thu, 20 May 2010 00:44:07 +0000 (09:44 +0900)
swig/blender24/pmd_export.py
swig/englishmap.py
swig/setup.py

index 5cbf3b7..979f924 100644 (file)
@@ -297,12 +297,12 @@ class OneSkinMesh(object):
 
 
 class Bone(object):
-    def __init__(self, bone):
-        self.name=bone.name
-        pos=bone.head['ARMATURESPACE']
+    def __init__(self, name, pos):
+        self.name=name
         self.pos=[pos.x, pos.y, pos.z]
         self.parent_index=None
         self.tail_index=None
+        self.type=0
 
     def __str__(self):
         return "<Bone %s>" % self.name
@@ -319,16 +319,23 @@ class BoneBuilder(object):
             for b in armature.bones.values():
                 if not b.parent:
                     # root bone
-                    bone=Bone(b)
+                    bone=Bone(b.name, b.head['ARMATURESPACE'])
                     self.addBone(bone)
                     self.getBone(bone, b)
 
     def getBone(self, parent, b):
         if len(b.children)==0:
+            # 末端の非表示ボーン
+            bone=Bone(b.name+'_tail', b.tail['ARMATURESPACE'])
+            bone.type=7
+            self.addBone(bone)
+            assert(parent)
+            bone.parent_index=parent.index
+            parent.tail_index=bone.index
             return
 
         for i, c in enumerate(b.children):
-            bone=Bone(c)
+            bone=Bone(c.name, c.head['ARMATURESPACE'])
             self.addBone(bone)
             if parent:
                 bone.parent_index=parent.index
@@ -372,9 +379,9 @@ class PmdExporter(object):
         for b in builder.bones:
             bone=io.addBone()
             bone.name=b.name
-            bone.type=0
+            bone.type=b.type
             bone.parent_index=b.parent_index if b.parent_index!=None else 0xFFFF
-            bone.tail_index=b.tail_index if b.tail_index!=None else 0xFFFF
+            bone.tail_index=b.tail_index if b.tail_index!=None else 0
             # ToDo
             bone.ik_index=0xFFFF
             # convert right-handed z-up to left-handed y-up
index 393ebfe..e710eda 100644 (file)
@@ -192,11 +192,12 @@ def getEnglishSkinName(name):
             return k
 
 if sys.version_info[0]<3:
-    print('convert boneMap and skinMap to unicode')
+    print 'convert boneMap and skinMap to unicode...',
     # python2.x
     # unicodeに変換
     for k in boneMap.keys():
         boneMap[k]=boneMap[k].decode('utf-8')
     for k in skinMap.keys():
         skinMap[k]=skinMap[k].decode('utf-8')
+    print('done')        
 
index 9519bd1..d15e2f3 100644 (file)
@@ -39,6 +39,8 @@ if sys.version_info[0]<3:
                  'blender24/mqo_import.py', 
                  'blender24/pmd_import.py', 
                  'blender24/vmd_import.py',
+                 'blender24/mqo_export.py',
+                 'blender24/pmd_export.py',
                  ])
              ]
 
@@ -57,7 +59,7 @@ else:
 for i in range(len(ext_modules)+1):
     try:
         setup(name="meshio",
-                version='0.1',
+                version='0.2',
                 description='polygon mesh io utilities',
                 author='ousttrue',
                 author_email='ousttrue@gmail.com',