Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'io_scene_gltf2/blender/imp/gltf2_blender_node.py')
-rwxr-xr-xio_scene_gltf2/blender/imp/gltf2_blender_node.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_node.py b/io_scene_gltf2/blender/imp/gltf2_blender_node.py
index 8c732949..f6759224 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_node.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_node.py
@@ -207,6 +207,9 @@ class BlenderNode():
if pymesh.shapekey_names:
BlenderNode.set_morph_weights(gltf, pynode, obj)
+ if pynode.skin is not None:
+ BlenderNode.setup_skinning(gltf, pynode, obj)
+
return obj
@staticmethod
@@ -216,3 +219,20 @@ class BlenderNode():
for i, weight in enumerate(weights):
if pymesh.shapekey_names[i] is not None:
obj.data.shape_keys.key_blocks[pymesh.shapekey_names[i]].value = weight
+
+ @staticmethod
+ def setup_skinning(gltf, pynode, obj):
+ pyskin = gltf.data.skins[pynode.skin]
+
+ # Armature/bones should have already been created.
+
+ # Create vertex groups for each joint
+ for node_idx in pyskin.joints:
+ bone = gltf.vnodes[node_idx]
+ obj.vertex_groups.new(name=bone.blender_bone_name)
+
+ # Create an Armature modifier
+ first_bone = gltf.vnodes[pyskin.joints[0]]
+ arma = gltf.vnodes[first_bone.bone_arma]
+ mod = obj.modifiers.new(name="Armature", type="ARMATURE")
+ mod.object = arma.blender_object