[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3979] contrib/py/scripts/addons/ io_scene_ms3d: fix: importer: wrong property names; exporter: wrong value type + handling of not existing actions

Alexander Nussbaumer alpha-beta-release at gmx.net
Sun Nov 18 18:16:30 CET 2012


Revision: 3979
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3979
Author:   beta-tester
Date:     2012-11-18 17:16:29 +0000 (Sun, 18 Nov 2012)
Log Message:
-----------
fix: importer: wrong property names; exporter: wrong value type + handling of not existing actions

Modified Paths:
--------------
    contrib/py/scripts/addons/io_scene_ms3d/__init__.py
    contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py
    contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py
    contrib/py/scripts/addons/io_scene_ms3d/ms3d_spec.py

Modified: contrib/py/scripts/addons/io_scene_ms3d/__init__.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/__init__.py	2012-11-18 01:53:32 UTC (rev 3978)
+++ contrib/py/scripts/addons/io_scene_ms3d/__init__.py	2012-11-18 17:16:29 UTC (rev 3979)
@@ -23,7 +23,7 @@
         'description': "Import / Export MilkShape3D MS3D files"\
                 " (conform with v1.8.4)",
         'author': "Alexander Nussbaumer",
-        'version': (0, 5, 0, 0),
+        'version': (0, 5, 0, 1),
         'blender': (2, 6, 3, 0),
         'location': "File > Import & File > Export",
         #'warning': "",

Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py	2012-11-18 01:53:32 UTC (rev 3978)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_export.py	2012-11-18 17:16:29 UTC (rev 3979)
@@ -317,6 +317,8 @@
                         if blender_vertex_group_ids:
                             temp_weight = 0
                             count = 0
+                            bone_ids = []
+                            weights = []
                             for blender_index, blender_weight in blender_vertex_group_ids.items():
                                 ms3d_joint = blender_to_ms3d_bones.get(
                                         blender_mesh_object.vertex_groups[blender_index].name)
@@ -325,20 +327,27 @@
                                         ms3d_vertex.bone_id = ms3d_joint.__index
                                         temp_weight = blender_weight
                                     elif count == 1:
-                                        ms3d_vertex._vertex_ex_object.bone_ids[0] = ms3d_joint.__index
-                                        ms3d_vertex._vertex_ex_object.weights[0] = temp_weight * 100
-                                        ms3d_vertex._vertex_ex_object.weights[1] = blender_weight * 100
+                                        bone_ids.append(ms3d_joint.__index)
+                                        weights.append(int(temp_weight * 100.0))
+                                        weights.append(int(blender_weight * 100.0))
                                     elif count == 2:
-                                        ms3d_vertex._vertex_ex_object.bone_ids[1] = ms3d_joint.__index
-                                        ms3d_vertex._vertex_ex_object.weights[2] = blender_weight * 100
+                                        bone_ids.append(ms3d_joint.__index)
+                                        weights.append(int(blender_weight * 100.0))
                                     #elif count == 3:
-                                    #    ms3d_vertex._vertex_ex_object.bone_ids[2] = ms3d_joint.__index
+                                    #    bone_ids.append(ms3d_joint.__index)
 
                                 # only first three weights will be supported
                                 count+= 1
                                 if count > 3:
                                     break
 
+                            while len(bone_ids) < 3:
+                                bone_ids.append(Ms3dSpec.DEFAULT_VERTEX_BONE_ID)
+                            while len(weights) < 3:
+                                weights.append(0)
+                            ms3d_vertex._vertex_ex_object._bone_ids = tuple(bone_ids)
+                            ms3d_vertex._vertex_ex_object._weights = tuple(weights)
+
                     ms3d_model._vertices.append(ms3d_vertex)
                     blender_to_ms3d_vertices[bmv] = ms3d_vertex
 
@@ -443,7 +452,8 @@
             for blender_modifier in blender_mesh_object.modifiers:
                 if blender_modifier.type == 'ARMATURE' and blender_modifier.object.pose:
                     blender_bones = blender_modifier.object.data.bones
-                    blender_action = blender_modifier.object.animation_data.action
+                    if blender_modifier.object.animation_data:
+                        blender_action = blender_modifier.object.animation_data.action
                     blender_pose_bones = blender_modifier.object.pose.bones
                     break
 
@@ -496,14 +506,15 @@
             frames_loc = set()
             frames_rot = set()
 
-            for fcurve in blender_action.fcurves:
-                if fcurve.data_path.endswith(".location"):
-                    frames = frames_loc
-                elif fcurve.data_path.endswith(".rotation_euler") or fcurve.data_path.endswith(".rotation_quaternion"):
-                    frames = frames_rot
+            if blender_action:
+                for fcurve in blender_action.fcurves:
+                    if fcurve.data_path.endswith(".location"):
+                        frames = frames_loc
+                    elif fcurve.data_path.endswith(".rotation_euler") or fcurve.data_path.endswith(".rotation_quaternion"):
+                        frames = frames_rot
 
