[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3931] contrib/py/scripts/addons/ io_scene_ms3d: add: importer - added bone weights
Alexander Nussbaumer
alpha-beta-release at gmx.net
Mon Nov 5 19:07:56 CET 2012
Revision: 3931
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3931
Author: beta-tester
Date: 2012-11-05 18:07:54 +0000 (Mon, 05 Nov 2012)
Log Message:
-----------
add: importer - added bone weights
100% of the planned features are implemented. importer is now final.
Modified Paths:
--------------
contrib/py/scripts/addons/io_scene_ms3d/__README__.txt
contrib/py/scripts/addons/io_scene_ms3d/__init__.py
contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py
contrib/py/scripts/addons/io_scene_ms3d/ms3d_ui.py
contrib/py/scripts/addons/io_scene_ms3d/ms3d_utils.py
Modified: contrib/py/scripts/addons/io_scene_ms3d/__README__.txt
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/__README__.txt 2012-11-05 05:59:33 UTC (rev 3930)
+++ contrib/py/scripts/addons/io_scene_ms3d/__README__.txt 2012-11-05 18:07:54 UTC (rev 3931)
@@ -161,8 +161,8 @@
.flags: 0% (value only)
.vertex_ex
Ms3dVertexEx
- .bone_ids: 0%
- .weights: 0%
+ .bone_ids: 100%
+ .weights: 100%
.extra: 0%
.triangles
Ms3dTriangle
Modified: contrib/py/scripts/addons/io_scene_ms3d/__init__.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/__init__.py 2012-11-05 05:59:33 UTC (rev 3930)
+++ contrib/py/scripts/addons/io_scene_ms3d/__init__.py 2012-11-05 18:07:54 UTC (rev 3931)
@@ -23,10 +23,10 @@
'description': "Import / Export MilkShape3D MS3D files"\
" (conform with v1.8.4)",
'author': "Alexander Nussbaumer",
- 'version': (0, 4, 8, 2),
+ 'version': (0, 4, 8, 3),
'blender': (2, 6, 3, 0),
'location': "File > Import & File > Export",
- 'warning': "[2012-11-04] exporter is working, but is incomplete",
+ 'warning': "[2012-11-05] exporter is working, but is incomplete",
'wiki_url': "http://wiki.blender.org/index.php/Extensions:2.6/Py/"\
"Scripts/Import-Export/MilkShape3D_MS3D",
'tracker_url': "http://projects.blender.org/tracker/index.php"\
Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py 2012-11-05 05:59:33 UTC (rev 3930)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_import.py 2012-11-05 18:07:54 UTC (rev 3931)
@@ -79,6 +79,7 @@
enable_edit_mode,
pre_setup_environment,
post_setup_environment,
+ get_edge_split_modifier_add_if,
)
from io_scene_ms3d.ms3d_ui import (
Ms3dUi,
@@ -255,9 +256,6 @@
ms3d_model.name + ".m")
blender_mesh.ms3d.name = ms3d_model.name
- blender_mesh.show_edge_seams = True
- blender_mesh.show_edge_sharp = True
-
ms3d_comment = ms3d_model.comment_object
if ms3d_comment is not None:
blender_mesh.ms3d.comment = ms3d_comment.comment
@@ -278,11 +276,7 @@
##########################
# blender stuff:
# create edge split modifire, to make sharp edges visible
- blender_modifier = blender_mesh_object.modifiers.new(
- "ms3d_smoothing_groups", type='EDGE_SPLIT')
- blender_modifier.show_expanded = False
- blender_modifier.use_edge_angle = False
- blender_modifier.use_edge_sharp = True
+ blender_modifier = get_edge_split_modifier_add_if(blender_mesh_object)
##########################
# blender stuff:
@@ -620,22 +614,57 @@
for ms3d_vertex_index, ms3d_vertex in enumerate(ms3d_model.vertices):
# prepare for later use for blender vertex group
if ms3d_vertex.bone_id != Ms3dSpec.NONE_VERTEX_BONE_ID:
- blender_vertex_group = ms3d_to_blender_vertex_groups.get(
- ms3d_vertex.bone_id)
- if blender_vertex_group is None:
- ms3d_to_blender_vertex_groups[ms3d_vertex.bone_id] \
- = blender_vertex_group = []
- blender_vertex_group.append(ms3d_vertex_index)
+ if ms3d_vertex.vertex_ex_object \
+ and ( \
+ ms3d_vertex.vertex_ex_object.bone_ids[0] != Ms3dSpec.NONE_VERTEX_BONE_ID \
+ or ms3d_vertex.vertex_ex_object.bone_ids[1] != Ms3dSpec.NONE_VERTEX_BONE_ID \
+ 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.bone_id,
+ (ms3d_vertex.vertex_ex_object.weight[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.vertex_ex_object.bone_ids[0],
+ (ms3d_vertex.vertex_ex_object.weight[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.vertex_ex_object.bone_ids[1],
+ (ms3d_vertex.vertex_ex_object.weight[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.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
+ ))
+ else:
+ ms3d_vertex_group_ids_weights = [(ms3d_vertex.bone_id, 1.0), ]
+ for ms3d_vertex_group_id_weight in ms3d_vertex_group_ids_weights:
+ ms3d_vertex_group_id = ms3d_vertex_group_id_weight[0]
+ blender_vertex_weight = ms3d_vertex_group_id_weight[1]
+ blender_vertex_group = ms3d_to_blender_vertex_groups.get(
+ ms3d_vertex_group_id)
+ if blender_vertex_group is None:
+ ms3d_to_blender_vertex_groups[ms3d_vertex_group_id] \
+ = blender_vertex_group = []
+ blender_vertex_group.append((ms3d_vertex_index, blender_vertex_weight))
+
##########################
# blender stuff:
# create all vertex groups to be used for bones
- for ms3d_bone_id, blender_vertex_index_list \
+ for ms3d_bone_id, blender_vertex_index_weight_list \
in ms3d_to_blender_vertex_groups.items():
ms3d_name = ms3d_model.joints[ms3d_bone_id].name
blender_vertex_group = blender_mesh_object.vertex_groups.new(
ms3d_name)
- blender_vertex_group.add(blender_vertex_index_list, 1.0, 'REPLACE')
+ for blender_vertex_id_weight in blender_vertex_index_weight_list:
+ blender_vertex_index = blender_vertex_id_weight[0]
+ blender_vertex_weight = blender_vertex_id_weight[1]
+ blender_vertex_group.add((blender_vertex_index, ), blender_vertex_weight, 'ADD')
blender_modifier = blender_mesh_object.modifiers.new(
ms3d_armature_name, type='ARMATURE')
Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_ui.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_ui.py 2012-11-05 05:59:33 UTC (rev 3930)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_ui.py 2012-11-05 18:07:54 UTC (rev 3931)
@@ -58,6 +58,7 @@
)
from io_scene_ms3d.ms3d_utils import (
enable_edit_mode,
+ get_edge_split_modifier_add_if,
)
#from io_scene_ms3d.ms3d_import import ( Ms3dImporter, )
#from io_scene_ms3d.ms3d_export import ( Ms3dExporter, )
@@ -683,15 +684,7 @@
layer_smoothing_group = bm.faces.layers.int.new(
ms3d_str['OBJECT_LAYER_SMOOTHING_GROUP'])
blender_mesh_object = context.object
- blender_modifier = blender_mesh_object.modifiers.get(
- ms3d_str['OBJECT_MODIFIER_SMOOTHING_GROUP'])
- if blender_modifier is None:
- blender_modifier = blender_mesh_object.modifiers.new(
- ms3d_str['OBJECT_MODIFIER_SMOOTHING_GROUP'],
- type='EDGE_SPLIT')
- blender_modifier.show_expanded = False
- blender_modifier.use_edge_angle = False
- blender_modifier.use_edge_sharp = True
+ get_edge_split_modifier_add_if(blender_mesh_object)
blender_face_list = []
for bmf in bm.faces:
if not bmf.smooth:
Modified: contrib/py/scripts/addons/io_scene_ms3d/ms3d_utils.py
===================================================================
--- contrib/py/scripts/addons/io_scene_ms3d/ms3d_utils.py 2012-11-05 05:59:33 UTC (rev 3930)
+++ contrib/py/scripts/addons/io_scene_ms3d/ms3d_utils.py 2012-11-05 18:07:54 UTC (rev 3931)
@@ -46,8 +46,13 @@
# if it's there, reload everything
if ('bpy' in locals()):
import imp
+ if 'io_scene_ms3d.ms3d_strings' in locals():
+ imp.reload(io_scene_ms3d.ms3d_strings)
pass
else:
+ from io_scene_ms3d.ms3d_strings import (
+ ms3d_str,
+ )
pass
@@ -168,11 +173,29 @@
# restore pre operator undo state
blender_context.user_preferences.edit.use_global_undo = porter.undo
+
###############################################################################
+def get_edge_split_modifier_add_if(blender_mesh_object):
+ blender_modifier = blender_mesh_object.modifiers.get(
+ ms3d_str['OBJECT_MODIFIER_SMOOTHING_GROUP'])
+ if blender_modifier is None:
+ blender_modifier = blender_mesh_object.modifiers.new(
+ ms3d_str['OBJECT_MODIFIER_SMOOTHING_GROUP'],
+ type='EDGE_SPLIT')
+ blender_modifier.show_expanded = False
+ blender_modifier.use_edge_angle = False
+ blender_modifier.use_edge_sharp = True
+ blender_mesh_object.data.show_edge_seams = True
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list