OSDN Git Service

fix bone.
[meshio/meshio.git] / swig / blender / pmd_export.py
index c0e52cb..433cf5b 100644 (file)
@@ -373,14 +373,14 @@ class OneSkinMesh(object):
         if bl.objectHasShapeKey(obj):
             # base
             for b in bl.objectShapeKeys(obj):
-                if b.name=='Basis':
+                if b.name==BASE_SHAPE_NAME:
                     print(b.name)
                     baseMorph=self.__getOrCreateMorph('base', 0)
                     relativeIndex=0
                     basis=b
 
                     for index in bl.meshVertexGroup(obj, MMD_SHAPE_GROUP_NAME):
-                        v=b.data[index]
+                        v=bl.shapeKeyGet(b, index)
                         pos=[v[0], v[1], v[2]]
                         indices=self.vertexArray.getMappedIndices(index)
                         for i in indices:
@@ -395,24 +395,23 @@ class OneSkinMesh(object):
                 baseMorph.sort()
 
                 # shape keys
-                vg=obj.getData(mesh=True).getVertsFromGroup(
-                            MMD_SHAPE_GROUP_NAME)
-                for b in obj.getData(mesh=True).key.blocks:
-                    if b.name=='Basis':
+                vg=bl.meshVertexGroup(obj, MMD_SHAPE_GROUP_NAME)
+                for b in bl.objectShapeKeys(obj):
+                    if b.name==BASE_SHAPE_NAME:
                         continue
 
                     print(b.name)
                     morph=self.__getOrCreateMorph(b.name, 4)
                     for index, src, dst in zip(
                             xrange(len(blenderMesh.verts)),
-                            basis.data,
-                            b.data):
+                            bl.shapeKeys(basis),
+                            bl.shapeKeys(b)):
                         offset=[dst[0]-src[0], dst[1]-src[1], dst[2]-src[2]]
                         if index in vg:
                             indices=self.vertexArray.getMappedIndices(index)
                             for i in indices:
                                 morph.add(indexRelativeMap[i], offset)
-                    assert(len(morph.offsets)==len(baseMorph.offsets))
+                    #assert(len(morph.offsets)==len(baseMorph.offsets))
 
                 # sort skinmap
                 original=self.morphList[:]
@@ -796,9 +795,8 @@ class PmdExporter(object):
             v=englishmap.getUnicodeSkinName(m.name)
             assert(v)
             cp932=v[1].encode('cp932')
-            morph.name="%s\n" % cp932
-
-            morph.english_name="%s\n" % m.name
+            morph.setName(cp932)
+            morph.setEnglishName(m.name.encode('cp932'))
             m.type=v[2]
             morph.type=v[2]
             for index, offset in m.offsets:
@@ -828,9 +826,8 @@ class PmdExporter(object):
                 boneDisplayName.name=name.decode('utf-8').encode('cp932')
                 boneDisplayName.english_name=english
             else:
-                # ToDo
-                boneDisplayName.name=english
-                boneDisplayName.english_name=english
+                boneDisplayName.setName(name.encode('cp932'))
+                boneDisplayName.setEnglishName(english.encode('cp932'))
         boneDisplayName=createBoneDisplayName("IK\n", "IK\n")
         boneDisplayName=createBoneDisplayName("体(上)\n", "Body[u]\n")
         boneDisplayName=createBoneDisplayName("髪\n", "Hair\n")