-                for keyframe_point in fcurve.keyframe_points:
-                    frames.add(keyframe_point.co.to_tuple(0)[0])
+                    for keyframe_point in fcurve.keyframe_points:
+                        frames.add(keyframe_point.co.to_tuple(0)[0])
 
             frames = set(frames_loc)
             frames = frames.union(frames_rot)

Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py	2012-11-18 01:53:32 UTC (rev 3978)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py	2012-11-18 17:16:29 UTC (rev 3979)
@@ -629,24 +629,24 @@
                         or ms3d_vertex.vertex_ex_object.bone_ids[2] != Ms3dSpec.NONE_VERTEX_BONE_ID \
                         ):
                     ms3d_vertex_group_ids_weights = []
-                    ms3d_vertex_group_ids_weights.appent(
+                    ms3d_vertex_group_ids_weights.append(
                             (ms3d_vertex.bone_id,
-                            (ms3d_vertex.vertex_ex_object.weight[0] % 100) / 100.0))
+                            float(ms3d_vertex.vertex_ex_object.weights[0] % 100) / 100.0))
                     if ms3d_vertex.vertex_ex_object.bone_ids[0] != Ms3dSpec.NONE_VERTEX_BONE_ID:
-                        ms3d_vertex_group_ids_weights.appent(
+                        ms3d_vertex_group_ids_weights.append(
                                 (ms3d_vertex.vertex_ex_object.bone_ids[0],
-                                (ms3d_vertex.vertex_ex_object.weight[1] % 100) / 100.0))
+                                float(ms3d_vertex.vertex_ex_object.weights[1] % 100) / 100.0))
                     if ms3d_vertex.vertex_ex_object.bone_ids[1] != Ms3dSpec.NONE_VERTEX_BONE_ID:
-                        ms3d_vertex_group_ids_weights.appent(
+                        ms3d_vertex_group_ids_weights.append(
                                 (ms3d_vertex.vertex_ex_object.bone_ids[1],
-                                (ms3d_vertex.vertex_ex_object.weight[2] % 100) / 100.0))
+                                float(ms3d_vertex.vertex_ex_object.weights[2] % 100) / 100.0))
                     if ms3d_vertex.vertex_ex_object.bone_ids[2] != Ms3dSpec.NONE_VERTEX_BONE_ID:
-                        ms3d_vertex_group_ids_weights.appent(
+                        ms3d_vertex_group_ids_weights.append(
                                 (ms3d_vertex.vertex_ex_object.bone_ids[2],
                                 1.0 -
-                                ((ms3d_vertex.vertex_ex_object.weight[0] % 100)
-                                + (ms3d_vertex.vertex_ex_object.weight[1] % 100)
-                                + (ms3d_vertex.vertex_ex_object.weight[2] % 100)) / 100.0
+                                float((ms3d_vertex.vertex_ex_object.weights[0] % 100)
+                                + (ms3d_vertex.vertex_ex_object.weights[1] % 100)
+                                + (ms3d_vertex.vertex_ex_object.weights[2] % 100)) / 100.0
                                 ))
                 else:
                     ms3d_vertex_group_ids_weights = [(ms3d_vertex.bone_id, 1.0), ]

Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_spec.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_spec.py	2012-11-18 01:53:32 UTC (rev 3978)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_spec.py	2012-11-18 17:16:29 UTC (rev 3979)
@@ -1788,6 +1788,7 @@
             Ms3dIo.raise_on_eof(file)
 
             self.sub_version_vertex_extra = Ms3dIo.read_dword(file)
+            _progress.add('SUB_VERSION_VERTEX_EXTRA')
             if self.sub_version_vertex_extra > 0:
                 length = len(self.joints)
                 for i in range(_number_vertices):
@@ -1808,6 +1809,7 @@
             Ms3dIo.raise_on_eof(file)
 
             self.sub_version_joint_extra = Ms3dIo.read_dword(file)
+            _progress.add('SUB_VERSION_JOINT_EXTRA')
             if self.sub_version_joint_extra > 0:
                 for i in range(_number_joints):
                     self.joints[i]._joint_ex_object = Ms3dJointEx().read(file)
@@ -1816,6 +1818,7 @@
             Ms3dIo.raise_on_eof(file)
 
             self.sub_version_model_extra = Ms3dIo.read_dword(file)
+            _progress.add('SUB_VERSION_MODEL_EXTRA')
             if self.sub_version_model_extra > 0:
                 self._model_ex_object.read(file)
             _progress.add('MODEL_EXTRA')



More information about the Bf-extensions-cvs mailing list