[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