diff --git a/scene/3d/look_at_modifier_3d.cpp b/scene/3d/look_at_modifier_3d.cpp index 578f6bdde91..24a9e6fec01 100644 --- a/scene/3d/look_at_modifier_3d.cpp +++ b/scene/3d/look_at_modifier_3d.cpp @@ -501,9 +501,11 @@ void LookAtModifier3D::_process_modification() { Transform3D bone_rest_space; int parent_bone = skeleton->get_bone_parent(bone); if (parent_bone < 0) { - bone_rest_space = skeleton->get_global_transform() * skeleton->get_bone_rest(bone); + bone_rest_space = skeleton->get_global_transform(); + bone_rest_space.origin += skeleton->get_bone_rest(bone).origin; } else { - bone_rest_space = skeleton->get_global_transform() * skeleton->get_bone_global_pose(parent_bone) * skeleton->get_bone_rest(bone); + bone_rest_space = skeleton->get_global_transform() * skeleton->get_bone_global_pose(parent_bone); + bone_rest_space.origin += skeleton->get_bone_rest(bone).origin; } // Calculate forward_vector and destination.