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.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_node.py b/io_scene_gltf2/blender/imp/gltf2_blender_node.py
index bab22599..590a4fa5 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_node.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_node.py
@@ -134,7 +134,7 @@ class BlenderNode():
editbone.use_connect = False # TODO?
# Give the position of the bone in armature space
- arma_mat = vnode.bone_arma_mat
+ arma_mat = vnode.editbone_arma_mat
editbone.head = arma_mat @ Vector((0, 0, 0))
editbone.tail = arma_mat @ Vector((0, 1, 0))
editbone.align_roll(arma_mat @ Vector((0, 0, 1)) - editbone.head)
@@ -159,8 +159,13 @@ class BlenderNode():
vnode = gltf.vnodes[id]
pose_bone = blender_arma.pose.bones[vnode.blender_bone_name]
- # Put scale on pose bone (edit bones have no scale)
- _, _, s = vnode.trs
+ # BoneTRS = EditBone * PoseBone
+ # Set PoseBone to make BoneTRS = vnode.trs.
+ t, r, s = vnode.trs
+ et, er = vnode.editbone_trans, vnode.editbone_rot
+ pose_bone.location = er.conjugated() @ (t - et)
+ pose_bone.rotation_mode = 'QUATERNION'
+ pose_bone.rotation_quaternion = er.conjugated() @ r
pose_bone.scale = s
if isinstance(id, int):