瀏覽代碼

Orthonormalize PhysicalBone3D transforms

Aaron Franke 2 年之前
父節點
當前提交
b015fba2c8
共有 1 個文件被更改,包括 6 次插入3 次删除
  1. 6 3
      scene/3d/physics_body_3d.cpp

+ 6 - 3
scene/3d/physics_body_3d.cpp

@@ -2239,11 +2239,14 @@ void PhysicalBone3D::reset_physics_simulation_state() {
 
 
 void PhysicalBone3D::reset_to_rest_position() {
 void PhysicalBone3D::reset_to_rest_position() {
 	if (parent_skeleton) {
 	if (parent_skeleton) {
-		if (-1 == bone_id) {
-			set_global_transform(parent_skeleton->get_global_transform() * body_offset);
+		Transform3D new_transform = parent_skeleton->get_global_transform();
+		if (bone_id == -1) {
+			new_transform *= body_offset;
 		} else {
 		} else {
-			set_global_transform(parent_skeleton->get_global_transform() * parent_skeleton->get_bone_global_pose(bone_id) * body_offset);
+			new_transform *= parent_skeleton->get_bone_global_pose(bone_id) * body_offset;
 		}
 		}
+		new_transform.orthonormalize();
+		set_global_transform(new_transform);
 	}
 	}
 }
 }