Ver Fonte

Fix LookAtModifier rest space rotation

Silc Lizard (Tokage) Renew há 9 meses atrás
pai
commit
08a2f0ae39
1 ficheiros alterados com 4 adições e 2 exclusões
  1. 4 2
      scene/3d/look_at_modifier_3d.cpp

+ 4 - 2
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.