Jelajahi Sumber

Merge pull request #48310 from Blackiris/fix-create-skeleton-physical-bones-4.0

Rémi Verschelde 3 tahun lalu
induk
melakukan
600ff3a221
1 mengubah file dengan 7 tambahan dan 1 penghapusan
  1. 7 1
      editor/plugins/skeleton_3d_editor_plugin.cpp

+ 7 - 1
editor/plugins/skeleton_3d_editor_plugin.cpp

@@ -419,8 +419,14 @@ PhysicalBone3D *Skeleton3DEditor::create_physical_bone(int bone_id, int bone_chi
 	capsule_transform.basis = Basis(Vector3(1, 0, 0), Vector3(0, 0, 1), Vector3(0, -1, 0));
 	bone_shape->set_transform(capsule_transform);
 
+	/// Get an up vector not collinear with child rest origin
+	Vector3 up = Vector3(0, 1, 0);
+	if (up.cross(child_rest.origin).is_equal_approx(Vector3())) {
+		up = Vector3(0, 0, 1);
+	}
+
 	Transform3D body_transform;
-	body_transform.basis = Basis::looking_at(child_rest.origin);
+	body_transform.basis = Basis::looking_at(child_rest.origin, up);
 	body_transform.origin = body_transform.basis.xform(Vector3(0, 0, -half_height));
 
 	Transform3D joint_transform;