OSDN Git Service

fix for 2.57b
[meshio/pymeshio.git] / blender25-meshio / export_pmd.py
index 8fb08a5..af4fc6e 100644 (file)
@@ -7,7 +7,7 @@
  Tooltip: 'Export PMD file for MikuMikuDance.'
 """
 __author__= ["ousttrue"]
-__version__= "2.4"
+__version__= "2.5"
 __url__=()
 __bpydoc__="""
 pmd Importer
@@ -29,6 +29,7 @@ This script exports a pmd model.
 2.2 20101005: update for Blender2.54.
 2.3 20101228: update for Blender2.55.
 2.4 20110429: update for Blender2.57b.
+2.5 20110522: implement RigidBody and Constraint.
 """
 
 bl_addon_info = {
@@ -474,12 +475,23 @@ class OneSkinMesh(object):
         copyMesh, copyObj=bl.object.duplicate(obj)
         if len(copyMesh.vertices)>0:
             # apply transform
-            copyObj.scale=obj.scale
-            bpy.ops.object.transform_apply(scale=True)
-            copyObj.rotation_euler=obj.rotation_euler
-            bpy.ops.object.transform_apply(rotation=True)
-            copyObj.location=obj.location
-            bpy.ops.object.transform_apply(location=True)
+            try:
+                # svn 36722
+                copyObj.scale=obj.scale
+                bpy.ops.object.transform_apply(scale=True)
+                copyObj.rotation_euler=obj.rotation_euler
+                bpy.ops.object.transform_apply(rotation=True)
+                copyObj.location=obj.location
+                bpy.ops.object.transform_apply(location=True)
+            except AttributeError as e:
+                # 2.57b
+                copyObj.scale=obj.scale
+                bpy.ops.object.scale_apply()
+                copyObj.rotation_euler=obj.rotation_euler
+                bpy.ops.object.rotation_apply()
+                copyObj.location=obj.location
+                bpy.ops.object.location_apply()
+
             # apply modifier
             for m in [m for m in copyObj.modifiers]:
                 if m.type=='SOLIDFY':
@@ -533,7 +545,7 @@ class OneSkinMesh(object):
 
                 break
         assert(basis)
-        print(basis.name, len(baseMorph.offsets))
+        #print(basis.name, len(baseMorph.offsets))
 
         if len(baseMorph.offsets)==0:
             return
@@ -543,7 +555,7 @@ class OneSkinMesh(object):
             if b.name==BASE_SHAPE_NAME:
                 continue
 
-            print(b.name)
+            #print(b.name)
             morph=self.__getOrCreateMorph(b.name, 4)
             used=set()
             for index, src, dst in zip(
@@ -1047,12 +1059,12 @@ class PmdExporter(object):
             for i in range(10):
                 t=bl.material.getTexture(toonMaterial, i)
                 if t:
-                    io.toon_textures[i]=pmd.encode_string(t.name)
+                    io.toon_textures[i]="%s" % t.name
                 else:
-                    io.toon_textures[i]=pmd.encode_string("toon%02d.bmp\n" % i)
+                    io.toon_textures[i]="toon%02d.bmp" % (i+1)
         else:
             for i in range(10):
-                io.toon_textures[i]=pmd.encode_string("toon%02d.bmp\n" % i)
+                io.toon_textures[i]="toon%02d.bmp" % (i+1)
 
         # rigid body
         rigidNameMap={}