OSDN Git Service

fix.
[meshio/meshio.git] / swig / blender / pmd_export.py
index 433cf5b..2e8703d 100644 (file)
@@ -374,7 +374,6 @@ class OneSkinMesh(object):
             # base
             for b in bl.objectShapeKeys(obj):
                 if b.name==BASE_SHAPE_NAME:
-                    print(b.name)
                     baseMorph=self.__getOrCreateMorph('base', 0)
                     relativeIndex=0
                     basis=b
@@ -390,6 +389,7 @@ class OneSkinMesh(object):
 
                     break
             assert(basis)
+            print(basis.name, len(baseMorph.offsets))
 
             if(len(baseMorph.offsets)>0):
                 baseMorph.sort()
@@ -407,11 +407,12 @@ class OneSkinMesh(object):
                             bl.shapeKeys(basis),
                             bl.shapeKeys(b)):
                         offset=[dst[0]-src[0], dst[1]-src[1], dst[2]-src[2]]
+                        if offset[0]==0 and offset[1]==0 and offset[2]==0:
+                            continue
                         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))
 
                 # sort skinmap
                 original=self.morphList[:]
@@ -610,6 +611,7 @@ class PmdExporter(object):
         for node in object_node_map.values():
             if node.o.parent:
                 object_node_map[node.o.parent].children.append(node)
+
         # ルートを得る
         root=object_node_map[scene.objects.active]
 
@@ -717,13 +719,9 @@ class PmdExporter(object):
                 assert(i<vertexCount)
             for i in xrange(0, len(indices), 3):
                 # reverse triangle
-                io.indices.append(indices[i+2])
-                io.indices.append(indices[i+1])
                 io.indices.append(indices[i])
-
-                #io.indices.append(indices[i])
-                #io.indices.append(indices[i+1])
-                #io.indices.append(indices[i+2])
+                io.indices.append(indices[i+1])
+                io.indices.append(indices[i+2])
 
         # bones
         for b in self.builder.bones:
@@ -907,6 +905,10 @@ def getBoneDisplayGroup(bone):
 
 
 def __execute(filename, scene):
+    if not scene.objects.active:
+        print("abort. no active object.")
+        return
+
     exporter=PmdExporter()
     exporter.setup(scene)
     exporter.write(filename)