OSDN Git Service

fix blender plugin packaging
[meshio/pymeshio.git] / pymeshio / converter.py
index 0f4b85c..66f4ecf 100644 (file)
@@ -266,18 +266,19 @@ def pmd_to_pmx(src):
     # bones
     def get_panel(m):
         return 1
-    base=src.morphs[0]
-    assert(base.name==b"base")
-    dst.morphs=[
-            pmx.Morph(
-                name=m.name.decode('cp932'),
-                english_name=m.english_name.decode('cp932'),
-                panel=get_panel(m),
-                morph_type=1,
-                offsets=[pmx.VerexMorphOffset(base.indices[i], pos)
-                    for i, pos in zip(m.indices, m.pos_list)]
-                )
-            for i, m in enumerate(src.morphs) if m.name!=b"base"]
+    if len(src.morphs)>0:
+        base=src.morphs[0]
+        assert(base.name==b"base")
+        dst.morphs=[
+                pmx.Morph(
+                    name=m.name.decode('cp932'),
+                    english_name=m.english_name.decode('cp932'),
+                    panel=get_panel(m),
+                    morph_type=1,
+                    offsets=[pmx.VertexMorphOffset(base.indices[i], pos)
+                        for i, pos in zip(m.indices, m.pos_list)]
+                    )
+                for i, m in enumerate(src.morphs) if m.name!=b"base"]
     # display_slots
     dst.display_slots=[
             pmx.DisplaySlot(u('Root'), u('Root'), 1),
@@ -297,7 +298,8 @@ def pmd_to_pmx(src):
                 no_collision_group=r.no_collision_group,
                 shape_type=r.shape_type,
                 shape_size=r.shape_size,
-                shape_position=r.shape_position,
+                shape_position=(r.shape_position+src.bones[0].pos if r.bone_index==-1 
+                    else r.shape_position+src.bones[r.bone_index].pos),
                 shape_rotation=r.shape_rotation,
                 mass=r.mass,
                 linear_damping=r.linear_damping,